diff --git a/.editorconfig b/.editorconfig index 15d11df6..72dda289 100644 --- a/.editorconfig +++ b/.editorconfig @@ -31,8 +31,3 @@ indent_size = unset # ignore python and markdown [*.{py,md}] indent_style = unset - -# ignore parameters.md -[parameters.md] -trim_trailing_whitespace = false -indent_style = unset diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e756a668..98343750 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -16,7 +16,7 @@ If you'd like to write some code for genomic-medicine-sweden/nallo, the standard 1. Check that there isn't already an issue about your idea in the [genomic-medicine-sweden/nallo issues](https://github.com/genomic-medicine-sweden/nallo/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 [genomic-medicine-sweden/nallo repository](https://github.com/genomic-medicine-sweden/nallo) 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/). @@ -36,14 +36,14 @@ There are typically two types of tests that run: ### Lint tests -Altough this is not a `nf-core` pipeline, `nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all their pipelines must adhere to. -To enforce these and ensure that all pipelines stay in sync, they 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. +Although this is not a `nf-core` pipeline, `nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all their pipelines must adhere to. +To enforce these and ensure that all pipelines stay in sync, they 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. ### Pipeline tests -This pipeline should be set up with a minimal set of test-data. +This pipeline is set up with a minimal set of test-data. `GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully. If there are any failures then the automated tests fail. These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code. @@ -68,22 +68,23 @@ 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`. 9. Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name clean up and module plots are in the appropriate order. If applicable, add a [MultiQC](https://https://multiqc.info/) module. -10. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. +10. Update the tool references `assets/software_references.yml`. +11. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. ### Default values 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. @@ -96,7 +97,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/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index a054825b..e1156a08 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -9,46 +9,34 @@ body: description: A clear and concise description of what the bug is. validations: required: true + - type: textarea id: command_used attributes: label: Command used and terminal output - description: Steps to reproduce the behaviour. Please paste the command you used - to launch the pipeline and the output from your terminal. + description: Steps to reproduce the behaviour. Please paste the command you used to launch the pipeline and the output from your terminal. render: console - placeholder: "$ nextflow run ... - + placeholder: | + $ nextflow run ... Some output where something broke - " - type: textarea id: files attributes: label: Relevant files - description: "Please drag and drop the relevant files here. Create a `.zip` archive - if the extension is not allowed. - - Your verbose log file `.nextflow.log` is often useful _(this is a hidden file - in the directory where you launched the pipeline)_ as well as custom Nextflow - configuration files. + description: | + Please drag and drop the relevant files here. Create a `.zip` archive if the extension is not allowed. + Your verbose log file `.nextflow.log` is often useful _(this is a hidden file in the directory where you launched the pipeline)_ as well as custom Nextflow configuration files. - " - type: textarea id: system attributes: label: System information - description: "* Nextflow version _(eg. 23.04.0)_ - + description: | + * Nextflow version _(eg. 23.04.0)_ * Hardware _(eg. HPC, Desktop, Cloud)_ - * Executor _(eg. slurm, local, awsbatch)_ - - * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, - or Apptainer)_ - + * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, or Apptainer)_ * OS _(eg. CentOS Linux, macOS, Linux Mint)_ - * Version of genomic-medicine-sweden/nallo _(eg. 1.1, 1.5, 1.8.2)_ - - " diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d50d1ea0..a0f36f7c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,7 +16,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/genomic-medi - [ ] This comment contains a description of changes (with reason). - [ ] 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/genomic-medicine-sweden/nallo/tree/master/.github/CONTRIBUTING.md) -- [ ] 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/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 00000000..f2f1b4da --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,43 @@ +name: build docs +# https://github.com/nf-cmgg/structural/blob/master/.github/workflows/build-docs.yml +on: + push: + branches: + - master + - main + - dev +permissions: + contents: write +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # fetch all commits/branches + - uses: actions/setup-python@v4 + with: + python-version: 3.x + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - name: Obtain version from nextflow config + run: | + version=$(grep "version" nextflow.config | tail -1 | sed -e s'/[^=]*= //' | cut -d "'" -f 2) + [[ $version == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version + echo "pipeline_version=$pipeline_version" >> $GITHUB_ENV + - name: Setup git user + run: | + git config --global user.name "${{github.actor}}" + git config --global user.email "${{github.actor}}@users.noreply.github.com" + - uses: actions/cache@v3 + with: + key: mkdocs-material-${{ env.cache_id }} + path: .cache + restore-keys: | + mkdocs-material- + - name: Install dependencies + run: pip install mkdocs-material pymdown-extensions pillow cairosvg mike + - name: Build docs + run: | + [[ ${{ env.pipeline_version }} == "dev" ]] && mike deploy --push ${{ env.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest + - name: Set default docs + run: mike set-default --push latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe701aed..7c466c2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,9 +7,13 @@ on: pull_request: release: types: [published] + workflow_dispatch: env: NXF_ANSI_LOG: false + NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity + NXF_SINGULARITY_LIBRARYDIR: ${{ github.workspace }}/.singularity + NFTEST_VER: "0.9.2" concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" @@ -20,88 +24,55 @@ permissions: jobs: test: - name: Run pipeline with test data - # Only run on push if this is the nf-core dev branch (merged PRs) - if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'genomic-medicine-sweden/nallo') }}" - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "" - - "--preset ONT_R10 --input https://github.com/genomic-medicine-sweden/test-datasets/raw/e2266a34c14d1e0a9ef798de3cd81a76c9216fc1/testdata/samplesheet_multisample_bam_ont.csv --parallel_alignments 2 --parallel_snv 1" - NXF_VER: - - "23.04.0" - - "latest-everything" - steps: - - name: Check out pipeline code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - - - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 - with: - version: "${{ matrix.NXF_VER }}" - - - name: Disk space cleanup - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - - name: Run pipeline with test data - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} - nftest: - name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} + name: ${{ matrix.tags }} | ${{ matrix.profile }} | NF-${{ matrix.NXF_VER }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: NXF_VER: + - "24.04.2" - "latest-everything" - - "23.04.0" tags: - - "SHORT_VARIANT_CALLING" - - "SNV_ANNOTATION" - "samplesheet" - "samplesheet_multisample_bam" + - "samplesheet_multisample_ont_bam" + - "SHORT_VARIANT_CALLING" + - "SNV_ANNOTATION" + - "CALL_SVS" + - "ANNOTATE_SVS" + - "RANK_VARIANTS" + - "CALL_REPEAT_EXPANSIONS" + - "METHYLATION" profile: - "docker" steps: - name: Check out pipeline code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + with: + fetch-depth: 0 - - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + - name: Set up Nextflow + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" - uses: nf-core/setup-nf-test@v1 + with: + version: ${{ env.NFTEST_VER }} + install-pdiff: true - uses: actions/setup-python@v4 with: python-version: "3.11" architecture: "x64" - - name: Install pdiff to see diff between nf-test snapshots - run: | - python -m pip install --upgrade pip - pip install pdiff - - name: Run nf-test run: | - nf-test test --verbose --tag ${{ matrix.tags }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap - - - uses: pcolby/tap-summary@v1 - with: - path: >- - test.tap - - - name: Output log on failure - if: failure() - run: | - sudo apt install bat > /dev/null - batcat --decorations=always --color=always ${{ github.workspace }}/.nf-test/tests/*/meta/nextflow.log - - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - if: always() # always run even if the previous step fails - with: - report_paths: test.xml + nf-test test \ + --ci \ + --changed-since HEAD^ \ + --verbose \ + --tag ${{ matrix.tags }} \ + --profile "+${{ matrix.profile }}" \ + --junitxml=test.xml diff --git a/.github/workflows/ci_master.yml b/.github/workflows/ci_master.yml index 2de564cd..a2ee5d35 100644 --- a/.github/workflows/ci_master.yml +++ b/.github/workflows/ci_master.yml @@ -39,7 +39,7 @@ jobs: parameters: - "--bed=`null`" NXF_VER: - - "23.04.0" + - "24.04.2" - "latest-everything" steps: - name: Check out pipeline code diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 2d20d644..713dc3e7 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,33 +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" \ --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: ./ + 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/keep_a_changelog.yml b/.github/workflows/keep_a_changelog.yml new file mode 100644 index 00000000..952f2e54 --- /dev/null +++ b/.github/workflows/keep_a_changelog.yml @@ -0,0 +1,15 @@ +name: "Changelog Reminder" +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] + +jobs: + # Enforces the update of a changelog file on every pull request + changelog: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dangoslen/changelog-enforcer@v3 + with: + changeLogPath: "CHANGELOG.md" + skipLabels: "Skip-Changelog" diff --git a/.github/workflows/linting b/.github/workflows/linting new file mode 100644 index 00000000..e69de29b 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/template_version_comment.yml b/.github/workflows/template_version_comment.yml new file mode 100644 index 00000000..352649ae --- /dev/null +++ b/.github/workflows/template_version_comment.yml @@ -0,0 +1,45 @@ +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 2eef655b..23b0c7de 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ results/ testing/ testing* *.pyc +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 cb773092..21fc7d81 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,5 +1,7 @@ +bump_version: null lint: files_exist: + - CITATIONS.md - CODE_OF_CONDUCT.md - assets/nf-core-nallo_logo_light.png - docs/README.md @@ -9,6 +11,7 @@ lint: - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml - conf/modules.config + - conf/igenomes_ignored.config files_unchanged: - CODE_OF_CONDUCT.md - assets/nf-core-nallo_logo_light.png @@ -18,14 +21,23 @@ lint: - .github/ISSUE_TEMPLATE/bug_report.yml - .github/CONTRIBUTING.md - .prettierignore + modules_config: false multiqc_config: - report_comment nextflow_config: - manifest.name - manifest.homePage - modules_config: false -nf_core_version: 2.14.1 +nf_core_version: 3.0.2 +org_path: null repository_type: pipeline template: - prefix: genomic-medicine-sweden - skip: [] + author: Felix Lenner + description: Long-read variant calling pipeline + force: false + is_nfcore: false + name: nallo + org: genomic-medicine-sweden + outdir: . + skip_features: [] + version: 0.4.0dev +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 547dbbe9..e4b0fd26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,19 +3,214 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v0.3.2 - [2024-09-20] +## 0.4.0 - [2025-01-15] + +### `Added` + +- [#345](https://github.com/genomic-medicine-sweden/nallo/pull/345) - Added first version of a metro map +- [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Added nf-test to call_svs +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Added sample name to sniffles2 VCF +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Added (hidden) `params.extra__options` for the test profile to modkit, vep, paraphase and hifiasm +- [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Added missing SNV and PED file to output documentation +- [#363](https://github.com/genomic-medicine-sweden/nallo/pull/363) - Added Zenodo link +- [#366](https://github.com/genomic-medicine-sweden/nallo/pull/366) - Added sorting of samples when creating PED files, so the output is always the same +- [#367](https://github.com/genomic-medicine-sweden/nallo/pull/367) - Added Severus as the default SV caller, together with a `--sv_caller` parameter to choose caller +- [#371](https://github.com/genomic-medicine-sweden/nallo/pull/371) - Added `FOUND_IN=caller` tags to SV output +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added longphase as the default phaser +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Added single-sample tbi output to the short variant calling subworkflow +- [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Added a new `--minimap2_read_mapping_preset` parameter +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Added `FOUND_IN=hificnv` tags to CNV calling output +- [#408](https://github.com/genomic-medicine-sweden/nallo/pull/408) - Added a new subworkflow to annotate SVs +- [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Added `FOUND_IN=deepvariant` tags to SNV calling output +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Added a check for unique input filenames for each sample +- [#419](https://github.com/genomic-medicine-sweden/nallo/pull/419) - Added support for SV filtering using input BED file ([#348](https://github.com/genomic-medicine-sweden/nallo/issues/348)) +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Added nf-test to CNV calling +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Added SVDB to merge CNV calling results +- [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages +- [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages +- [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants +- [#445](https://github.com/genomic-medicine-sweden/nallo/pull/445) - Added FOUND_IN tag and nf-test to rank variants +- [#446](https://github.com/genomic-medicine-sweden/nallo/pull/446) - Added the vcfstatsreport from DeepVariant to snv calling +- [#450](https://github.com/genomic-medicine-sweden/nallo/pull/450) - Added ranking of SVs (and CNVs) +- [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added support for running methylation subworkflow without phasing +- [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Added nf-test to methylation +- [#491](https://github.com/genomic-medicine-sweden/nallo/pull/491) - Added a changelog reminder action +- [#496](https://github.com/genomic-medicine-sweden/nallo/pull/496) - Added a subworkflow to filter variants + +### `Changed` + +- [#344](https://github.com/genomic-medicine-sweden/nallo/pull/344) - Changed version to 0.4.0dev +- [#346](https://github.com/genomic-medicine-sweden/nallo/pull/346) - Renamed structural_variant_calling to call_svs +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Changed from using sniffles to bcftools to merge SV calls from multiple samples +- [#351](https://github.com/genomic-medicine-sweden/nallo/pull/351) - Renamed the structural variant output files and directories +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed fastq conversion to run only when the assembly workflow is active +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed FastQC to run on BAM files to remove concatenation of fastq files +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Changed FastQC from the main workflow to QC_ALIGNED_READS, updated output directories and documentation +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Combined `--skip_raw_read_qc` and `--skip_aligned_read_qc` parameters into `--skip_qc` +- [#355](https://github.com/genomic-medicine-sweden/nallo/pull/355) - Updated paraphase to compress and index VCFs within the module +- [#365](https://github.com/genomic-medicine-sweden/nallo/pull/365) - Changed CI to only use nf-test for pipeline tests +- [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Updated CI nf-test version to 0.9.0 +- [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Changed vep_plugin_files description in schema and docs +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Changed phasing output structure and naming, and updated docs +- [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Changed the default minimap2 preset for PacBio data from `map-hifi` to `lr:hqae` +- [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) - Changed `pipelines_testdata_base_path` to pin a specific commit +- [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Updated broken test profile link added in [#397](https://github.com/genomic-medicine-sweden/nallo/pull/397) +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Changed `ADD_FOUND_IN_TAG` process to allow input files to be named the same as output, fixed header line description and removed bcftools view versions in header +- [#403](https://github.com/genomic-medicine-sweden/nallo/pull/403) - Revert [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) +- [#404](https://github.com/genomic-medicine-sweden/nallo/pull/404) - Changed to only run nf-tests where files have changes compared to the base branch +- [#407](https://github.com/genomic-medicine-sweden/nallo/pull/407) - Changed echtvar example file in docs +- [#410](https://github.com/genomic-medicine-sweden/nallo/pull/410) - Updated genmod to version 3.8.3 +- [#411](https://github.com/genomic-medicine-sweden/nallo/pull/411) - Updated longphase module to most recent version. ([#409](https://github.com/genomic-medicine-sweden/nallo/issues/409)). +- [#416](https://github.com/genomic-medicine-sweden/nallo/pull/416) - Updated WhatsHap to 2.3 and added the `--use-supplementary` flag to use supplementary reads for phasing by default. Changed modules to use biocontainers instead of custom containers. ([#296](https://github.com/genomic-medicine-sweden/nallo/issues/296)) +- [#417](https://github.com/genomic-medicine-sweden/nallo/pull/417) - Updated SNV annotation tests to use correct configuration, and snapshot the md5sum, and summary of the variants +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the default value of `--alignment_processes` from 1 to 8, meaning the pipeline will perform parallel alignment by default +- [#418](https://github.com/genomic-medicine-sweden/nallo/pull/418) - Changed the order of input files to samtools merge to be sorted on filename, avoiding unstable nf-test snapshots +- [#422](https://github.com/genomic-medicine-sweden/nallo/pull/422) - Updated nf-core/tools template to v3.0.1 +- [#423](https://github.com/genomic-medicine-sweden/nallo/pull/423) - Updated metro map +- [#428](https://github.com/genomic-medicine-sweden/nallo/pull/428) - Changed from using bcftools to SVDB for SV merging +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Updated HiFiCNV to 1.0.0 +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Refactored the CNV calling subworkflow +- [#429](https://github.com/genomic-medicine-sweden/nallo/pull/429) - Changed SV and CNV calling outputs, merging is now done per family +- [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Changed `CITATIONS.md` to `docs/CITATIONS.md`, +- [#433](https://github.com/genomic-medicine-sweden/nallo/pull/433) - Updated docs and README. +- [#434](https://github.com/genomic-medicine-sweden/nallo/pull/434) - Updated the SVDB merge module to fix unstable CALL_SVS tests +- [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Updated and refactored processes and workflows related to variant ranking +- [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Updated pipeline tests to use functions in nft-utils instead of checking hardcoded paths +- [#440](https://github.com/genomic-medicine-sweden/nallo/pull/440) - Updated hifiasm to 0.20 with new default parameters for telomeres and scaffolding ([#295](https://github.com/genomic-medicine-sweden/nallo/issues/295)) +- [#441](https://github.com/genomic-medicine-sweden/nallo/pull/441) - Changed the minimap2 preset for hifi reads back to `map-hifi` +- [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Refactored reference channel assignments +- [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) - Updated schemas for `vep_plugin_files` and `snp_db` +- [#451](https://github.com/genomic-medicine-sweden/nallo/pull/451) - Simplified methylation subworkflow +- [#474](https://github.com/genomic-medicine-sweden/nallo/pull/474) - Updated VEP and CADD channels to fix bugs introduced in [#443](https://github.com/genomic-medicine-sweden/nallo/pull/443) +- [#479](https://github.com/genomic-medicine-sweden/nallo/pull/479) - Replaced bgzip tabix with bcftools sort in rank variants to fix [#457](https://github.com/genomic-medicine-sweden/nallo/issues/457) +- [#480](https://github.com/genomic-medicine-sweden/nallo/pull/480) - Updated ranking of SVs to work with multiple families per project +- [#484](https://github.com/genomic-medicine-sweden/nallo/pull/484) - Updated metro map and added SVG version +- [#485](https://github.com/genomic-medicine-sweden/nallo/pull/485) - Updated repeat expansion annotation to annotate per family instead of per sample +- [#486](https://github.com/genomic-medicine-sweden/nallo/pull/486) - Updated nf-core modules +- [#487](https://github.com/genomic-medicine-sweden/nallo/pull/487) - Changed CI tests to only run tests where changes have been made +- [#488](https://github.com/genomic-medicine-sweden/nallo/pull/488) - Changed naming of input parameters +- [#489](https://github.com/genomic-medicine-sweden/nallo/pull/489) - Updated nf-core template to 3.0.2 +- [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Refactored `nallo.nf` to remove many nested ifs and easier to follow logic +- [#493](https://github.com/genomic-medicine-sweden/nallo/pull/493) - Updated rank_variants dependencies with sv_annotation +- [#498](https://github.com/genomic-medicine-sweden/nallo/pull/498) - Updated CI to fix CI failures after merge +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed to annotating and ranking SNVs per family instead of per project +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed output documentation and structure to match `sample` and `family` for all variants +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Changed the way of validating the samplesheet to remove outputing false errors with `ifEmpty` +- [#505](https://github.com/genomic-medicine-sweden/nallo/pull/505) - Updated TRGT to 1.2.0 +- [#506](https://github.com/genomic-medicine-sweden/nallo/pull/506) - Updated documentation +- [#507](https://github.com/genomic-medicine-sweden/nallo/pull/507) - Changed the default value of `ch_hgnc_ids` to allow running without `--filter_variants_hgnc_ids` introduced in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/443) +- [#509](https://github.com/genomic-medicine-sweden/nallo/pull/509) - Updated documentation to fix mistakes +- [#510](https://github.com/genomic-medicine-sweden/nallo/pull/510) - Changed the MultiQC methods description to update dynamically based on `ch_versions` +- [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed one `single_sample` to `sample` and one `multi_sample` to `family` output directories missed in [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) +- [#512](https://github.com/genomic-medicine-sweden/nallo/pull/512) - Changed all `*_snv_*` to `*_snvs_*` for published output files to match `snvs`, `cnvs`, `svs` and `repeats`. +- [#513](https://github.com/genomic-medicine-sweden/nallo/pull/513) - Updated CITATIONS.md link in README +- [#523](https://github.com/genomic-medicine-sweden/nallo/pull/523) - Updated to filter more than one family per run, missed in [#496](https://github.com/genomic-medicine-sweden/nallo/pull/496) + +### `Removed` + +- [#352](https://github.com/genomic-medicine-sweden/nallo/pull/352) - Removed the fqcrs module +- [#356](https://github.com/genomic-medicine-sweden/nallo/pull/356) - Removed filter_vep section from output documentation since it is not in the pipeline +- [#379](https://github.com/genomic-medicine-sweden/nallo/pull/379) - Removed VEP Plugins from testdata ([genomic-medicine-sweden/test-datasets#16](https://github.com/genomic-medicine-sweden/test-datasets/pull/16)) +- [#388](https://github.com/genomic-medicine-sweden/nallo/pull/388) - Removed support for co-phasing SVs with HiPhase, as the officially supported caller (pbsv) is not in the pipeline +- [#412](https://github.com/genomic-medicine-sweden/nallo/pull/412) - Removed `bcftools/index`, as indexing is handled by other modules and no references remained. ([#377](https://github.com/genomic-medicine-sweden/nallo/issues/377)) +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Removed support for automatically creating an echvar database with SNVs and INDELs +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Removed `containts_affected` logic from the snv-calling workflow, since this was previously changed to be checked before pipeline start + +### `Fixed` + +- [#370](https://github.com/genomic-medicine-sweden/nallo/pull/370) - Fixed unsorted variants in SNV outputs ([#362](https://github.com/genomic-medicine-sweden/nallo/issues/362)) +- [#381](https://github.com/genomic-medicine-sweden/nallo/pull/381) - Fixed `--vep_cache` not working as expected with tar.gz cache downloaded from VEP, updated testdata in [genomic-medicine-sweden/test-datasets#17](https://github.com/genomic-medicine-sweden/test-datasets/pull/17) +- [#382](https://github.com/genomic-medicine-sweden/nallo/pull/382) - Fixed broken links and formatting in documentation +- [#393](https://github.com/genomic-medicine-sweden/nallo/pull/393) - Fixed minimap2 preset for ONT data being overwritten to `map-ont` when it should have been `lr:hq`, due to different settings in index and alignment processes [#392](https://github.com/genomic-medicine-sweden/nallo/issues/392) +- [#402](https://github.com/genomic-medicine-sweden/nallo/pull/402) - Fixed double sample names in HiFiCNV output +- [#438](https://github.com/genomic-medicine-sweden/nallo/pull/438) - Fixed missing/malformed software versions in `ADD_FOUND_IN_TAG`, `ADD_MOST_SEVERE_CSQ`, `ADD_MOST_SEVERE_PLI`, `SAMPLESHEET_PED`, `SOMALIER_PED` and `TRGT` +- [#444](https://github.com/genomic-medicine-sweden/nallo/pull/444) - Fixed genmod assigning wrong models on chromosome X when named `chrX` ([#343](https://github.com/genomic-medicine-sweden/nallo/issues/343)) +- [#502](https://github.com/genomic-medicine-sweden/nallo/pull/502) - Fixed genmod only scoring compounds in one family [#501](https://github.com/genomic-medicine-sweden/nallo/issues/501) + +### Parameters + +| Old parameter | New parameter | +| -------------------------------- | --------------------------------- | +| `--skip_aligned_read_qc` | `--skip_qc` | +| `--skip_raw_read_qc` | `--skip_qc` | +| | `--sv_caller` | +|   |  `--minimap2_read_mapping_preset` | +| `--genome` | | +| `--igenomes_ignore` | | +| `--max_cpus` | | +| `--max_memory` | | +| `--max_time` | | +| `--validationShowHiddenParams` | | +| `--validationSkipDuplicateCheck` | | +| `--validationS3PathCheck` | | +| `--monochromeLogs` | `--monochrome_logs` | +| | `--filter_variants_hgnc_ids` | +| | `--filter_snvs_expression` | +| | `--filter_svs_expression` | +| `--skip_short_variant_calling` | `--skip_snv_calling` | +| `--skip_assembly_wf` | `--skip_genome_assembly` | +| `--skip_mapping_wf` | `--skip_alignment` | +| `--skip_methylation_wf` | `--skip_methylation_pileups` | +| `--skip_phasing_wf` | `--skip_phasing` | +| `--variant_caller` | `--snv_caller` | +| `--parallel_snv` | `--snv_calling_processes` | +| `--cadd_prescored` | `--cadd_prescored_indels` | +| `--snp_db` | `--echtvar_snv_databases` | +| `--variant_catalog` | `--stranger_repeat_catalog` | +| `--bed` | `--target_regions` | +| `--hificnv_xy` | `--hificnv_expected_xy_cn` | +| `--hificnv_xx` | `--hificnv_expected_xx_cn` | +| `--hificnv_exclude` | `--hificnv_excluded_regions` | +| `--reduced_penetrance` | `--genmod_reduced_penetrance` | +| `--score_config_snv` | `--genmod_score_config_snvs` | +| `--score_config_sv` | `--genmod_score_config_svs` | +| `--parallel_alignments` | `--alignment_processes` | +| `--svdb_dbs` | `--svdb_sv_databases` | + +> [!NOTE] +> Parameter has been updated if both old and new parameter information is present. +> Parameter has been added if just the new parameter information is present. +> Parameter has been removed if new parameter information isn't present. + +### Module updates + +| Tool | Old version | New version | +| --------------------- | ----------- | ----------- | +| fqcrs | 0.1.0 | +| severus | | 1.1 | +| longphase  |   | 1.7.3   | +| genmod | 3.8.2 | 3.9 | +| WhatsHap | 2.2 | 2.3 | +| SVDB | | 2.8.2 | +| hifiasm | 0.19.8 | 0.20.0 | +| HiFiCNV | 0.1.7 | 1.0.0 | +| samtools/faidx | 1.2 | 1.21 | +| samtools/index | 1.2 | 1.21 | +| samtools/merge | 1.2 | 1.21 | +| stranger | 0.9.1 | 0.9.2 | +| multiqc | 1.21 | 1.25.1 | +| ensemblvep/filter_vep | | 113 | +| TRGT | 0.4.0 | 1.2.0 | +| bcftools/merge | 1.2 | | + +> [!NOTE] +> Version has been updated if both old and new version information is present. +> Version has been added if just the new version information is present. +> Version has been removed if new version information isn't present. + +## 0.3.2 - [2024-09-20] ### `Fixed` - [#396](https://github.com/genomic-medicine-sweden/nallo/pull/396) - Fixed the release test profile not working, by pinning the testdata used [#395](https://github.com/genomic-medicine-sweden/nallo/issues/395) -## v0.3.1 - [2024-09-11] +## 0.3.1 - [2024-09-11] ### `Fixed` - [#359](https://github.com/genomic-medicine-sweden/nallo/pull/359) - Fixed single sample SNV VCFs containing variants from all samples, resuling in a large number of empty GT calls -## v0.3.0 - [2024-08-29] +## 0.3.0 - [2024-08-29] ### `Added` @@ -99,6 +294,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#252](https://github.com/genomic-medicine-sweden/nallo/pull/252) - Fixed duplicate SNVs in outputs when providing a BED-regions with overlapping regions - [#267](https://github.com/genomic-medicine-sweden/nallo/pull/267) - Fixed warning where `MODKIT_PILEUP_HAPLOTYPES` would be defined more than once - [#300](https://github.com/genomic-medicine-sweden/nallo/pull/300) - Fixed missing paraphase version +- [#427](https://github.com/genomic-medicine-sweden/nallo/pull/427) - Fixed duplicate RG tags in BAM files after mapping from uBAMs ([#426](https://github.com/genomic-medicine-sweden/nallo/issues/426)). ### Parameters @@ -141,7 +337,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | splitubam | | 0.1.1 | | fastp | 0.23.4 | | -## v0.2.0 - [2024-06-26] +> [!NOTE] +> Version has been updated if both old and new version information is present. +> Version has been added if just the new version information is present. +> Version has been removed if new version information isn't present. + +## 0.2.0 - [2024-06-26] ### `Added` @@ -228,7 +429,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > Version has been added if just the new version information is present. > Version has been removed if new version information isn't present. -## v0.1.0 - [2024-05-08] +## 0.1.0 - [2024-05-08] Initial release of genomic-medicine-sweden/nallo, created with the [nf-core](https://nf-co.re/) template. diff --git a/README.md b/README.md index f22658d0..f7188289 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,58 @@ [![GitHub Actions CI Status](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/ci.yml/badge.svg)](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/ci.yml) [![GitHub Actions Linting Status](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/linting.yml/badge.svg)](https://github.com/genomic-medicine-sweden/nallo/actions/workflows/linting.yml) [![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/) -[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13748210.svg)](https://doi.org/10.5281/zenodo.13748210) +[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.04.2-23aa62.svg)](https://www.nextflow.io/) [![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/) [![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/genomic-medicine-sweden/nallo) ## Introduction -**genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-read rare disease SV/SNV identification using both PacBio and (targeted) ONT-data. Heavily influenced by best-practice pipelines such as [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). +**genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. Heavily influenced by best-practice pipelines such as [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). + + + genomic-medicine-sweden/nallo workflow + ## Pipeline summary ##### QC -- FastQC ([`FastQC`](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) -- Aligned read QC ([`cramino`](https://github.com/wdecoster/cramino)) -- Depth information ([`mosdepth`](https://github.com/brentp/mosdepth)) +- Read QC with [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino) and [mosdepth](https://github.com/brentp/mosdepth) ##### Alignment & assembly -- Align reads to reference ([`minimap2`](https://github.com/lh3/minimap2)) -- Assemble (trio-binned) haploid genomes (HiFi only) ([`hifiasm`](https://github.com/chhylp123/hifiasm)) +- Align reads to reference with [minimap2](https://github.com/lh3/minimap2) +- Assemble haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) ##### Variant calling -- Short variant calling & joint genotyping of SNVs ([`deepvariant`](https://github.com/google/deepvariant) + [`GLNexus`](https://github.com/dnanexus-rnd/GLnexus)) -- SV calling and joint genotyping ([`sniffles2`](https://github.com/fritzsedlazeck/Sniffles)) -- Tandem repeats (HiFi only) ([`TRGT`](https://github.com/PacificBiosciences/trgt/tree/main)) -- Assembly based variant calls (HiFi only) ([`dipcall`](https://github.com/lh3/dipcall)) -- CNV-calling ([`HiFiCNV`](https://github.com/PacificBiosciences/HiFiCNV)) -- Call paralogous genes ([`Paraphase`](https://github.com/PacificBiosciences/paraphase)) +- Call SNVs & joint genotyping with [deepvariant](https://github.com/google/deepvariant) and [GLNexus](https://github.com/dnanexus-rnd/GLnexus) +- Call SVs with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) +- Call CNVs with [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) +- Call tandem repeats with [TRGT](https://github.com/PacificBiosciences/trgt/tree/main) (HiFi only) +- Call paralogous genes with [Paraphase](https://github.com/PacificBiosciences/paraphase) +- Call variants from assembly with [dipcall](https://github.com/lh3/dipcall) (HiFi only) ##### Phasing and methylation -- Phase and haplotag reads ([`whatshap`](https://github.com/whatshap/whatshap) + [`hiphase`](https://github.com/PacificBiosciences/HiPhase)) -- Methylation pileups ([`modkit`](https://github.com/nanoporetech/modkit)) +- Phase and haplotag reads with [LongPhase](https://github.com/twolinin/longphase), [whatshap](https://github.com/whatshap/whatshap) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) +- Create methylation pileups with [modkit](https://github.com/nanoporetech/modkit) ##### Annotation -- Annotate SNVs and INDELs with database(s) of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. ([`echtvar`](https://github.com/brentp/echtvar) and [`VEP`](https://github.com/Ensembl/ensembl-vep)) +- Annotate SNVs and INDELs with databases of choice, e.g. [gnomAD](https://gnomad.broadinstitute.org), [ClinVar](https://www.ncbi.nlm.nih.gov/clinvar/), [CADD](https://cadd.gs.washington.edu) with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) - Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) +- Annotate SVs with [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://github.com/Ensembl/ensembl-vep) + +##### Ranking -##### Filtering and ranking +- Rank SNVs, INDELs, SVs and CNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) -- Rank variants ([`GENMOD`](https://github.com/Clinical-Genomics/genmod)) +##### Filtering + +- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) ## Usage @@ -59,31 +65,22 @@ Prepare a samplesheet with input data: ``` project,sample,file,family_id,paternal_id,maternal_id,sex,phenotype -testrun,HG002,/path/to/HG002.fastq.gz,FAM1,HG003,HG004,1,2 -testrun,HG005,/path/to/HG005.bam,FAM1,HG003,HG004,2,1 +NIST,HG002,/path/to/HG002.fastq.gz,FAM1,HG003,HG004,1,2 +NIST,HG005,/path/to/HG005.bam,FAM1,HG003,HG004,2,1 ``` -Now, you can run the pipeline using: +Supply a reference genome with `--fasta` and choose a matching `--preset` for your data (`revio`, `pacbio`, `ONT_R10`). Now, you can run the pipeline using: ```bash -nextflow run genomic-medicine-sweden/nallo -profile YOURPROFILE \ +nextflow run genomic-medicine-sweden/nallo \ + -profile \ --input samplesheet.csv \ --preset \ --fasta \ --outdir ``` -For more details and further functionality, please refer to the [usage documentation](https://github.com/genomic-medicine-sweden/nallo/blob/dev/docs/usage.md). - -> [!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). - -To run in an offline environment, download the pipeline and singularity images using [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use): - -``` -nf-core download genomic-medicine-sweden/nallo -``` +For more details and further functionality, please refer to the [documentation](http://genomic-medicine-sweden.github.io/nallo/). ## Credits @@ -97,7 +94,9 @@ If you would like to contribute to this pipeline, please see the [contributing g ## Citations -This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE). +If you use genomic-medicine-sweden/nallo for your analysis, please cite it using the following doi: [10.5281/zenodo.13748210](https://doi.org/10.5281/zenodo.13748210). + +This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE). > **The nf-core framework for community-curated bioinformatics pipelines.** > @@ -105,4 +104,4 @@ This pipeline uses code and infrastructure developed and maintained by the [nf-c > > _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x). -An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. +An extensive list of references for the tools used by the pipeline can be found in the [`docs/CITATIONS.md`](docs/CITATIONS.md) file. diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml index 9d78bfcd..d8195c2e 100644 --- a/assets/methods_description_template.yml +++ b/assets/methods_description_template.yml @@ -3,21 +3,11 @@ description: "Suggested text and references to use when describing pipeline usag section_name: "genomic-medicine-sweden/nallo Methods Description" section_href: "https://github.com/genomic-medicine-sweden/nallo" plot_type: "html" -## You inject any metadata in the Nextflow '${workflow}' object data: |

Methods

-

Data was processed using genomic-medicine-sweden/nallo v${workflow.manifest.version} ${doi_text} which uses the nf-core template (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

+

Data was processed using genomic-medicine-sweden/nallo v${workflow.manifest.version} ${doi_text} which uses uses code and infrastructure developed and maintained by the nf-core community, reused here under the MIT licence (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

The pipeline was executed with Nextflow v${workflow.nextflow.version} (Di Tommaso et al., 2017) with the following command:

${workflow.commandLine}
-

${tool_citations}

-

References

-
    -
  • Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. doi: 10.1038/nbt.3820
  • -
  • Ewels, P. A., Peltzer, A., Fillinger, S., Patel, H., Alneberg, J., Wilm, A., Garcia, M. U., Di Tommaso, P., & Nahnsen, S. (2020). The nf-core framework for community-curated bioinformatics pipelines. Nature Biotechnology, 38(3), 276-278. doi: 10.1038/s41587-020-0439-x
  • -
  • Grüning, B., Dale, R., Sjödin, A., Chapman, B. A., Rowe, J., Tomkins-Tinch, C. H., Valieris, R., Köster, J., & Bioconda Team. (2018). Bioconda: sustainable and comprehensive software distribution for the life sciences. Nature Methods, 15(7), 475–476. doi: 10.1038/s41592-018-0046-7
  • -
  • da Veiga Leprevost, F., Grüning, B. A., Alves Aflitos, S., Röst, H. L., Uszkoreit, J., Barsnes, H., Vaudel, M., Moreno, P., Gatto, L., Weber, J., Bai, M., Jimenez, R. C., Sachsenberg, T., Pfeuffer, J., Vera Alvarez, R., Griss, J., Nesvizhskii, A. I., & Perez-Riverol, Y. (2017). BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics (Oxford, England), 33(16), 2580–2582. doi: 10.1093/bioinformatics/btx192
  • - ${tool_bibliography} -
Notes:
    diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 24af127c..125517b7 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,8 +1,6 @@ report_comment: > - - This report has been generated by the genomic-medicine-sweden/nallo + This report has been generated by the genomic-medicine-sweden/nallo analysis pipeline. - report_section_order: "genomic-medicine-sweden-nallo-methods-description": order: -1000 diff --git a/assets/schema_hgnc_ids.json b/assets/schema_hgnc_ids.json new file mode 100644 index 00000000..2f3e64e1 --- /dev/null +++ b/assets/schema_hgnc_ids.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_hgnc_ids.json", + "title": "genomic-medicine-sweden/nallo pipeline - params.filter_variants_hgnc_ids schema", + "description": "Schema for the file provided with params.filter_variants_hgnc_ids", + "type": "array", + "items": { + "type": "object", + "properties": { + "hgnc_id": { + "oneOf": [ + { + "type": "string", + "pattern": "^\\S+$" + }, + { + "type": "integer" + } + ], + "exists": true, + "errorMessage": "HGNC IDs must exist with a header line `hgnc_id`, then one HGNC ID per line, either as e.g. `4826` or `HGNC:4826`." + } + }, + "required": ["hgnc_id"] + } +} diff --git a/assets/schema_input.json b/assets/schema_input.json index 46c00ba6..81e7e095 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/genomic-medicine-sweden/nallo/master/assets/schema_input.json", "title": "genomic-medicine-sweden/nallo pipeline - params.input schema", "description": "Schema for the file provided with params.input", @@ -26,14 +26,30 @@ "meta": ["family_id"] }, "paternal_id": { - "type": "string", - "pattern": "^\\S+$", + "oneOf": [ + { + "type": "integer", + "enum": [0] + }, + { + "type": "string", + "pattern": "^(\\S+)$" + } + ], "errorMessage": "Paternal ID must be provided and cannot contain spaces. If no paternal ID is available, use 0.", "meta": ["paternal_id"] }, "maternal_id": { - "type": "string", - "pattern": "^\\S+$", + "oneOf": [ + { + "type": "integer", + "enum": [0] + }, + { + "type": "string", + "pattern": "^(\\S+)$" + } + ], "errorMessage": "Maternal ID must be provided and cannot contain spaces. If no maternal ID is available, use 0.", "meta": ["maternal_id"] }, diff --git a/assets/schema_snp_db.json b/assets/schema_snp_db.json new file mode 100644 index 00000000..61480f73 --- /dev/null +++ b/assets/schema_snp_db.json @@ -0,0 +1,24 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_snp_db.json", + "title": "genomic-medicine-sweden/nallo pipeline - params.echtvar_snv_databases schema", + "description": "Schema for the file provided with params.echtvar_snv_databases", + "type": "array", + "items": { + "type": "object", + "properties": { + "sample": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "Sample must be provided and cannot contain spaces." + }, + "file": { + "format": "file-path", + "type": "string", + "pattern": "^\\S+\\.zip$", + "errorMessage": "Echtvar database must be provided, cannot contain spaces and must have extension '.zip'" + } + }, + "required": ["sample", "file"] + } +} diff --git a/assets/schema_snpdb.json b/assets/schema_snpdb.json deleted file mode 100644 index 651ad58a..00000000 --- a/assets/schema_snpdb.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_gvcfs.json", - "title": "genomic-medicine-sweden/nallo pipeline - params.extra_gvcfs schema", - "description": "Schema for the file provided with params.extra_gvcfs", - "type": "array", - "items": { - "type": "object", - "properties": { - "sample": { - "type": "string", - "pattern": "^\\S+$", - "errorMessage": "Sample name must be provided and cannot contain spaces", - "meta": ["id"] - }, - "file": { - "format": "file-path", - "type": "string", - "pattern": "^\\S+\\.zip$", - "errorMessage": "gVCF file must be provided, cannot contain spaces and must have extension 'g.vcf.gz' or 'gvcf.gz'" - } - }, - "required": ["sample", "file"] - } -} diff --git a/assets/schema_vep_plugin_files.json b/assets/schema_vep_plugin_files.json new file mode 100644 index 00000000..0be393a3 --- /dev/null +++ b/assets/schema_vep_plugin_files.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/assets/schema_vep_plugin_files.json", + "title": "genomic-medicine-sweden/nallo pipeline - params.vep_plugin_files schema", + "description": "Schema for the file provided with params.vep_plugin_files", + "type": "array", + "items": { + "type": "object", + "properties": { + "vep_files": { + "format": "file-path", + "type": "string", + "pattern": "^\\S+", + "exists": true, + "errorMessage": "Vep plugin file must be a path and exist." + } + }, + "required": ["vep_files"] + } +} diff --git a/assets/software_references.yml b/assets/software_references.yml new file mode 100644 index 00000000..f5048133 --- /dev/null +++ b/assets/software_references.yml @@ -0,0 +1,139 @@ +tool: + nextflow: + citation: "" + bibliography: 'Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. doi: 10.1038/nbt.3820' + nf_core: + citation: "" + bibliography: 'Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. doi: 10.1038/nbt.3820' + bioconda: + citation: "" + bibliography: 'Grüning, B., Dale, R., Sjödin, A., Chapman, B. A., Rowe, J., Tomkins-Tinch, C. H., Valieris, R., Köster, J., & Bioconda Team. (2018). Bioconda: sustainable and comprehensive software distribution for the life sciences. Nature Methods, 15(7), 475–476. doi: 10.1038/s41592-018-0046-7' + biocontainers: + citation: "" + bibliography: 'da Veiga Leprevost, F., Grüning, B. A., Alves Aflitos, S., Röst, H. L., Uszkoreit, J., Barsnes, H., Vaudel, M., Moreno, P., Gatto, L., Weber, J., Bai, M., Jimenez, R. C., Sachsenberg, T., Pfeuffer, J., Vera Alvarez, R., Griss, J., Nesvizhskii, A. I., & Perez-Riverol, Y. (2017). BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics (Oxford, England), 33(16), 2580–2582. doi: 10.1093/bioinformatics/btx192' + multiqc: + citation: "MultiQC (Ewels et al. 2016)" + bibliography: "Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PMID: 27312411; PMCID: PMC5039924." + add_most_severe_consequence: + citation: "add_most_severe_consequence (Neethiraj 2022)" + bibliography: "" + add_most_severe_pli: + citation: "add_most_severe_pli (Neethiraj 2022)" + bibliography: "" + bcftools: + citation: "BCFtools (Danecek et al. 2021)" + bibliography: "Danecek P, Bonfield JK, Liddle J, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008" + bedtools: + citation: "BEDTools (Quinlan & Hall 2010)" + bibliography: "Quinlan AR and Hall IM, 2010. BEDTools: a flexible suite of utilities for comparing genomic features. Bioinformatics. 26, 6, pp. 841–842." + bgzip: + citation: "bgzip" + bibliography: "" + busybox_awk: + citation: "BusyBox's awk" + bibliography: "" + cadd: + citation: "CADD (Rentzsch et al. 2019, Rentzsch et al. 2021)" + bibliography: "Rentzsch P, Schubach M, Shendure J, Kircher M. CADD-Splice—improving genome-wide variant effect prediction using deep learning-derived splice scores. Genome Med. 2021;13(1):31. doi:10.1186/s13073-021-00835-9" + cramino: + citation: "cramino (De Coster & Rademakers 2023)" + bibliography: "Wouter De Coster, Rosa Rademakers, NanoPack2: population-scale evaluation of long-read sequencing data, Bioinformatics, Volume 39, Issue 5, May 2023, btad311, https://doi.org/10.1093/bioinformatics/btad311" + create_pedigree_file: + citation: "create_pedigree_file" + bibliography: "" + deepvariant: + citation: "DeepVariant (Poplin et al. 2018)" + bibliography: "Poplin R, Chang PC, Alexander D, et al. A universal SNP and small-indel variant caller using deep neural networks. Nat Biotechnol. 2018;36(10):983-987. doi:10.1038/nbt.4235" + dipcall: + citation: "dipcall (Li et al. 2018)" + bibliography: "Li H, Bloom JM, Farjoun Y, Fleharty M, Gauthier L, Neale B, MacArthur D (2018) A synthetic-diploid benchmark for accurate variant-calling evaluation. Nat Methods, 15:595-597. [PMID:30013044]" + echtvar: + citation: "Echtvar (Pedersen & de Ridder 2023)" + bibliography: "Brent S Pedersen, Jeroen de Ridder, Echtvar: compressed variant representation for rapid annotation and filtering of SNPs and indels, Nucleic Acids Research, Volume 51, Issue 1, 11 January 2023, Page e3, https://doi.org/10.1093/nar/gkac931" + ensemblvep: + citation: "VEP (McLaren et al. 2016)" + bibliography: "McLaren W, Gil L, Hunt SE, et al. The Ensembl Variant Effect Predictor. Genome Biol. 2016;17(1):122. doi:10.1186/s13059-016-0974-4" + fastqc: + citation: "FastQC (Andrews 2010)" + bibliography: "Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/" + gawk: + citation: "gawk" + bibliography: "" + genmod: + citation: "Genmod (Magnusson et al. 2018)" + bibliography: "Magnusson M, Hughes T, Glabilloy, Bitdeli Chef. genmod: Version 3.7.3. Published online November 15, 2018. doi:10.5281/ZENODO.3841142" + gfastats: + citation: "Gfastats (Formenti et al. 2022)" + bibliography: "Giulio Formenti, Linelle Abueg, Angelo Brajuka, Nadolina Brajuka, Cristóbal Gallardo-Alba, Alice Giani, Olivier Fedrigo, Erich D Jarvis, Gfastats: conversion, evaluation and manipulation of genome sequences using assembly graphs, Bioinformatics, Volume 38, Issue 17, September 2022, Pages 4214–4216, https://doi.org/10.1093/bioinformatics/btac460" + glnexus: + citation: "GLnexus (Yun et al. 2021)" + bibliography: "Yun T, Li H, Chang PC, Lin MF, Carroll A, McLean CY. Accurate, scalable cohort variant calls using DeepVariant and GLnexus. Robinson P, ed. Bioinformatics. 2021;36(24):5582-5589. doi:10.1093/bioinformatics/btaa1081" + gunzip: + citation: "gunzip" + bibliography: "" + hifiasm: + citation: "Hifiasm (Cheng et al. 2021)" + bibliography: "Cheng, H., Concepcion, G.T., Feng, X. et al. Haplotype-resolved de novo assembly using phased assembly graphs with hifiasm. Nat Methods 18, 170–175 (2021). https://doi.org/10.1038/s41592-020-01056-5" + hificnv: + citation: "HiFiCNV" + bibliography: "" + hiphase: + citation: "HiPhase (Holt et al. 2024)" + bibliography: "James M Holt, Christopher T Saunders, William J Rowell, Zev Kronenberg, Aaron M Wenger, Michael Eberle, HiPhase: jointly phasing small, structural, and tandem repeat variants from HiFi sequencing, Bioinformatics, Volume 40, Issue 2, February 2024, btae042, https://doi.org/10.1093/bioinformatics/btae042" + longphase: + citation: "LongPhase (Lin et al. 2024)" + bibliography: "Jyun-Hong Lin, Liang-Chi Chen, Shu-Chi Yu, Yao-Ting Huang, LongPhase: an ultra-fast chromosome-scale phasing algorithm for small and large variants, Bioinformatics, Volume 38, Issue 7, March 2022, Pages 1816–1822, https://doi.org/10.1093/bioinformatics/btac058" + minimap2: + citation: "Minimap2 (Li 2018)" + bibliography: "Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191" + modkit: + citation: "modkit" + bibliography: "" + mosdepth: + citation: "mosdepth (Pedersen & Quinlan 2018)" + bibliography: "Pedersen BS, Quinlan AR. Mosdepth: quick coverage calculation for genomes and exomes. Hancock J, ed. Bioinformatics. 2018;34(5):867-868. doi:10.1093/bioinformatics/btx699" + paraphase: + citation: "Paraphase (Chen et al. 2023)" + bibliography: "Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294" + python: + citation: "Python (Van Rossum & Drake Jr 2009)" + bibliography: "" + samtools: + citation: "SAMtools (Danecek et al. 2021)" + bibliography: "Danecek P, Bonfield JK, Liddle J, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008" + sniffles: + citation: "Sniffles2 (Smolka et al. 2024)" + bibliography: "Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y" + severus: + citation: "Severus (Keskus et al. 2024)" + bibliography: "Ayse Keskus, Asher Bryant, Tanveer Ahmad, Byunggil Yoo, Sergey Aganezov, Anton Goretsky, Ataberk Donmez, Lisa A. Lansdon, Isabel Rodriguez, Jimin Park, Yuelin Liu, Xiwen Cui, Joshua Gardner, Brandy McNulty, Samuel Sacco, Jyoti Shetty, Yongmei Zhao, Bao Tran, Giuseppe Narzisi, Adrienne Helland, Daniel E. Cook, Pi-Chuan Chang, Alexey Kolesnikov, Andrew Carroll, Erin K. Molloy, Irina Pushel, Erin Guest, Tomi Pastinen, Kishwar Shafin, Karen H. Miga, Salem Malikic, Chi-Ping Day, Nicolas Robine, Cenk Sahinalp, Michael Dean, Midhat S. Farooqi, Benedict Paten, Mikhail Kolmogorov. Severus: accurate detection and characterization of somatic structural variation in tumor genomes using long reads. medRxiv 2024.03.22.24304756; doi: https://doi.org/10.1101/2024.03.22.24304756" + somalier: + citation: "Somalier (Pedersen et al. 2020)" + bibliography: "Pedersen, B.S., Bhetariya, P.J., Brown, J. et al. Somalier: rapid relatedness estimation for cancer and germline studies using efficient genome sketches. Genome Med 12, 62 (2020). https://doi.org/10.1186/s13073-020-00761-2" + split_bed_chunks: + citation: "split_bed_chunks" + bibliography: "" + splitubam: + citation: "splitubam" + bibliography: "" + stranger: + citation: "Stranger (Nilsson & Magnusson 2021)" + bibliography: "Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873" + svdb: + citation: "SVDB (Eisfeldt et al. 2017)" + bibliography: "" + tabix: + citation: "Tabix (Li 2011)" + bibliography: "Li H. Tabix: fast retrieval of sequence features from generic TAB-delimited files. Bioinformatics. 2011;27(5):718-719. doi:10.1093/bioinformatics/btq671" + trgt: + citation: "TRGT (Dolzhenko et al. 2024)" + bibliography: "Dolzhenko, E., English, A., Dashnow, H. et al. Characterization and visualization of tandem repeats at genome scale. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02057-3" + untar: + citation: "untar" + bibliography: "" + yak: + citation: "yak" + bibliography: "" + whatshap: + citation: "WhatsHap (Martin et al. 2016)" + bibliography: "Marcel Martin, Murray Patterson, Shilpa Garg, Sarah O Fischer, Nadia Pisanti, Gunnar W Klau, Alexander Schöenhuth, Tobias Marschall. bioRxiv 085050; doi: https://doi.org/10.1101/085050" diff --git a/assets/svdb_query_vcf_schema.json b/assets/svdb_query_vcf_schema.json new file mode 100644 index 00000000..a927a1f3 --- /dev/null +++ b/assets/svdb_query_vcf_schema.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/nf-core/raredisease/master/assets/mobile_element_references_schema.json", + "title": "Schema for SVDB query - VCF", + "description": "Schema for the SVDB query database input, VCF version", + "type": "array", + "items": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.vcf?(\\.gz)?$", + "errorMessage": "Path to query database cannot contain spaces and must be a vcf file" + }, + "in_freq_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "In frequency key cannot contain spaces" + }, + "in_allele_count_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "In allele count key cannot contain spaces" + }, + "out_freq_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "Out frequency key must be provided and cannot contain spaces" + }, + "out_allele_count_info_key": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "Out allele count key must be provided and cannot contain spaces" + } + }, + "required": ["filename", "out_freq_info_key", "out_allele_count_info_key"] + } +} diff --git a/assets/vep_plugin_files_schema.json b/assets/vep_plugin_files_schema.json index d904317b..e436840c 100644 --- a/assets/vep_plugin_files_schema.json +++ b/assets/vep_plugin_files_schema.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/genomic-medicine-sweden/nallo/master/assets/vep_plugin_files_schema.json", "title": "Schema for VEP plugin files and their indices", "description": "Schema for VEP plugin files and their indices", diff --git a/conf/base.config b/conf/base.config index 2bc62420..04acaf56 100644 --- 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 @@ -23,36 +23,36 @@ process { // These labels are used and recognised by default in DSL2 files hosted on nf-core/modules. // If possible, it would be nice to keep the same label naming convention when // adding in your local modules too. + // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors 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 } } withName: 'HIFIASM' { - time = { check_max( 36.h * task.attempt, 'time' ) } + time = { 36.h * task.attempt } } - withLabel:error_ignore { errorStrategy = 'ignore' } @@ -60,8 +60,8 @@ process { errorStrategy = 'retry' maxRetries = 2 } - - withName: '.*:SAMTOOLS_MERGE' { + withName: 'SAMTOOLS_MERGE|SAMTOOLS_INDEX' { label = 'process_medium' } + } diff --git a/conf/modules/annotate_consequence_pli.config b/conf/modules/annotate_consequence_pli.config index 3158c4f4..648c98e6 100644 --- a/conf/modules/annotate_consequence_pli.config +++ b/conf/modules/annotate_consequence_pli.config @@ -12,6 +12,10 @@ */ process { + + // + // SNVs + // withName: '.*:ANN_CSQ_PLI_SNV:.*' { publishDir = [ enabled: false @@ -29,4 +33,25 @@ process { withName: '.*ANN_CSQ_PLI_SNV:TABIX_BGZIPTABIX' { ext.prefix = { "${meta.id}_snv_csq_pli" } } + + // + // SVs + // + withName: '.*:ANN_CSQ_PLI_SVS:.*' { + publishDir = [ + enabled: false + ] + } + + withName: '.*ANN_CSQ_PLI_SVS:ADD_MOST_SEVERE_CSQ' { + ext.prefix = { "${meta.id}_svs_csq" } + } + + withName: '.*ANN_CSQ_PLI_SVS:ADD_MOST_SEVERE_PLI' { + ext.prefix = { "${meta.id}_svs_csq_pli" } + } + + withName: '.*ANN_CSQ_PLI_SVS:TABIX_BGZIPTABIX' { + ext.prefix = { "${meta.id}_svs_csq_pli" } + } } diff --git a/conf/modules/annotate_repeat_expansions.config b/conf/modules/annotate_repeat_expansions.config index 93538810..db1d0481 100644 --- a/conf/modules/annotate_repeat_expansions.config +++ b/conf/modules/annotate_repeat_expansions.config @@ -23,13 +23,13 @@ process { } withName: '.*:ANNOTATE_REPEAT_EXPANSIONS:COMPRESS_STRANGER' { - ext.prefix = { "${meta.id}_repeat_expansion_stranger" } + ext.prefix = { "${meta.id}_repeats_annotated" } ext.args = [ '--output-type z', '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/repeat_annotation/stranger/${meta.id}" }, + path: { "${params.outdir}/repeats/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/annotate_svs.config b/conf/modules/annotate_svs.config new file mode 100644 index 00000000..a3274a9f --- /dev/null +++ b/conf/modules/annotate_svs.config @@ -0,0 +1,57 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. +---------------------------------------------------------------------------------------- +*/ + +process { + + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Annotate SVs + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: '.*:ANNOTATE_SVS:.*' { + publishDir = [ + enabled: false, + ] + } + + withName: '.*ANNOTATE_SVS:ENSEMBLVEP_SV' { + ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated" : "${meta.id}_svs_cnvs_merged_annotated" } + ext.args = { [ + "${params.extra_vep_options}", + '--dir_plugins .', + '--plugin pLI,pLI_values.txt', + '--appris --biotype --buffer_size 100 --canonical --cache --ccds', + '--compress_output bgzip --distance 5000 --domains', + '--exclude_predicted --force_overwrite --format vcf', + '--hgvs --humdiv --max_sv_size 248387328', + '--no_progress --numbers --per_gene --polyphen p', + '--protein --offline --sift p --regulatory', + '--symbol --tsl --uniprot --vcf', + '--no_stats' + ].join(' ') } + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_rank_variants ? null : filename } + ] + } + + withName: '.*ANNOTATE_SVS:TABIX_ENSEMBLVEP_SV' { + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_rank_variants ? null : filename } + ] + } + +} diff --git a/conf/modules/assembly_variant_calling.config b/conf/modules/assembly_variant_calling.config index acd8344b..c31206cd 100644 --- a/conf/modules/assembly_variant_calling.config +++ b/conf/modules/assembly_variant_calling.config @@ -19,9 +19,7 @@ process { } withName: '.*:ASSEMBLY_VARIANT_CALLING:DIPCALL' { - ext.args = '--cs' - publishDir = [ path: { "${params.outdir}/assembly_variant_calling/dipcall/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/bam_infer_sex.config b/conf/modules/bam_infer_sex.config index d247a841..0cd27975 100644 --- a/conf/modules/bam_infer_sex.config +++ b/conf/modules/bam_infer_sex.config @@ -31,7 +31,7 @@ process { withName: '.*:BAM_INFER_SEX:RELATE_RELATE' { ext.args = '--infer' publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/somalier/relate/${meta.id}" }, + path: { "${params.outdir}/qc/somalier/relate/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/structural_variant_calling.config b/conf/modules/call_cnvs.config similarity index 56% rename from conf/modules/structural_variant_calling.config rename to conf/modules/call_cnvs.config index 8e1e5a28..9256907a 100644 --- a/conf/modules/structural_variant_calling.config +++ b/conf/modules/call_cnvs.config @@ -14,31 +14,46 @@ process { /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Structural variant calling + Call CNVs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - withName: '.*:STRUCTURAL_VARIANT_CALLING:SNIFFLES' { - - ext.prefix = { "${meta.id}_sniffles" } - - ext.args = '--no-qc' + withName: '.*:CALL_CNVS:.*' { + publishDir = [ + enabled: false, + ] + } + withName: '.*:CALL_CNVS:HIFICNV' { + ext.prefix = { "${meta.id}_hificnv" } publishDir = [ - path: { "${params.outdir}/sv_calling/sniffles/single_sample/${meta.id}" }, + path: { "${params.outdir}/visualization_tracks/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.endsWith('.bw') || filename.endsWith('.bedgraph') ? filename : null } ] } - withName: '.*:STRUCTURAL_VARIANT_CALLING:SNIFFLES_MULTISAMPLE' { - - ext.prefix = { "${meta.id}_sniffles" } - + withName: '.*:CALL_CNVS:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_cnvs" } + ext.args = '--no-version' + ext.args2 = [ + '--output-type z', + '--write-index=tbi', + '--no-version' + ].join(' ') publishDir = [ - path: { "${params.outdir}/sv_calling/sniffles/multi_sample/${meta.id}" }, + path: { "${params.outdir}/svs/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } + + withName: '.*:CALL_CNVS:SVDB_MERGE' { + ext.prefix = { "${meta.id}_cnvs_merged" } + ext.args = [ + '--bnd_distance 10000', + '--overlap .5' + ].join(' ') + } + } diff --git a/conf/modules/call_paralogs.config b/conf/modules/call_paralogs.config index a258a177..4ef63135 100644 --- a/conf/modules/call_paralogs.config +++ b/conf/modules/call_paralogs.config @@ -19,23 +19,11 @@ process { */ withName: '.*:CALL_PARALOGS:PARAPHASE' { - + ext.args = { "${params.extra_paraphase_options}" } publishDir = [ path: { "${params.outdir}/paraphase/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.vcf') ? null : filename } ] } - - withName: '.*:CALL_PARALOGS:TABIX_BGZIPTABIX' { - - ext.prefix = { "${input.simpleName}" } - - publishDir = [ - path: { "${params.outdir}/paraphase/${meta.id}/${meta.id}_paraphase_vcfs" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } diff --git a/conf/modules/call_repeat_expansions.config b/conf/modules/call_repeat_expansions.config index d46150df..43b2d1c9 100644 --- a/conf/modules/call_repeat_expansions.config +++ b/conf/modules/call_repeat_expansions.config @@ -24,14 +24,14 @@ process { ] } - withName: '.*:CALL_REPEAT_EXPANSIONS:TRGT' { + withName: '.*:CALL_REPEAT_EXPANSIONS:TRGT_GENOTYPE' { ext.args = { "--sample-name ${meta.id}" } } withName: '.*:CALL_REPEAT_EXPANSIONS:SAMTOOLS_SORT_TRGT' { ext.prefix = { "${meta.id}_spanning_sorted" } publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/single_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -39,7 +39,7 @@ process { withName: '.*:CALL_REPEAT_EXPANSIONS:SAMTOOLS_INDEX_TRGT' { publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/single_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -52,31 +52,33 @@ process { '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/single_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/sample/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } - withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_MERGE' { + withName: '.*:CALL_REPEAT_EXPANSIONS:TRGT_MERGE' { + ext.prefix = { "${meta.id}_repeats" } ext.args = [ '--output-type z', - '--write-index=tbi', '--force-single' ].join(' ') publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/multi_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_repeat_annotation ? null : filename } ] } - withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_INDEX_MERGE' { - ext.args = '--tbi' + withName: '.*:CALL_REPEAT_EXPANSIONS:BCFTOOLS_INDEX' { + ext.prefix = { "${meta.id}_repeats" } + ext.args = "--tbi" publishDir = [ - path: { "${params.outdir}/repeat_calling/trgt/multi_sample/${meta.id}" }, + path: { "${params.outdir}/repeats/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_repeat_annotation ? null : filename } ] } + } diff --git a/conf/modules/call_svs.config b/conf/modules/call_svs.config new file mode 100644 index 00000000..2969b1ff --- /dev/null +++ b/conf/modules/call_svs.config @@ -0,0 +1,83 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. +---------------------------------------------------------------------------------------- +*/ + +process { + + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Call SVs + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: '.*:CALL_SVS:.*' { + publishDir = [ + enabled: false, + ] + } + + withName: '.*:CALL_SVS:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_found_in" } + ext.args = '--no-version' + ext.args2 = [ + '--output-type b', + '--write-index=csi', + '--no-version' + ].join(' ') + } + + withName: '.*:CALL_SVS:BCFTOOLS_QUERY' { + ext.args = '--list-samples' + } + + withName: '.*:CALL_SVS:CREATE_SAMPLES_FILE' { + ext.prefix = { "${meta.id}_samples_file" } + } + + withName: '.*:CALL_SVS:SNIFFLES' { + ext.prefix = { "${meta.id}_sniffles_for_reheader" } + ext.args = '--no-qc' + } + + withName: '.*:CALL_SVS:SVDB_MERGE' { + ext.prefix = { "${meta.id}_svs_merged" } + ext.args = [ + '--bnd_distance 1000', + '--overlap .5' + ].join(' ') + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation || !params.skip_cnv_calling ? null : filename } + ] + } + + withName: '.*:CALL_SVS:TABIX_SVDB_MERGE' { + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation || !params.skip_cnv_calling ? null : filename } + ] + } + + withName: '.*:CALL_SVS:BCFTOOLS_REHEADER' { + ext.prefix = { "${meta.id}_svs" } + ext.args2 = [ + '--output-type z', + '--write-index=tbi' + ].join(' ') + publishDir = [ + path: { "${params.outdir}/svs/sample/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} diff --git a/conf/modules/cnv.config b/conf/modules/cnv.config deleted file mode 100644 index e11c3553..00000000 --- a/conf/modules/cnv.config +++ /dev/null @@ -1,36 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Config file for defining DSL2 per module options and publishing paths -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Available keys to override module options: - ext.args = Additional arguments appended to command in module. - ext.args2 = Second set of arguments appended to command in module (multi-tool modules). - ext.args3 = Third set of arguments appended to command in module (multi-tool modules). - ext.prefix = File name prefix for output files. ----------------------------------------------------------------------------------------- -*/ - -process { - - /* - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - CNV - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - withName: '.*:CNV:HIFICNV' { - publishDir = [ - path: { "${params.outdir}/cnv_calling/hificnv/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:CNV:TABIX_HIFICNV' { - publishDir = [ - path: { "${params.outdir}/cnv_calling/hificnv/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } -} diff --git a/conf/modules/filter_variants.config b/conf/modules/filter_variants.config new file mode 100644 index 00000000..be030953 --- /dev/null +++ b/conf/modules/filter_variants.config @@ -0,0 +1,77 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. +---------------------------------------------------------------------------------------- +*/ + +process { + + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Filter variants + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: '.*:FILTER_VARIANTS_SNV:.*' { + publishDir = [ + enabled: false, + ] + } + + withName: '.*:FILTER_VARIANTS_SNVS:ENSEMBLVEP_FILTERVEP' { + ext.args = { "--filter \"HGNC_ID in ${feature_file}\"" } + publishDir = [ + enabled: false, + ] + } + + withName: '.*:FILTER_VARIANTS_SVS:ENSEMBLVEP_FILTERVEP' { + ext.args = { "--filter \"HGNC_ID in ${feature_file}\"" } + publishDir = [ + enabled: false, + ] + } + + withName: '.*:FILTER_VARIANTS_SNVS:BCFTOOLS_VIEW' { + ext.prefix = { params.skip_snv_annotation ? "${meta.id}_snvs_filtered" : (params.skip_rank_variants ? "${meta.id}_snvs_annotated_filtered" : "${meta.id}_snvs_annotated_ranked_filtered") } + ext.args = { [ + '--output-type z', + '--write-index=tbi', + "${params.filter_snvs_expression}" + ].join(" ") } + publishDir = [ + path: { "${params.outdir}/snvs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:FILTER_VARIANTS_SVS:BCFTOOLS_VIEW' { + ext.prefix = { + def parts = [] + parts << "${meta.id}" + parts << (params.skip_cnv_calling ? 'svs_merged' : 'svs_cnvs_merged') + if (!params.skip_sv_annotation) parts << 'annotated' + if (!params.skip_rank_variants) parts << 'ranked' + parts << 'filtered' + return parts.join('_') + } + ext.args = { [ + '--output-type z', + '--write-index=tbi', + "${params.filter_svs_expression}" + ].join(" ") } + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + +} diff --git a/conf/modules/general.config b/conf/modules/general.config index b1aee9ae..1980639b 100644 --- a/conf/modules/general.config +++ b/conf/modules/general.config @@ -27,34 +27,44 @@ process { withName: '.*:NALLO:BCFTOOLS_STATS' { ext.prefix = { "${vcf}" } publishDir = [ - path: { "${params.outdir}/snvs/stats/single_sample" }, + path: { "${params.outdir}/snvs/stats/sample" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } withName: '.*:NALLO:BCFTOOLS_CONCAT' { - ext.prefix = { params.skip_snv_annotation ? "${meta.id}_snv" : (params.skip_rank_variants ? "${meta.id}_snv_annotated" : "${meta.id}_snv_annotated_ranked") } + ext.prefix = { "${meta.id}_concat" } ext.args = { [ '--allow-overlaps', + '--output-type u' + ].join(' ') } + publishDir = [ + enabled: false + ] + } + + withName: '.*:NALLO:BCFTOOLS_SORT' { + ext.prefix = { params.skip_snv_annotation ? "${meta.id}_snv" : (params.skip_rank_variants ? "${meta.id}_snv_annotated" : "${meta.id}_snv_annotated_ranked") } + ext.args = { [ '--output-type z', '--write-index=tbi' ].join(' ') } publishDir = [ - path: { "${params.outdir}/snvs/multi_sample/${meta.id}" }, + path: { "${params.outdir}/snvs/family/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } - withName: '.*:NALLO:BCFTOOLS_PLUGINSPLIT' { + withName: '.*:NALLO:BCFTOOLS_PLUGINSPLIT_SNVS' { ext.args = [ '-i \'GT="alt"\'', '--output-type z', '--write-index=tbi' ].join(' ') publishDir = [ - path: { "${params.outdir}/snvs/single_sample/" }, + path: { "${params.outdir}/snvs/sample/" }, mode: params.publish_dir_mode, // Can't use prefix as it would come from the original file saveAs: { filename -> @@ -65,32 +75,33 @@ process { def sample = matcher[0][1] def extension = matcher[0][2] def annotated = params.skip_snv_annotation ? "" : (params.skip_rank_variants ? "_annotated" : "_annotated_ranked" ) - "${sample}/${sample}_snv${annotated}${extension}" + "${sample}/${sample}_snvs${annotated}${extension}" } } ] } - withName: '.*:NALLO:FASTQC' { - ext.args = '--quiet' - publishDir = [ - path: { "${params.outdir}/qc_raw_reads/fastqc/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: '.*:NALLO:FQCRS' { - ext.prefix = { "${reads}" } + withName: '.*:NALLO:BCFTOOLS_PLUGINSPLIT_SVS' { + ext.args = [ + '-i \'GT="alt"\'', + '--output-type z', + '--write-index=tbi' + ].join(' ') publishDir = [ - path: { "${params.outdir}/qc_raw_reads/fqcrs/${meta.id}" }, + path: { "${params.outdir}/svs/sample/" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:NALLO:CAT_FASTQ' { - publishDir = [ - enabled: false + // Can't use prefix as it would come from the original file + saveAs: { filename -> + if (filename.equals('versions.yml')) { + null + } else { + def matcher = filename =~ /(.+)(\.vcf\.gz(?:\.tbi)?)$/ + def sample = matcher[0][1] + def extension = matcher[0][2] + def annotated = params.skip_sv_annotation ? "" : "_annotated" + "${sample}/${sample}_svs${annotated}${extension}" + } + } ] } @@ -100,9 +111,9 @@ process { ] } - withName: '.*:NALLO:SOMALIER_PED' { + withName: '.*:NALLO:SOMALIER_PED_FAMILY' { publishDir = [ - path: { "${params.outdir}/pedigree" }, + path: { "${params.outdir}/pedigree/family/" }, saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, ] } @@ -120,34 +131,37 @@ process { } withName: '.*:NALLO:SPLITUBAM' { - ext.args = { "--split ${params.parallel_alignments}" } + ext.args = { "--split ${params.alignment_processes}" } publishDir = [ enabled: false ] } withName: '.*:NALLO:MINIMAP2_ALIGN' { - ext.prefix = { "${meta.id}_aligned" } + // Samtools will not sort supplementary reads properly, to snapshot the md5sum + // they must be input in the same order and can therefore not be named the same + ext.prefix = { meta.n_files > 1 ? "${reads}" : "${meta.id}_aligned}" } ext.args = { [ "-y", - params.preset.equals('ONT_R10') ? "-x lr:hq" : "-x map-hifi", + "-x ${params.minimap2_read_mapping_preset}", "--secondary=no", "-Y", "-R @RG\\\\tID:${meta.id}\\\\tSM:${meta.id}" ].join(' ') } ext.args3 = { [ '-x HP,PS', // phasing - '-x AS,CC,CG,CP,H1,H2,HI,H0,IH,MC,MD,MQ,NM,SA,TS' + '-x AS,CC,CG,CP,H1,H2,HI,H0,IH,MC,MD,MQ,NM,SA,TS', + '--no-RG' // read group information ].join(' ') } ext.args4 = '-T \\*' publishDir = [ - mode: params.publish_dir_mode, - path: { "${params.outdir}/aligned_reads/${meta.id}" }, - // only a single BAM file per sample - saveAs: { filename -> - filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing_wf ? filename : null) - } - ] + mode: params.publish_dir_mode, + path: { "${params.outdir}/aligned_reads/${meta.id}" }, + // A BAM file is only published from here if no merging is required (a sample with one input file), and if phasing is off + saveAs: { filename -> + filename.equals('versions.yml') ? null : (meta.n_files == 1 && params.skip_phasing ? filename : null) + } + ] } withName: '.*:NALLO:SAMTOOLS_MERGE' { @@ -156,15 +170,24 @@ process { publishDir = [ path: { "${params.outdir}/aligned_reads/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : (params.skip_phasing_wf ? filename : null) } + saveAs: { filename -> filename.equals('versions.yml') ? null : (params.skip_phasing ? filename : null) } ] } - withName: '.*:NALLO:ECHTVAR_ENCODE' { + withName: '.*:NALLO:SVDB_MERGE_SVS_CNVS' { + ext.prefix = { "${meta.id}_svs_cnvs_merged" } publishDir = [ - path: { "${params.outdir}/databases/echtvar/encode/${meta.id}" }, + path: { "${params.outdir}/svs/family/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } + ] + } + + withName: '.*:NALLO:TABIX_SVDB_MERGE_SVS_CNVS' { + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || !params.skip_sv_annotation ? null : filename } ] } diff --git a/conf/modules/genome_assembly.config b/conf/modules/genome_assembly.config index 761f1eb0..4c2e91a4 100644 --- a/conf/modules/genome_assembly.config +++ b/conf/modules/genome_assembly.config @@ -24,29 +24,34 @@ process { ] } - withName: '.*:ASSEMBLY:YAK_PATERNAL' { + withName: '.*:ASSEMBLY:HIFIASM' { + ext.args = { [ + "${params.extra_hifiasm_options}", + '--dual-scaf', + '--telo-m CCCTAA' + ].join(' ') } + publishDir = [ + enabled: false, + ] + } + withName: '.*:ASSEMBLY:YAK_PATERNAL' { ext.prefix = { "${meta.paternal_id}_yak" } - publishDir = [ enabled: false, ] } withName: '.*:ASSEMBLY:YAK_MATERNAL' { - ext.prefix = { "${meta.maternal_id}_yak" } - publishDir = [ enabled: false, ] } withName: '.*:ASSEMBLY:GFASTATS.*' { - ext.args = '--discover-paths' ext.prefix = { "${assembly.baseName}" } - publishDir = [ path: { "${params.outdir}/assembly_haplotypes/gfastats/${meta.id}" }, mode: params.publish_dir_mode, diff --git a/conf/modules/methylation.config b/conf/modules/methylation.config index 2101bd30..188842a7 100644 --- a/conf/modules/methylation.config +++ b/conf/modules/methylation.config @@ -24,48 +24,27 @@ process { ] } - withName: '.*:METHYLATION:MODKIT_PILEUP_UNPHASED' { - - ext.args = '--combine-mods --cpg --combine-strands' + withName: '.*:METHYLATION:MODKIT_PILEUP' { + ext.args = { [ + "${params.extra_modkit_options}", + '--combine-mods', + '--cpg', + '--combine-strands', + !params.skip_phasing ? '--partition-tag HP' : '', + ].join(' ') } ext.prefix = { "${meta.id}_modkit_pileup" } - publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/unphased/${meta.id}" }, + path: { "${params.outdir}/methylation/modkit/pileup/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.endsWith('.log') ? filename : null } ] } - withName: '.*:METHYLATION:MODKIT_PILEUP_PHASED' { - - ext.args = '--combine-mods --cpg --combine-strands --partition-tag HP' - ext.prefix = { "${meta.id}_modkit_pileup_phased" } - - publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/phased/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.endsWith('.log') ? filename : null } - ] - - } - - withName: '.*:METHYLATION:BGZIP_MODKIT_PILEUP_UNPHASED' { + withName: '.*:METHYLATION:TABIX_BGZIPTABIX' { ext.prefix = { "${input.simpleName}" } - - publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/unphased/${meta.id}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:METHYLATION:BGZIP_MODKIT_PILEUP_PHASED' { - - ext.prefix = { "${input.simpleName}" } - publishDir = [ - path: { "${params.outdir}/methylation/modkit/pileup/phased/${meta.id}" }, + path: { "${params.outdir}/methylation/modkit/pileup/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/phasing.config b/conf/modules/phasing.config index e747b420..80cec5d5 100644 --- a/conf/modules/phasing.config +++ b/conf/modules/phasing.config @@ -24,34 +24,48 @@ process { ] } - withName: '.*:PHASING:HIPHASE_SNV' { - ext.prefix = { "$meta.id}_phased" } + withName: '.*:PHASING:HIPHASE' { ext.args = { [ '--ignore-read-groups', "--stats-file ${meta.id}_phased.stats.tsv", "--blocks-file ${meta.id}_phased.blocks.tsv", "--summary-file ${meta.id}_phased.summary.tsv" ].join(' ') } - publishDir = [ path: { "${params.outdir}/" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : ((filename.endsWith('bam') || filename.endsWith('bai')) ? "aligned_reads/${meta.id}/${filename}" : "phasing/hiphase/snv/${meta.id}/${filename}" ) } + saveAs: { filename -> filename.equals('versions.yml') ? null : ((filename.endsWith('bam') || filename.endsWith('bai')) ? "aligned_reads/${meta.id}/${filename}" : "phased_variants/${meta.id}/${filename}" ) } ] } - withName: '.*:PHASING:HIPHASE_SV' { - ext.prefix = { "$meta.id}_phased" } - ext.args = { [ - '--ignore-read-groups', - "--stats-file ${meta.id}_phased.stats.tsv", - "--blocks-file ${meta.id}_phased.blocks.tsv", - "--summary-file ${meta.id}_phased.summary.tsv" - ].join(' ') } + withName: '.*:PHASING:LONGPHASE_PHASE' { + ext.prefix = { "${meta.id}_phased" } + ext.args = [ + params.preset.equals('ONT_R10') ? "--ont" : "--pb", + '--indels' + ].join(' ') publishDir = [ - path: { "${params.outdir}/" }, + path: { "${params.outdir}/phased_variants/${meta.id}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : ((filename.endsWith('bam') || filename.endsWith('bai')) ? "aligned_reads/${meta.id}/${filename}" : "phasing/hiphase/sv/${meta.id}/${filename}" ) } + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:PHASING:TABIX_LONGPHASE_PHASE' { + publishDir = [ + path: { "${params.outdir}/phased_variants/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + + withName: '.*:PHASING:LONGPHASE_HAPLOTAG' { + ext.prefix = { "${meta.id}_haplotagged" } + publishDir = [ + path: { "${params.outdir}/aligned_reads/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } @@ -59,10 +73,11 @@ process { ext.prefix = { "${meta.id}_phased" } ext.args = [ '--ignore-read-groups', - '--indels' + '--indels', + '--use-supplementary' ].join(' ') publishDir = [ - path: { "${params.outdir}/phasing/whatshap/phase/${meta.id}" }, + path: { "${params.outdir}/phased_variants/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -71,14 +86,14 @@ process { withName: '.*:PHASING:WHATSHAP_STATS' { ext.prefix = { "${meta.id}_stats" } publishDir = [ - path: { "${params.outdir}/phasing/whatshap/stats/${meta.id}" }, + path: { "${params.outdir}/qc/phasing_stats/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } withName: '.*:PHASING:WHATSHAP_HAPLOTAG' { - ext.prefix = { "${meta.id}_phased" } + ext.prefix = { "${meta.id}_haplotagged" } ext.args = [ '--ignore-read-groups', '--tag-supplementary' @@ -90,7 +105,7 @@ process { ] } - withName: '.*:PHASING:SAMTOOLS_INDEX_WHATSHAP' { + withName: '.*:PHASING:SAMTOOLS_INDEX_WHATSHAP|.*:PHASING:SAMTOOLS_INDEX_LONGPHASE' { publishDir = [ path: { "${params.outdir}/aligned_reads/${meta.id}" }, mode: params.publish_dir_mode, @@ -105,7 +120,7 @@ process { ].join(' ') ext.prefix = { "${meta.id}_cramino_aligned_phased" } publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/cramino/phased/${meta.id}" }, + path: { "${params.outdir}/qc/cramino/phased/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/prepare_genome.config b/conf/modules/prepare_genome.config index 412d7b75..62ee761a 100644 --- a/conf/modules/prepare_genome.config +++ b/conf/modules/prepare_genome.config @@ -19,11 +19,7 @@ process { } withName: '.*:PREPARE_GENOME:MINIMAP2_INDEX' { - if(params.preset == 'revio' | params.preset == 'pacbio') { - ext.args = "-x map-hifi" - } else if(params.preset == 'ONT_R9' | params.preset == 'ONT_R10') { - ext.args = "-x map-ont" - } + ext.args = { "-x ${params.minimap2_read_mapping_preset}" } } withName: '.*:PREPARE_GENOME:MINIMAP2_INDEX_DIPCALL' { @@ -32,5 +28,6 @@ process { withName: '.*:PREPARE_GENOME:UNTAR_VEP_CACHE' { ext.when = { (params.vep_cache && params.vep_cache.endsWith("tar.gz")) } + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } } } diff --git a/conf/modules/qc_aligned_reads.config b/conf/modules/qc_aligned_reads.config index dda307bb..fd3746bb 100644 --- a/conf/modules/qc_aligned_reads.config +++ b/conf/modules/qc_aligned_reads.config @@ -22,7 +22,16 @@ process { ext.args = '--karyotype' ext.prefix = { "${meta.id}_cramino_aligned" } publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/cramino/unphased/${meta.id}" }, + path: { "${params.outdir}/qc/cramino/unphased/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QC_ALIGNED_READS:FASTQC' { + ext.args = '--quiet --format bam' + publishDir = [ + path: { "${params.outdir}/qc/fastqc/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] @@ -32,10 +41,10 @@ process { ext.args = { [ '--fast-mode', '--no-per-base', - params.bed ? '' : '--by 500' + params.target_regions ? '' : '--by 500' ].join(' ') } publishDir = [ - path: { "${params.outdir}/qc_aligned_reads/mosdepth/${meta.id}" }, + path: { "${params.outdir}/qc/mosdepth/${meta.id}" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/conf/modules/rank_variants.config b/conf/modules/rank_variants.config index d253ffa2..26be17dc 100644 --- a/conf/modules/rank_variants.config +++ b/conf/modules/rank_variants.config @@ -11,18 +11,16 @@ ---------------------------------------------------------------------------------------- */ -// -// Score and rank SNVs -// - process { + // + // Score and rank SNVs + // withName: '.*:RANK_VARIANTS_SNV:.*' { publishDir = [ enabled: false, ] } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_ANNOTATE' { ext.prefix = { "${meta.id}_snv_genmod_annotate" } ext.args = { [ @@ -31,24 +29,66 @@ process { '--temp_dir ./' ].join(' ') } } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_MODELS' { ext.prefix = { "${meta.id}_snv_genmod_models" } ext.args = "--whole_gene --temp_dir ./" } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_SCORE' { ext.prefix = { "${meta.id}_snv_genmod_score" } ext.args = "--rank_results" } - withName: '.*:RANK_VARIANTS_SNV:GENMOD_COMPOUND' { ext.prefix = { "${meta.id}_snv_genmod_compound" } ext.args = "--temp_dir ./" } - withName: '.*:RANK_VARIANTS_SNV:BCFTOOLS_SORT' { - ext.when = false + ext.prefix = { "${meta.id}_snv_genmod_compound_sorted" } + ext.args = [ + '--output-type z', + '--write-index=tbi', + '--max-mem 6G' + ].join(' ') } + // + // Score and rank SVSs + // + withName: '.*:RANK_VARIANTS_SVS:.*' { + publishDir = [ + enabled: false, + ] + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_ANNOTATE' { + ext.prefix = { "${meta.id}_svs_genmod_annotate" } + ext.args = { [ + '--annotate_regions', + '--genome-build 38', + '--temp_dir ./' + ].join(' ') } + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_MODELS' { + ext.prefix = { "${meta.id}_svs_genmod_models" } + ext.args = '--whole_gene --temp_dir ./' + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_SCORE' { + ext.prefix = { "${meta.id}_svs_genmod_score" } + ext.args = '--rank_results' + } + withName: '.*:RANK_VARIANTS_SVS:GENMOD_COMPOUND' { + ext.prefix = { "${meta.id}_svs_genmod_compound" } + ext.args = '--temp_dir ./' + } + withName: '.*:RANK_VARIANTS_SVS:BCFTOOLS_SORT' { + ext.prefix = { params.skip_cnv_calling ? "${meta.id}_svs_merged_annotated_ranked" : "${meta.id}_svs_cnvs_merged_annotated_ranked" } + ext.args = [ + '--output-type z', + '--write-index=tbi', + '--max-mem 6G' + ].join(' ') + publishDir = [ + path: { "${params.outdir}/svs/family/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } diff --git a/conf/modules/short_variant_calling.config b/conf/modules/short_variant_calling.config index 2559d947..1975d044 100644 --- a/conf/modules/short_variant_calling.config +++ b/conf/modules/short_variant_calling.config @@ -24,7 +24,17 @@ process { ] } - withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT' { + withName: '.*:SHORT_VARIANT_CALLING:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_found_in" } + ext.args = '--no-version' + ext.args2 = [ + '--output-type b', + '--no-version' + ].join(' ') + } + + + withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ "--sample_name=${meta.id}", @@ -33,6 +43,14 @@ process { meta.sex == 1 ? '--haploid_contigs="chrX,chrY"' : '' ].join(' ') } } + withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT_VCFSTATSREPORT' { + publishDir = [ + path: { "${params.outdir}/qc/deepvariant_vcfstatsreport/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + + } withName: '.*:SHORT_VARIANT_CALLING:GLNEXUS' { ext.args = '--config DeepVariant_unfiltered' @@ -47,7 +65,8 @@ process { ext.args = [ '-m -', '-w 10000', - '--output-type u', + '--output-type z', + '--write-index=tbi' ].join(' ') } @@ -64,4 +83,5 @@ process { '-w 10000' ].join(' ') } + } diff --git a/conf/modules/snv_annotation.config b/conf/modules/snv_annotation.config index 36be4406..01ae9f94 100644 --- a/conf/modules/snv_annotation.config +++ b/conf/modules/snv_annotation.config @@ -36,12 +36,13 @@ process { ].join(' ') } - withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_VEP' { + withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_SNV' { ext.prefix = { "${meta.id}_vep" } ext.args = { [ - "--dir_plugins .", - "--plugin LoFtool,LoFtool_scores.txt", - "--plugin pLI,pLI_values.txt", + "${params.extra_vep_options}", + '--dir_plugins .', + '--plugin LoFtool,LoFtool_scores.txt', + '--plugin pLI,pLI_values.txt', '--distance 5000', '--buffer_size 20000', '--format vcf --max_sv_size 248387328', diff --git a/conf/test.config b/conf/test.config index a348f829..ec51373c 100644 --- a/conf/test.config +++ b/conf/test.config @@ -9,96 +9,82 @@ ---------------------------------------------------------------------------------------- */ + 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 = 4 - max_memory = '15.GB' - max_time = '6.h' - - // Input data - - // Genome references - - fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' - - bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' - - // HiFiCNV - hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' - - // Dipcall - par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' - - // Repeats - trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' - - // SNV Annotation - vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' - - // Rank variants - reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - - // Somalier - somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' - - parallel_snv = 2 // Create 2 parallel DeepVariant processes - preset = "revio" - + // Base directory for nf-core/modules test data + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' + + // Base directory for genomic-medicine-sweden/nallo test data + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' + + // References + fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' + target_regions = params.pipelines_testdata_base_path + 'reference/test_data.bed' + filter_variants_hgnc_ids = params.pipelines_testdata_base_path + 'testdata/hgnc_ids.tsv' + hificnv_expected_xy_cn = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' + hificnv_expected_xx_cn = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' + hificnv_excluded_regions = params.pipelines_testdata_base_path + 'reference/empty.bed' + par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' + trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' + stranger_repeat_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' + vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' + vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' + echtvar_snv_databases = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' + svdb_sv_databases = params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv' + genmod_reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' + genmod_score_config_snvs = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' + genmod_score_config_svs = params.pipelines_testdata_base_path + 'reference/rank_model_svs.ini' + variant_consequences_snvs = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' + variant_consequences_svs = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' + somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' + + // Pipeline options + alignment_processes = 2 + snv_calling_processes = 2 + preset = "revio" + + // Test config options + extra_modkit_options = '--seed 1 --sampling-frac 0.1' + extra_vep_options = '--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz' + extra_paraphase_options = '--gene hba' + extra_hifiasm_options = '-f0 -k30 -w30 -D10 -r1 -N1' } -process { - withName: '.*:NALLO:ASSEMBLY:HIFIASM' { - ext.args = '-f0 -k30 -w30 -D10 -r1 -N1' - } +// Impose same minimum Nextflow version as in nextflow.config +manifest { + nextflowVersion = '!>=24.04.2' +} - withName: '.*:CALL_PARALOGS:PARAPHASE' { - ext.args = '--gene hba' - } +// Disable all Nextflow reporting options +timeline { enabled = false } +report { enabled = false } +trace { enabled = false } +dag { enabled = false } - withName: '.*:SNV_ANNOTATION:ENSEMBLVEP_VEP' { - ext.prefix = { "${meta.id}_vep" } - ext.args = { [ - "--dir_plugins .", - "--plugin LoFtool,LoFtool_scores.txt", - "--plugin pLI,pLI_values.txt", - "--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz", - '--distance 5000', - '--buffer_size 20000', - '--format vcf --max_sv_size 248387328', - '--appris --biotype --cache --canonical --ccds --compress_output bgzip', - '--domains --exclude_predicted --force_overwrite', - '--hgvs --humdiv --no_progress --numbers', - '--polyphen p --protein --offline --regulatory --sift p --symbol --tsl', - '--uniprot --vcf', - '--no_stats' - ].join(' ') } +process { + resourceLimits = [ + cpus: 4, + memory: '15.GB', + time: '1.h' + ] + withLabel: 'process_high' { + cpus = 4 + memory = '15.GB' } - - withName: '.*:NALLO:PHASING:WHATSHAP_PHASE' { - ext.args = '--ignore-read-groups --indels --distrust-genotypes --include-homozygous' + withLabel: 'process_medium' { + cpus = 2 + memory = '7.GB' } - - withName: 'FASTQC|MINIMAP2_INDEX_DIPCALL|PARAPHASE|SNIFFLES|GFASTATS_PATERNAL|GFASTATS_MATERNAL|HIFICNV' { + withLabel: 'process_low' { cpus = 1 + memory = '3.GB' } - - withName: 'MINIMAP2_INDEX|HIFIASM' { - cpus = 2 - } - - withName: 'SAMTOOLS_FASTQ|FASTP|MINIMAP2_ALIGN|GLNEXUS|ENSEMBLVEP_VEP|MODKIT_PILEUP|MODKIT_PILEUP_HAPLOTYPES' { - cpus = 4 + withLabel: 'process_single' { + cpus = 1 + memory = '3.GB' } - } diff --git a/CITATIONS.md b/docs/CITATIONS.md similarity index 88% rename from CITATIONS.md rename to docs/CITATIONS.md index 811889b7..5128c352 100644 --- a/CITATIONS.md +++ b/docs/CITATIONS.md @@ -48,8 +48,6 @@ > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. -- [fqcrs](https://github.com/fellen31/fqcrs) - - [Genmod](https://github.com/Clinical-Genomics/genmod) > Magnusson M, Hughes T, Glabilloy, Bitdeli Chef. genmod: Version 3.7.3. Published online November 15, 2018. doi:10.5281/ZENODO.3841142 @@ -72,6 +70,10 @@ - [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) +- [LongPhase](https://github.com/twolinin/longphase) + + > Jyun-Hong Lin, Liang-Chi Chen, Shu-Chi Yu, Yao-Ting Huang, LongPhase: an ultra-fast chromosome-scale phasing algorithm for small and large variants, Bioinformatics, Volume 38, Issue 7, March 2022, Pages 1816–1822, https://doi.org/10.1093/bioinformatics/btac058 + - [minimap2](https://academic.oup.com/bioinformatics/article/34/18/3094/4994778) > Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191 @@ -90,6 +92,10 @@ > Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294 +- [Severus](https://www.medrxiv.org/content/10.1101/2024.03.22.24304756v1) + + > Ayse Keskus, Asher Bryant, Tanveer Ahmad, Byunggil Yoo, Sergey Aganezov, Anton Goretsky, Ataberk Donmez, Lisa A. Lansdon, Isabel Rodriguez, Jimin Park, Yuelin Liu, Xiwen Cui, Joshua Gardner, Brandy McNulty, Samuel Sacco, Jyoti Shetty, Yongmei Zhao, Bao Tran, Giuseppe Narzisi, Adrienne Helland, Daniel E. Cook, Pi-Chuan Chang, Alexey Kolesnikov, Andrew Carroll, Erin K. Molloy, Irina Pushel, Erin Guest, Tomi Pastinen, Kishwar Shafin, Karen H. Miga, Salem Malikic, Chi-Ping Day, Nicolas Robine, Cenk Sahinalp, Michael Dean, Midhat S. Farooqi, Benedict Paten, Mikhail Kolmogorov. Severus: accurate detection and characterization of somatic structural variation in tumor genomes using long reads. medRxiv 2024.03.22.24304756; doi: https://doi.org/10.1101/2024.03.22.24304756 + - [Sniffles2](https://www.nature.com/articles/s41587-023-02024-y) > Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y @@ -104,6 +110,10 @@ > Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873 +- [SVDB](https://github.com/J35P312/SVDB) + + > Eisfeldt et al., 2017. + - [Tabix](https://academic.oup.com/bioinformatics/article/27/5/718/262743) > Li H. Tabix: fast retrieval of sequence features from generic TAB-delimited files. Bioinformatics. 2011;27(5):718-719. doi:10.1093/bioinformatics/btq671 diff --git a/docs/images/nallo_metromap.png b/docs/images/nallo_metromap.png new file mode 100644 index 00000000..26804f76 Binary files /dev/null and b/docs/images/nallo_metromap.png differ diff --git a/docs/images/nallo_metromap.svgz b/docs/images/nallo_metromap.svgz new file mode 100644 index 00000000..9ddd168a Binary files /dev/null and b/docs/images/nallo_metromap.svgz differ diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..a51e039b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,114 @@ +--- +title: genomic-medicine-sweden/nallo +description: A bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. +--- + +## Introduction + +**genomic-medicine-sweden/nallo** is a bioinformatics analysis pipeline for long-reads from both PacBio and (targeted) ONT-data, focused on rare-disease. Heavily influenced by best-practice pipelines such as [nf-core/sarek](https://nf-co.re/sarek), [nf-core/raredisease](https://nf-co.re/raredisease), [nf-core/nanoseq](https://github.com/nf-core/nanoseq), [PacBio Human WGS Workflow](https://github.com/PacificBiosciences/pb-human-wgs-workflow-snakemake), [epi2me-labs/wf-human-variation](https://github.com/epi2me-labs/wf-human-variation) and [brentp/rare-disease-wf](https://github.com/brentp/rare-disease-wf). + + + genomic-medicine-sweden/nallo workflow + + +## Pipeline summary + +### QC + +- Read QC with [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino) and [mosdepth](https://github.com/brentp/mosdepth) + +### Alignment & assembly + +- Align reads to reference with [minimap2](https://github.com/lh3/minimap2) +- Assemble (trio-binned) haploid genomes with [hifiasm](https://github.com/chhylp123/hifiasm) (HiFi only) + +### Variant calling + +- Call SNVs & joint genotyping with [deepvariant](https://github.com/google/deepvariant) and [GLNexus](https://github.com/dnanexus-rnd/GLnexus) +- Call SVs with [Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles2](https://github.com/fritzsedlazeck/Sniffles) +- Call CNVs with [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) +- Call tandem repeats with [TRGT](https://github.com/PacificBiosciences/trgt/tree/main) (HiFi only) +- Call paralogous genes with [Paraphase](https://github.com/PacificBiosciences/paraphase) +- Call variants from assembly with [dipcall](https://github.com/lh3/dipcall) (HiFi only) + +### Phasing and methylation + +- Phase and haplotag reads with [LongPhase](https://github.com/twolinin/longphase), [whatshap](https://github.com/whatshap/whatshap) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) +- Create methylation pileups with [modkit](https://github.com/nanoporetech/modkit) + +### Annotation + +- Annotate SNVs and INDELs with databases of choice, i.e. [gnomAD](https://gnomad.broadinstitute.org), [CADD](https://cadd.gs.washington.edu) etc. with [echtvar](https://github.com/brentp/echtvar) and [VEP](https://github.com/Ensembl/ensembl-vep) +- Annotate repeat expansions with [stranger](https://github.com/Clinical-Genomics/stranger) +- Annotate SVs with [SVDB](https://github.com/J35P312/SVDB) and [VEP](https://github.com/Ensembl/ensembl-vep) + +### Ranking + +- Rank SNVs, INDELs, SVs and CNVs with [GENMOD](https://github.com/Clinical-Genomics/genmod) + +### Filtering + +- Filter SNVs, INDELs, SVs and CNVs with [filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) + +## Usage + +!!! note + + If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. + +Prepare a samplesheet with input data: + +`samplesheet.csv` + +``` +project,sample,file,family_id,paternal_id,maternal_id,sex,phenotype +NIST,HG002,/path/to/HG002.fastq.gz,FAM1,HG003,HG004,1,2 +NIST,HG005,/path/to/HG005.bam,FAM1,HG003,HG004,2,1 +``` + +Supply a reference genome with `--fasta` and choose a matching `--preset` for your data (`revio`, `pacbio`, `ONT_R10`). Now, you can run the pipeline using: + +```bash +nextflow run genomic-medicine-sweden/nallo \ + -profile \ + --input samplesheet.csv \ + --preset \ + --fasta \ + --outdir +``` + +!!!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). + +To run in an offline environment, download the pipeline and singularity images using [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use): + +``` +nf-core download genomic-medicine-sweden/nallo +``` + +For more details and further functionality, please refer to the [usage documentation](usage.md). + +## Credits + +genomic-medicine-sweden/nallo was originally written by Felix Lenner. + +We thank the following people for their extensive assistance in the development of this pipeline: + +## Contributions and Support + +If you would like to contribute to this pipeline, please see the [contributing guidelines](https://github.com/genomic-medicine-sweden/nallo/blob/dev/.github/CONTRIBUTING.md). + +## Citations + +If you use genomic-medicine-sweden/nallo for your analysis, please cite it using the following doi: [10.5281/zenodo.13748210](https://doi.org/10.5281/zenodo.13748210). + +This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE). + +> **The nf-core framework for community-curated bioinformatics pipelines.** +> +> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen. +> +> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x). + +An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. diff --git a/docs/output.md b/docs/output.md index b0e86626..f8450ee2 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,354 +1,283 @@ # genomic-medicine-sweden/nallo: Output -## Table of contents - -- [genomic-medicine-sweden/nallo: Output](#genomic-medicine-swedennallo-output) - - [Table of contents](#table-of-contents) - - [Pipeline overview](#pipeline-overview) - - [Alignment](#alignment) - - [Assembly](#assembly) - - [Assembly variant calling](#assembly-variant-calling) - - [CNV calling](#cnv-calling) - - [Methylation](#methylation) - - [MultiQC](#multiqc) - - [Paraphase](#paraphase) - - [Phasing](#phasing) - - [Pipeline information](#pipeline-information) - - [Aligned read QC](#aligned-read-qc) - - [Mosdepth](#mosdepth) - - [Cramino](#cramino) - - [Somalier](#somalier) - - [Raw read QC](#raw-read-qc) - - [FastQC](#fastqc) - - [Repeat calling](#repeat-calling) - - [Repeat annotation](#repeat-annotation) - - [SNV Annotation](#snv-annotation) - - [Ranked Variants](#ranked-variants) - - [SV Calling](#sv-calling) +## Introduction -## Pipeline overview +This document describes the pipeline output files and the tools used to generate them. -The directories listed below will be created in the results directory after the pipeline has finished: +## Aligned reads -- `aligned_reads` -- `assembly_haplotypes` -- `assembly_variant_calling` -- `cnv_calling` -- `methylation` -- `multiqc` -- `paraphase` -- `phasing` -- `pipeline_info` -- `qc_aligned_reads` -- `qc_raw_reads` -- `repeat_calling` -- `snv_annotation` -- `snv_calling` -- `sv_calling` +[Minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, merged and indexed using [samtools](https://github.com/samtools/samtools). If the pipeline is run with phasing, the aligned reads will be happlotagged using the active phasing tool. -### Alignment +| Path | Description | Alignment | Alignment & phasing | +| --------------------------------------- | ----------------------------------- | ------------------ | ------------------- | +| `aligned_reads/minimap2/{sample}/*.bam` | Alignment file in bam format | :white_check_mark: | | +| `aligned_reads/minimap2/{sample}/*.bai` | Index of the corresponding bam file | :white_check_mark: | | -[minimap2](https://github.com/lh3/minimap2) is used to map the reads to a reference genome. The aligned reads are sorted, (merged) and indexed using [samtools](https://github.com/samtools/samtools). +| Path | Description | Alignment | Alignment & phasing | +| ----------------------------------------------------- | ----------------------- | --------- | ------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | | :white_check_mark: | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | | :white_check_mark: | -
    -Output files from Alignment +## Assembly -- `{outputdir}/aligned_reads/minimap2/{sample}/` - - `*.bam`: Alignment file in bam format - - `*.bai`: Index of the corresponding bam file -
    +[Hifiasm](https://github.com/chhylp123/hifiasm) is used to assemble genomes. The assembled haplotypes are then converted to fasta files using [gfastats](https://github.com/vgl-hub/gfastats). A deconstructed version of [dipcall](https://github.com/lh3/dipcall) is used to map the assembled haplotypes back to the reference genome. -### Assembly +| Path | Description | +| ------------------------------------------------------------ | ---------------------------------------------------- | +| `assembly_haplotypes/gfastats/{sample}/*hap1.p_ctg.fasta.gz` | Assembled haplotype 1 | +| `assembly_haplotypes/gfastats/{sample}/*hap2.p_ctg.fasta.gz` | Assembled haplotype 2 | +| `assembly_haplotypes/gfastats/{sample}/*.assembly_summary` | Summary statistics | +| `assembly_variant_calling/dipcall/{sample}/*hap1.bam` | Assembled haplotype 1 mapped to the reference genome | +| `assembly_variant_calling/dipcall/{sample}/*hap1.bai` | Index of the corresponding BAM file for haplotype 1 | +| `assembly_variant_calling/dipcall/{sample}/*hap2.bam` | Assembled haplotype 2 mapped to the reference genome | +| `assembly_variant_calling/dipcall/{sample}/*hap2.bai` | Index of the corresponding BAM file for haplotype 2 | -[hifiasm](https://github.com/chhylp123/hifiasm) is used to assemble genomes. The assembled haplotypes are then comverted to fasta files using [gfastats](https://github.com/vgl-hub/gfastats). +## Methylation pileups -
    -Output files from Assembly +[Modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups, producing bedMethyl files for both haplotagged and ungrouped reads. Additionally, methylation information can be viewed in the BAM files, for example in IGV. When phasing is on, modkit outputs pileups per haplotype. -- `{outputdir}/assembly_haplotypes/gfastats/{sample}/` - - `*hap1.p_ctg.fasta.gz`: Assembled haplotype 1 - - `*hap2.p_ctg.fasta.gz`: Assembled haplotype 2 - - `*.assembly_summary`: Summary statistics -
    +| Path | Description | Alignment | Alignment & phasing | +| ---------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------ | ------------------- | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_*.bed.gz` | bedMethyl file with summary counts from haplotagged reads | | :white_check_mark: | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup_phased_ungrouped.bed.gz` | bedMethyl file for ungrouped reads | | :white_check_mark: | +| `methylation/modkit/pileup/{sample}/*.modkit_pileup.bed.gz` | bedMethyl file with summary counts from all reads | :white_check_mark: | | +| `methylation/modkit/pileup/{sample}/*.bed.gz.tbi` | Index of the corresponding bedMethyl file | :white_check_mark: | | -### Assembly variant calling +## MultiQC -A deconstructed version of [dipcall](https://github.com/lh3/dipcall) is used to call variants from the assembled haplotypes. They are also mapped back to the reference genome. +[MultiQC](http://multiqc.info) generates an HTML report summarizing all samples' QC results and pipeline statistics. -
    -Output files from Assembly variant calling +| Path | Description | +| ----------------------------- | ----------------------------------------- | +| `multiqc/multiqc_report.html` | HTML report summarizing QC results | +| `multiqc/multiqc_data/` | Directory containing parsed statistics | +| `multiqc/multiqc_plots/` | Directory containing static report images | -> Dipcall produces several files, a full expanation is available [here](https://github.com/lh3/dipcall). +## Pipeline Information -- `{outputdir}/assembly_variant_calling/dipcall/{sample}/` +[Nextflow](https://www.nextflow.io/docs/latest/tracing.html) generates reports for troubleshooting, performance, and traceability. - - `*hap1.bam`: Assembled haplotype 1 mapped to the reference genome - - `*hap1.bai`: Index of the corresponding bam file. - - `*hap2.bam`: Assembled haplotype 2 mapped to the reference genome - - `*hap2.bai`: Index of the corresponding bam file. +| Path | Description | +| --------------------------------------- | --------------------------------- | +| `pipeline_info/execution_report.html` | Execution report | +| `pipeline_info/execution_timeline.html` | Timeline report | +| `pipeline_info/execution_trace.txt` | Execution trace | +| `pipeline_info/pipeline_dag.dot` | Pipeline DAG in DOT format | +| `pipeline_info/pipeline_report.html` | Pipeline report | +| `pipeline_info/software_versions.yml` | Software versions used in the run | -
    +## Phasing -### CNV calling +[LongPhase](https://github.com/twolinin/longphase), [WhatsHap](https://whatshap.readthedocs.io/en/latest/), or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used for phasing. -[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. It also produces copynumber, depth and MAF tracks loadable in IGV. +| Path | Description | +| ----------------------------------------------------- | ----------------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +| `phased_variants/{sample}/*.vcf.gz` | VCF file with phased variants | +| `phased_variants/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `qc/phasing_stats/{sample}/*.blocks.tsv` | Phase block file | +| `qc/phasing_stats/{sample}/*.stats.tsv` | Phasing statistics file | -
    -Output files from CNV calling +## QC -- `{outputdir}/cnv_calling/hificnv/{sample}/` - - `*.copynum.bedgraph`: Copy number in bedgraph format - - `*.depth.bw`: Depth track in BigWig format - - `*.maf.bw`: Minor allele frequencies in BigWig format - - `*.vcf.gz`: VCF file containing CNV variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -
    +[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth), and [somalier](https://github.com/brentp/somalier) are used for read quality control. -### Methylation +### FastQC -[modkit](https://github.com/nanoporetech/modkit) is used to create methylation pileups. bedMethyl files are stored both one file with summary counts from reads per haplotag (e.g. HP1, HP2 and ungrouped) and one file with summary counts from all reads. The methylation is also stored in the BAM files and can be viewed directly in IGV. +[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides general quality metrics for sequenced reads, including information on quality score distribution, per-base sequence content (%A/T/G/C), adapter contamination, and overrepresented sequences. For more details, refer to the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). -
    -Output files from Methylation +| Path | Description | +| ---------------------------------- | --------------------------------------------------------------- | +| `qc/fastqc/{sample}/*_fastqc.html` | FastQC report containing quality metrics | +| `qc/fastqc/{sample}/*_fastqc.zip` | Zip archive with the FastQC report, data files, and plot images | -- `{outputdir}/methylation/modkit/pileup/phased/{sample}/` +### Mosdepth - - `*.modkit_pileup_phased_*.bed.gz`: bedMethyl file containing summary counts from reads with haplotags, e.g. 1 or 2 - - `*.modkit_pileup_phased_ungrouped.bed.gz`: bedMethyl file containing summary counts for ungrouped reads - - `*.bed.gz.tbi`: Index of the corresponding bedMethyl file +[Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage and GC content from alignment files. -- `{outputdir}/methylation/modkit/pileup/unphased/{sample}/` - - `*.modkit_pileup.bed.gz`: bedMethyl file containing summary counts from all reads - - `*.bed.gz.tbi`: Index of the corresponding bedMethyl file -
    +| Path | Description | With `--target_regions` | Without `--target_regions` | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------- | -------------------------- | +| `qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | :white_check_mark: | :white_check_mark: | +| `qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | :white_check_mark: | :white_check_mark: | +| `qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions | :white_check_mark: | | +| `qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region | :white_check_mark: | +| `qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | :white_check_mark: | -### MultiQC +### Cramino -[MultiQC](http://multiqc.info) is a visualization tool that generates a single HTML report summarising all samples in your project. Most of the pipeline QC results are visualised in the report and further statistics are available in the report data directory. +[cramino](https://github.com/wdecoster/cramino) is used to analyze both phased and unphased reads. -Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQC. The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see . +| Path | Description | +| -------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `qc/cramino/phased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `qc/cramino/phased/{sample}/*.txt` | Summary information in text format | +| `qc/cramino/unphased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `qc/cramino/unphased/{sample}/*.txt` | Summary information in text format | -
    -Output files +### Somalier -- `{outputdir}/multiqc/` - - `multiqc_report.html`: a standalone HTML file that can be viewed in your web browser. - - `multiqc_data/`: directory containing parsed statistics from the different tools used in the pipeline. - - `multiqc_plots/`: directory containing static images from the report in various formats. -
    +[somalier](https://github.com/brentp/somalier) checks relatedness and sex. -### Paraphase +| Path | Description | +| ---------------------------------------------------- | ------------------------------------------------------ | +| `pedigree/family/{family).ped` | PED file updated with somalier-inferred sex per family | +| `qc/somalier/relate/{project}/{project}.html` | HTML report | +| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | +| `qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | -[Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. For interpreting the output, see . +### DeepVariant -
    -Output files from Paraphase +`vcf_stats_report.py` from [DeepVariant](https://github.com/google/deepvariant) is used to generate a html report per sample. -- `{outputdir}/paraphase/{sample}/` - - `*.bam`: BAM file with haplotypes grouped by HP and colored by YC - - `*.bai`: Index of the corresponding bam file. - - `*.json`: Output file summarizing haplotypes and variant calls - - `{sample}_paraphase_vcfs/`: - - `{sample}_{gene}_vcf`: VCF file per gene - - `{sample}_{gene}_vcf.tbi`: Index of the corresponding VCF file -
    +| Path | Description | +| --------------------------------------------------------------------- | ------------------------------------------- | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | -### Phasing +## Variants -[WhatsHap](https://whatshap.readthedocs.io/en/latest/) or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used to phase variants and haplotag reads. +In general, annotated variant calls are output per family while unannotated calls are output per sample. -
    -Output files from WhatsHap +### Paralogous genes -- `{outputdir}/aligned_reads/{sample}/` - - `{sample}_phased.bam`: BAM file with haplotags - - `{sample}_phased.bam.bai`: Index of the corresponding bam file -- `{outputdir}/phasing/whatshap/phase/{sample}/` - - `*.vcf.gz`: VCF file with phased variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/phasing/whatshap/stats/{sample}/` - - `*.blocks.tsv`: File with phase blocks - - `*.stats.tsv`: File with phasing statistics -
    +[Paraphase](https://github.com/PacificBiosciences/paraphase) is used to call paralogous genes. -
    -Output files from HiPhase +| Path | Description | +| ----------------------------------------------------------------------- | ----------------------------------------- | +| `paraphase/{sample}/*.bam` | BAM file with reads from analysed regions | +| `paraphase/{sample}/*.bai` | Index of the BAM file | +| `paraphase/{sample}/*.json` | Summary of haplotypes and variant calls | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.gz` | VCF file per gene | +| `paraphase/{sample}/{sample}_paraphase_vcfs/{sample}_{gene}_vcf.gz.tbi` | Index of the VCF file | -- `{outputdir}/aligned_reads/{sample}/` +### Repeats - - `{sample}_phased.bam`: BAM file with haplotags - - `{sample}_phased.bam.bai`: Index of the corresponding bam file - -- `{outputdir}/phasing/hiphase/{snv,sv}/{sample}/` - - - `*.blocks.tsv`: File with phase blocks - - `*.stats.tsv.gz`: File with phasing statistics - - `*.vcf.gz`: VCF file with phased variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file - - `*.summary.tsv`: HiPhase summary file - -
    - -### Pipeline information - -[Nextflow](https://www.nextflow.io/docs/latest/tracing.html) provides excellent functionality for generating various reports relevant to the running and execution of the pipeline. This will allow you to troubleshoot errors with the running of the pipeline, and also provide you with other information such as launch commands, run times and resource usage. - -
    -Output files - -- `pipeline_info/` - - Reports generated by Nextflow: `execution_report.html`, `execution_timeline.html`, `execution_trace.txt` and `pipeline_dag.dot`/`pipeline_dag.svg`. - - Reports generated by the pipeline: `pipeline_report.html`, `pipeline_report.txt` and `software_versions.yml`. The `pipeline_report*` files will only be present if the `--email` / `--email_on_fail` parameter's are used when running the pipeline. - - Reformatted samplesheet files used as input to the pipeline: `samplesheet.valid.csv`. - - Parameters used by the pipeline run: `params.json`. - -
    - -### Aligned read QC - -[cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth) and [somalier](https://github.com/brentp/somalier) are used for aligned read QC. - -##### Mosdepth - -[Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage, and GC content from alignment files. - -
    -Output files from Mosdepth - -- `{outputdir}/qc_aligned_reads/mosdepth/{sample}` - - `*.mosdepth.global.dist.txt`: This file contains a cumulative distribution indicating the proportion of total bases that were covered for at least a given coverage value across each chromosome and the whole genome - - `*.mosdepth.region.dist.txt`: This file contains a cumulative distribution indicating the proportion of total bases that were covered for at least a given coverage value across each region, is output if running the pipeline with a BED-file - - `*.mosdepth.summary.txt`: Mosdepth ummary file - - `*.regions.bed.gz`: Depth per region, is output if running the pipeline with a BED-file - - `*.regions.bed.gz.csi`: Index of regions.bed.gz -
    - -##### Cramino +[TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats. -[cramino](https://github.com/wdecoster/cramino) is run on both phased and unphased reads. +| Path | Description | Call repeats | Call & annotate repeats | +| --------------------------------------------------------------- | ----------------------------------------- | ------------------ | ----------------------- | +| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz` | Merged VCF file per family | :white_check_mark: | | +| `repeats/family/{family}/{family}_repeat_expansions.vcf.gz.tbi` | Index of the VCF file | :white_check_mark: | | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz` | VCF file with called repeats for a sample | :white_check_mark: | :white_check_mark: | +| `repeats/sample/{sample}/{sample}_sorted.vcf.gz.tbi` | Index of the VCF file | :white_check_mark: | :white_check_mark: | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bam` | BAM file with sorted spanning reads | :white_check_mark: | :white_check_mark: | +| `repeats/sample/{sample}/{sample}_spanning_sorted.bai` | Index of the BAM file | :white_check_mark: | :white_check_mark: | -
    -Output files from Cramino +[Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate repeats. -- `{outputdir}/qc_aligned_reads/cramino/phased/{sample}` - - `*.arrow`: Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format - - `*.txt`: Summary information in text format -- `{outputdir}/qc_aligned_reads/cramino/unphased/{sample}` - - `*.arrow`: Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format - - `*.txt`: Summary information in text format -
    +| Path | Description | Call repeats | Call & annotate repeats | +| ----------------------------------------------------------------------------------- | ------------------------------------- | ------------ | ----------------------- | +| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz` | Merged, annotated VCF file per family | | :white_check_mark: | +| `repeat_expansions/family/{family}/{family}_repeat_expansions_annotated.vcf.gz.tbi` | Index of the VCF file | | :white_check_mark: | -##### Somalier +### SNVs -[somalier](https://github.com/brentp/somalier) is used to check relatedness and sex. +[DeepVariant](https://github.com/google/deepvariant) is used to call variants, while [bcftools](https://samtools.github.io/bcftools/bcftools.html) and [GLnexus](https://github.com/dnanexus-rnd/GLnexus) are used for merging variants. -
    -Output files from Somalier +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------ | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `snvs/sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `snvs/stats/sample/*.stats.txt` | Variant statistics | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| `snvs/family/{family}/{family}_snv.vcf.gz` | VCF file containing called variants for all samples | :white_check_mark: | | | +| `snvs/family/{family}/{family}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | :white_check_mark: | | | -- `{outputdir}/qc_aligned_reads/somalier/relate/{project}/` - - `{project}.html`: HTML report - - `{project}.pairs.tsv`: Output information in sample pairs - - `{project}.samples.tsv`: Output information per sample -
    +#### Annotation -### Raw read QC +[Echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. -[cramino](https://github.com/wdecoster/cramino), [mosdepth](https://github.com/brentp/mosdepth) and [somalier](https://github.com/brentp/somalier) are used for aligned read QC. +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| --------------------------------------------------------- | ------------------------------------------------------------------------------ | --------- | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snvs_annotated.vcf.gz` | VCF file containing annotated variants with alternative genotypes for a sample | | :white_check_mark: | | +| `snvs/sample/{sample}/{sample}_snvs_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | +| `snvs/family/{family}/{family}_snvs_annotated.vcf.gz` | VCF file containing annotated variants per family | | :white_check_mark: | | +| `snvs/family/{family}/{family}_snvs_annotated.vcf.gz.tbi` | Index of the annotated VCF file | | :white_check_mark: | | -##### FastQC +#### Ranking -[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). +[GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SNVs and INDELs. -
    -Output files +| Path | Description | Call SNVs | Call & annotate SNVs | Call, annotate and rank SNVs | +| ---------------------------------------------------------------- | -------------------------------------------------------- | --------- | -------------------- | ---------------------------- | +| `snvs/sample/{sample}/{sample}_snvs_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants for a sample | | :white_check_mark: | +| `snvs/sample/{sample}/{sample}_snvs_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | :white_check_mark: | +| `snvs/family/{family}/{family}_snvs_annotated_ranked.vcf.gz` | VCF file with annotated and ranked variants per family | | | :white_check_mark: | +| `snvs/family/{family}/{family}_snvs_annotated_ranked.vcf.gz.tbi` | Index of the ranked VCF file | | | :white_check_mark: | -- `{outputdir}/qc_raw_reads/fastqc/{sample}/` - - `*_fastqc.html`: FastQC report containing quality metrics. - - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images. -
    +#### Filtering -### Repeat calling +[Filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. These will be output if either of `--filter_variants_hgnc_id` and `--filter_snvs_expression` has been used, and only family VCFs are filtered. -[TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats. +| Path | Description | +| ---------------------------------------------- | -------------------------------------------- | +| `snvs/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | +| `snvs/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | -
    -Output files from TRGT +!!!tip -- `{outputdir}/repeat_calling/trgt/multi_sample/{project}/` - - `*.vcf.gz`: Merged VCF for all samples - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/repeat_calling/trgt/single_sample/{sample}/` - - `*.vcf.gz`: VCF with called repeats - - `*.vcf.gz.tbi`: Index of the corresponding VCF file - - `*.bam`: BAM file with sorted spanning reads - - `*.bai`: Index of the corresponding bam file -
    + Filtered variants are output alongside unfiltered variants as additional files. -### Repeat annotation +### SVs (and CNVs) -[Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate repeats. +[Severus](https://github.com/KolmogorovLab/Severus) or [Sniffles](https://github.com/fritzsedlazeck/Sniffles) are used to call structural variants, while [HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs. HiFiCNV also produces copy number, depth, and MAF [visualization tracks](#visualization-tracks). -
    -Output files from Stranger +!!!info "Variant merging strategies" -- `{outputdir}/repeat_annotation/stranger/{sample}` - - `*.vcf.gz`: Annotated VCF - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -
    + SV and CNV calls are output unmerged per sample, while the family files are first merged between samples for SVs and CNVs separately, then the merged SV and CNV files are merged again, with priority given to coordinates from the SV calls. -### SNV Annotation +| Path | Description | Call SVs | Call CNVs | Call SVs & CNVs | +| --------------------------------------------------------------- | -------------------------------------------- | ------------------ | ------------------ | ------------------ | +| `svs/sample/{sample}/{sample}_svs.vcf.gz` | VCF file with SVs per sample | :white_check_mark: | | :white_check_mark: | +| `svs/sample/{sample}/{sample}_svs.vcf.gz.tbi` | VCF file with SVs per sample | :white_check_mark: | | :white_check_mark: | +| `svs/sample/{sample}/{sample}_cnvs.vcf.gz` | VCF file with CNVs per sample | | :white_check_mark: | :white_check_mark: | +| `svs/sample/{sample}/{sample}_cnvs.vcf.gz.tbi` | VCF file with CNVs per sample | | :white_check_mark: | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz` | VCF file with merged SVs per family | :white_check_mark: | | | +| `svs/family/{family_id}/{family_id}_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | :white_check_mark: | | | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz` | VCF file with merged CNVs and SVs per family | | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged.vcf.gz.tbi` | Index of the merged VCF file | | | :white_check_mark: | -[echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used to annotate small variants. -[bcftools](https://samtools.github.io/bcftools/) is used to generate statistics. +#### Annotation -
    -Output files from SNV Annotation +[SVDB](https://github.com/J35P312/SVDB) and [VEP](https://www.ensembl.org/vep) are used to annotate structural variants. -- `{outputdir}/databases/echtvar/encode/{project}/` - - `*.zip`: Database with AF and AC for all samples run -- `{outputdir}/snvs/{single_sample/{sample}/` - - `*_snvs_annotated*.vcf.gz`: VCF with annotated variants with alternative genotypes from a certain sample - - `*_snvs_annotated*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/multi_sample/{project}/` - - `*_snvs_annotated*.vcf.gz`: VCF with annotated variants from all samples - - `*_snvs_annotated*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/stats/single_sample/` - - `*.stats.txt`: Variant statistics -
    +| Path | Description | Call & annotate SVs |  Call & annotate SVs & CNVs | +| ------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------- | --------------------------- | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated CNVs and SVs per family | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz` | VCF file with merged and annotated SVs per family | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated.vcf.gz.tbi` | Index of the merged VCF file | :white_check_mark: | -### Ranked variants +#### Ranking -#### Filter_vep +[GENMOD](https://github.com/Clinical-Genomics/genmod) is used to rank the annotated SVs. -[filter_vep from VEP](https://www.ensembl.org/info/docs/tools/vep/script/vep_filter.html) is used to subset the variants based on a list of HGNC ID:s. Typical use case is that you want to filter your results to only include variants in a predefined set of clinically relevant genes. This step is optional and can be disabled by using the flag `--skip_vep_filter`. You will always get the complete VCF together with the clinical VCF. +| Path | Description | Rank SVs | Rank SVs & CNVs | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------ | ------------------ | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked CNVs and SVs per family | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_cnvs_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | | :white_check_mark: | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz` | VCF file with merged, annotated and ranked SVs per family | :white_check_mark: | | +| `svs/family/{family_id}/{family_id}_svs_merged_annotated_ranked.vcf.gz.tbi` | Index of the merged VCF file | :white_check_mark: | | -#### GENMOD +#### Filtering -[GENMOD](https://github.com/Clinical-Genomics/genmod) is a simple to use command line tool for annotating and analyzing genomic variations in the VCF file format. GENMOD can annotate genetic patterns of inheritance in vcf files with single or multiple families of arbitrary size. Each variant will be assigned a predicted pathogenicity score. The score will be given both as a raw score and a normalized score with values between 0 and 1. The tags in the INFO field are `RankScore` and `RankScoreNormalized`. The score can be configured to fit your annotations and preferences by modifying the score config file. +[Filter_vep](https://www.ensembl.org/vep) and [bcftools](https://samtools.github.io/bcftools/bcftools.html) can be used to filter variants. These will be output if either of `--filter_variants_hgnc_id` and `--filter_svs_expression` has been used, and only family VCFs are filtered. -
    -Output files +| Path | Description | +| --------------------------------------------- | -------------------------------------------- | +| `svs/{family}/{family}_*_filtered.vcf.gz` | VCF file with filtered variants for a family | +| `svs/{family}/{family}_*_filtered.vcf.gz.tbi` | Index of the filtered VCF file | -- `{outputdir}/snvs/single_sample/{sample}/` - - `{sample}_snv_annotated_ranked.vcf.gz`: VCF with annotated and ranked variants with alternative genotypes from a certain sample - - `{sample}_snv_annotated_ranked.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/snvs/multi_sample/{project}/` - - `{project}_snv_annotated_ranked.vcf.gz`: VCF with annotated and ranked variants from all samples - - `{project}_snv_annotated_ranked.vcf.gz.tbi`: Index of the corresponding VCF file -
    +!!!tip -### SV Calling + Filtered variants are output alongside unfiltered variants as additional files. -[Sniffles](https://github.com/fritzsedlazeck/Sniffles) is used to call and merge structural variants. +## Visualization Tracks -
    -Output files from SNV Calling +[HiFiCNV](https://github.com/PacificBiosciences/HiFiCNV) is used to call CNVs, but it also produces copy number, depth, and MAF tracks that can be visualized in for example IGV. -- `{outputdir}/sv_calling/multi_sample/{project}` - - `*.vcf.gz`: VCF with variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -- `{outputdir}/sv_calling/single_sample/{sample}` - - `*.snf`: Sniffles SNF file - - `*.vcf.gz`: VCF with variants - - `*.vcf.gz.tbi`: Index of the corresponding VCF file -
    +| Path | Description | +| -------------------------------------------------- | ----------------------------------------- | +| `visualization_tracks/{sample}/*.copynum.bedgraph` | Copy number in bedgraph format | +| `visualization_tracks/{sample}/*.depth.bw` | Depth track in BigWig format | +| `visualization_tracks/{sample}/*.maf.bw` | Minor allele frequencies in BigWig format | diff --git a/docs/parameters.md b/docs/parameters.md index 890af543..0acde4c8 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,177 +1,118 @@ +# genomic-medicine-sweden/nallo pipeline parameters +Long-read variant calling pipeline -# genomic-medicine-sweden/nallo pipeline parameters - -Long-read variant calling pipeline - -## Workflow skip options - -Allows skipping certain parts of the pipeline - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `skip_aligned_read_qc` | Skip QC of aligned reads | `boolean` | False | | | -| `skip_raw_read_qc` | Skip QC of unaligned (raw) reads | `boolean` | False | | | -| `skip_short_variant_calling` | Skip short variant calling | `boolean` | False | | | -| `skip_assembly_wf` | Skip genome assembly and assembly variant calling | `boolean` | False | | | -| `skip_mapping_wf` | Skip read mapping (alignment) | `boolean` | False | | | -| `skip_methylation_wf` | Skip generation of methylation pileups | `boolean` | False | | | -| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | -| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | -| `skip_phasing_wf` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | -| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | -| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | -| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | -| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | - -## Input/output options - -Define where the pipeline should find input data and save output data. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will -need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its -location. It has to be a comma-separated file with 3 columns, and a header row.
    | `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | -| True | | -| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary -e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to -specify this on the command line for every run.
    | `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | - -## Reference genome options - -Reference genome related files and options required for the workflow. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `fasta` | Reference genome | `string` | | | | -| `genome` | Name of iGenomes reference.
    HelpIf using a reference genome configured in the pipeline using -iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files -e.g. `--genome GRCh38`.

    See the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.
    | -`string` | | | | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running -the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in -`igenomes.config`.
    | `boolean` | True | | True | - -## Institutional config options - -Parameters used to describe centralised config profiles. These should not be edited. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will -not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you -should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | -https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | - -## Max job request options - -Set the top limit for requested resources for any single job. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `max_cpus` | Maximum number of CPUs that can be requested for any single job.
    HelpUse to set an upper-limit for -the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`
    | `integer` | 16 | | True | -| `max_memory` | Maximum amount of memory that can be requested for any single job.
    HelpUse 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'`
    | `string` | -128.GB | | True | -| `max_time` | Maximum amount of time that can be requested for any single job.
    HelpUse 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'`
    | `string` | 240.h | -| True | - -## Generic options - -Less common options for the pipeline, typically set in a config file. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `help` | Display help text. | `boolean` | | | True | -| `version` | Display version and exit. | `boolean` | | | True | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` -option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move -these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | -True | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send -a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS -Teams and Slack are supported.
    | `string` | | | True | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `validationShowHiddenParams` | Show all params when using `--help`
    HelpBy 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.
    | `boolean` | | | True | -| `validationSkipDuplicateCheck` | nf-validation related parameter | `boolean` | | | True | -| `validationS3PathCheck` | Boolean whether to validate validate AWS S3 paths | `boolean` | | | True | -| `monochromeLogs` | Boolean whether to color nf-validation logs | `boolean` | | | True | - -## Workflow options - -Workflow options specific to genomic-medicine-sweden/nallo - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | -True | | -| `variant_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | -| `phaser` | Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`) | `string` | whatshap | | | -| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | -| `parallel_alignments` | If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | -`integer` | 1 | | | -| `parallel_snv` | If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | -| -| `vep_cache_version` | VEP cache version | `integer` | 110 | | | -| `vep_plugin_files` | A csv file with paths to vep plugin files. pLI and LoFtool are required. | `string` | | | | -| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | -| True | - -## File inputs - -The different files that are required. Some are only required by certain workflows, see the usage documentation. - -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `cadd_prescored` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the -compressed files and indexes that would otherwise be in data/prescored folder as described in -https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed -files that would otherwise be in data/annotation folder as described in -https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | -| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | -| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | -| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | -| `snp_db` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | -| `variant_catalog` | A variant catalog json-file for stranger | `string` | | | | -| `variant_consequences_snv` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating -genomic SNVs.
    HelpFor more information check -https://ensembl.org/info/genome/variation/prediction/predicted_data.html
    | `string` | | | | -| `vep_cache` | A path to the VEP cache location | `string` | | | | -| `bed` | A BED file with regions of interest, used to limit short variant calling. | `string` | | | | -| `hificnv_xy` | A BED file containing expected copy number regions for XY samples. | `string` | | | | -| `hificnv_xx` | A BED file containing expected copy number regions for XX samples. | `string` | | | | -| `hificnv_exclude` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | -| `reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | -| `score_config_snv` | A SNV rank model config file for genmod. | `string` | | | | -| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | -| `validationFailUnrecognisedParams` | Validation of parameters fails when an unrecognised parameter is found. -
    HelpBy default, when an unrecognised parameter is found, it returns a warning.
    | `boolean` | | -| True | -| `validationLenientMode` | Validation of parameters in lenient more.
    HelpAllows string values that are parseable -as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode).
    | -`boolean` | | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ | | True | - +## Workflow skip options +Allows skipping certain parts of the pipeline +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `skip_qc` | Skip QC of reads | `boolean` | False | | | +| `skip_snv_calling` | Skip short variant calling | `boolean` | False | | | +| `skip_genome_assembly` | Skip genome assembly and assembly variant calling | `boolean` | False | | | +| `skip_alignment` | Skip read mapping (alignment) | `boolean` | False | | | +| `skip_methylation_pileups` | Skip generation of methylation pileups | `boolean` | False | | | +| `skip_repeat_calling` | Skip tandem repeat calling | `boolean` | False | | | +| `skip_repeat_annotation` | Skip tandem repeat annotation | `boolean` | False | | | +| `skip_phasing` | Skip phasing of variants and haplotagging of reads | `boolean` | False | | | +| `skip_snv_annotation` | Skip short variant annotation | `boolean` | False | | | +| `skip_sv_annotation` | Skip structural variant annotation | `boolean` | False | | | +| `skip_cnv_calling` | Skip CNV calling | `boolean` | False | | | +| `skip_call_paralogs` | Skip the calling of specific paralogous genes | `boolean` | False | | | +| `skip_rank_variants` | Skip ranking of short variants | `boolean` | False | | | + +## Input/output options + +Define where the pipeline should find input data and save output data. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row.
    | `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | +| `cadd_prescored_indels` | Path to a directory containing prescored indels for CADD.
    HelpThis folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `cadd_resources` | Path to a directory containing CADD annotations.
    HelpThis folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation.
    | `string` | | | | +| `par_regions` | Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant | `string` | | | | +| `tandem_repeats` | A tandem repeat BED file for sniffles | `string` | | | | +| `trgt_repeats` | A BED file with repeats to be genotyped with TRGT | `string` | | | | +| `echtvar_snv_databases` | A csv file with echtvar databases to annotate SNVs with | `string` | | | | +| `svdb_sv_databases` | Databases used for structural variant annotation in vcf format.
    HelpPath to comma-separated file containing information about the databases used for structural variant annotation.
    | `string` | | | | +| `stranger_repeat_catalog` | A variant catalog json-file for stranger | `string` | | | | +| `variant_consequences_snvs` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `variant_consequences_svs` | File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html | `string` | | | | +| `vep_cache` | A path to the VEP cache location | `string` | | | | +| `target_regions` | A BED file with regions of interest, used to limit variant calling. | `string` | | | | +| `hificnv_expected_xy_cn` | A BED file containing expected copy number regions for XY samples. | `string` | | | | +| `hificnv_expected_xx_cn` | A BED file containing expected copy number regions for XX samples. | `string` | | | | +| `hificnv_excluded_regions` | A BED file specifying regions to exclude with HiFiCNV, such as centromeres. | `string` | | | | +| `genmod_reduced_penetrance` | A file with gene ids that have reduced penetrance. For use with genmod. | `string` | | | | +| `genmod_score_config_snvs` | A SNV rank model config file for genmod. | `string` | | | | +| `genmod_score_config_svs` | A SV rank model config file for genmod. | `string` | | | | +| `somalier_sites` | A VCF of known polymorphic sites for somalier | `string` | | | | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/ | | True | + +## Reference genome options + +Reference genome related files and options required for the workflow. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `fasta` | Reference genome | `string` | | | | + +## Institutional config options + +Parameters used to describe centralised config profiles. These should not be edited. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | + +## Generic options + +Less common options for the pipeline, typically set in a config file. + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `version` | Display version and exit. | `boolean` | | | True | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | True | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | True | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | True | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | + +## Workflow options + +Workflow options specific to genomic-medicine-sweden/nallo + +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `preset` | Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`) | `string` | revio | True | | +| `snv_caller` | Which short variant software to use (`deepvariant`) | `string` | deepvariant | | | +| `sv_caller` | Which structural variant caller to use (`severus`, `sniffles`) | `string` | severus | | | +| `phaser` | Which phasing software to use (`longphase`, `whatshap`, `hiphase`) | `string` | longphase | | | +| `hifiasm_mode` | Run hifiasm in hifi-only or hifi-trio mode (`hifi-only`, `trio-binning`) | `string` | hifi-only | | | +| `alignment_processes` | If alignment_processes is bigger than 1, input files will be split and aligned in parallel to reduce processing time. | `integer` | 8 | | | +| `snv_calling_processes` | If snv_calling_processes is bigger than 1, short variant calling will be done in parallel to reduce processing time. | `integer` | 13 | | | +| `vep_cache_version` | VEP cache version | `integer` | 110 | | | +| `vep_plugin_files` | A csv file with vep_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required. | `string` | | | | +| `filter_variants_hgnc_ids` | A tsv/csv file with a `hgnc_ids` column header, and then one numerical HGNC ID per row. E.g. `4281` or `HGNC:4281`. | `string` | | | | +| `filter_snvs_expression` | An expression that is passed to bcftools view to filter SNVs, e.g. --filter_snvs_expression "-e 'INFO/AQ>60'" | `string` | | | | +| `filter_svs_expression` | An expression that is passed to bcftools view to filter SVs, e.g. --filter_svs_expression "-e 'INFO/AQ>60'" | `string` | | | | +| `deepvariant_model_type` | Sets the model type used for DeepVariant. This is set automatically using `--preset` by default. | `string` | PACBIO | | True | +| `minimap2_read_mapping_preset` | Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default. | `string` | map-hifi | | True | +| `extra_modkit_options` | Extra options to modkit, used for test profile. | `string` | | | True | +| `extra_vep_options` | Extra options to VEP, used for test profile. | `string` | | | True | +| `extra_paraphase_options` | Extra options to Paraphase, used for test profile. | `string` | | | True | +| `extra_hifiasm_options` | Extra options to hifiasm, used for test profile. | `string` | | | True | diff --git a/docs/usage.md b/docs/usage.md index c4ed524c..1f95dcb3 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,14 +1,13 @@ # genomic-medicine-sweden/nallo: Usage -## Introduction - -genomic-medicine-sweden/nallo is a bioinformatics analysis pipeline to analyse long-read data. - ## Prerequisites -1. Install Nextflow (>=22.10.1) using the instructions [here.](https://nextflow.io/docs/latest/getstarted.html#installation) +1. Install Nextflow (>=24.04.2) using the instructions [here.](https://nextflow.io/docs/latest/getstarted.html#installation) 2. Install one of the following technologies for full pipeline reproducibility: Docker, Singularity, Podman, Shifter or Charliecloud. - > Almost all nf-core pipelines give you the option to use conda as well. However, some tools used in the nallo pipeline do not have a conda package so we do not support conda at the moment. + +!!!warning + + Almost all nf-core pipelines give you the option to use conda as well. However, some tools used in genomic-medicine-sweden/nallo do not have a conda package so we do not support conda at the moment. ## Getting started @@ -22,8 +21,10 @@ nextflow run genomic-medicine-sweden/nallo \ --outdir ``` -> Check [nf-core/configs](https://github.com/nf-core/configs/tree/master/conf) to see if a custom config file to run nf-core pipelines already exists for your institute. If so, you can simply use `-profile test,` in your command. This enables the appropriate package manager and sets the appropriate execution settings for your machine. -> NB: The order of profiles is important! They are loaded in sequence, so later profiles can overwrite earlier profiles. +!!!note + + Check [nf-core/configs](https://github.com/nf-core/configs/tree/master/conf) to see if a custom config file to run nf-core pipelines already exists for your institute. If so, you can simply use `-profile test,` in your command. This enables the appropriate package manager and sets the appropriate execution settings for your machine. + NB: The order of profiles is important! They are loaded in sequence, so later profiles can overwrite earlier profiles. Running the command creates the following files in your working directory @@ -34,8 +35,9 @@ work # Directory containing the Nextflow working files # Other Nextflow hidden files, like history of pipeline logs. ``` -> [!NOTE] -> The default cpu and memory configurations used in nallo are written keeping the test profile (and dataset, which is tiny) in mind. You should override these values in configs to get it to work on larger datasets. Check the section `custom-configuration` below to know more about how to configure resources for your platform. +!!!note + + The default cpu and memory configurations used in nallo are written keeping the test profile (and dataset, which is tiny) in mind. You should override these values in configs to get it to work on larger datasets. Check the section `custom-configuration` below to know more about how to configure resources for your platform. ### Updating the pipeline @@ -45,9 +47,9 @@ The above command downloads the pipeline from GitHub, caches it, and tests it on Running the pipeline on real data involves three steps: -1. Preparing a samplesheet with your data -2. Gather required files and references -3. Supply samplesheet, refeferences and files and run the pipeline +1. Prepare a samplesheet with your data +2. Gather the required files and references +3. Supply the samplesheet, reference files and run the pipeline ## Samplesheet @@ -57,7 +59,7 @@ First, you will need to create a samplesheet with information about the samples --input '[path to samplesheet file]' ``` -It has to be a comma-separated file with 7 columns, and a header row as shown in the example below: +It has to be a comma-separated file with seven columns and a header row, as shown in the example below: ```console project,sample,file,family_id,paternal_id,maternal_id,sex,phenotype @@ -67,7 +69,7 @@ testrun,HG003,/path/to/HG003.bam,FAM,0,0,2,1 | Fields | Description | | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `project` | Project name must be provided and cannot contain spaces, needs to be the same for all samples." | +| `project` | Project name must be provided and cannot contain spaces, needs to be the same for all samples. | | `sample` | Custom sample name, cannot contain spaces. | | `file` | Absolute path to gzipped FASTQ or BAM file. File has to have the extension ".fastq.gz", .fq.gz" or ".bam". | | `family_id` | Family ID must be provided and cannot contain spaces. If no family ID is available use the same ID as sample. | @@ -76,165 +78,176 @@ testrun,HG003,/path/to/HG003.bam,FAM,0,0,2,1 | `sex` | Sex must be provided as 0, 1 or 2 (0=unknown; 1=male; 2=female). If sex is unknown it will be assigned automatically if possible. | | `phenotype` | Affected status of patient (0 = missing; 1=unaffected; 2=affected). | -An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. +## Presets -## Preset +This pipeline comes with three different presets that should be set with the `--preset` parameter: `revio` (default), `pacbio` or `ONT_R10`. The preset parameter controls certain technology specific tools and parameters. -This pipeline comes with three different presets that should be set with the `--preset` parameter +!!!info "Preset effects on subworkflows" -- `revio` (default) -- `pacbio` -- `ONT_R10` - -`--skip_assembly_wf` and `--skip_repeat_wf` will be set to true for `ONT_R10` and `--skip_methylation_wf` will be set to true for `pacbio`, meaning these subworkflows are not run. + - `--skip_genome_assembly` and `--skip_repeat_wf` will be set to `true` for `ONT_R10` + - `--skip_methylation_pileups` will be set to `true` for `pacbio` ## Subworkflows -As indicated above, this pipeline is divided into multiple subworkflows, each with its own input requirements and outputs. By default, all subworklows are active, and thus all mandatory input files are required. +As indicated above, this pipeline is divided into multiple subworkflows, each with their own input requirements and outputs. By default all subworklows are active, and thus all mandatory input files are required. + +### Required parameters -The only parameter mandatory for all subworkflows is the `--input` and `--outdir` parameters, all other parameters are determined by the active subworkflows. If you would run `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv` +The only mandatory parameters for all subworkflows are the `--input` and `--outdir` parameters, all other parameters are determined by the active subworkflows. + +For example, if you would run `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv`, the pipeline will would to guide you through which files are required: ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --skip_assembly_wf is NOT active, the following files are required: --dipcall_par - --skip_snv_annotation is NOT active, the following files are required: --snp_db - --skip_mapping_wf is NOT active, the following files are required: --somalier_sites + --skip_genome_assembly is NOT active, the following files are required: --par_regions + --skip_snv_annotation is NOT active, the following files are required: --echtvar_snv_databases + --skip_alignment is NOT active, the following files are required: --somalier_sites --skip_snv_annotation is NOT active, the following files are required: --vep_cache ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` -The pipeline will try to guide you through which files are required, but a thorough description is provided below. +A thorough description of the required files are provided below. + +### Skipping subworkflows -Additionally, if you want to skip a subworkflow, you will need to explicitly state to skip all subworklow that relies on it. For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_mapping_wf` will tell you +If you want to skip a subworkflow, you will need to explicitly state to skip all subworkflows that rely on it. + +For example, `nextflow run genomic-medicine-sweden/nallo -profile docker --outdir results --input samplesheet.csv --skip_alignment` will tell you ``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --skip_mapping_wf is active, the pipeline has to be run with: --skip_aligned_read_qc --skip_assembly_wf --skip_call_paralogs --skip_short_variant_calling --skip_snv_annotation --skip_cnv_calling --skip_phasing_wf --skip_rank_variants --skip_repeat_calling --skip_repeat_annotation --skip_methylation_wf + --skip_alignment is active, the pipeline has to be run with: --skip_qc --skip_genome_assembly --skip_call_paralogs --skip_snv_calling --skip_snv_annotation --skip_cnv_calling --skip_phasing --skip_rank_variants --skip_repeat_calling --skip_repeat_annotation --skip_methylation_pileups ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` Because almost all other subworkflows relies on the mapping subworkflow. -If you want to run the pipeline without any other input files than `--input samplesheet.csv`, all of the above skips will need to be active, and the pipeline will run only unaligned read QC. - ## Reference files and parameters -As descibed above, the files required depend on the active subworkflows. All parameters are listed [here](parameters.md), but the most useful parameters needed to run the pipeline described in more detail below. +All parameters are listed in the [parameters section](parameters.md), but the most useful parameters needed to run the pipeline described in more detail below. -### Raw read QC (`--skip_raw_read_qc`) +### Alignment -This subworkflow requires no additional files. +The majority of subworkflows depend on the alignment subworkflow which requires `--fasta` and `--somalier_sites`. -### Mapping (`--skip_mapping_wf`) +| Parameter | Description | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fasta` | Reference genome, either gzipped or uncompressed (e.g. [GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz](https://lh3.github.io/2017/11/13/which-human-reference-genome-to-use)) | +| `somalier_sites` | A VCF with known polymorphic sites from which sex will be inferred, if possible (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)) | -The majority of subworkflows depend on the mapping (alignment) subworkflow which requires `--fasta` and `--somalier_sites`. +Turned off with `--skip_alignment`. -| Parameter | Description | -| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `fasta` | Reference genome, either gzipped or uncompressed FASTA (e.g. [GRCh38_no_alt_analysis_set.fna.gz](ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz)) | -| `somalier_sites` | A VCF of known polymorphic sites (e.g. [sites.hg38.vcg.gz](https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz)), from which sex will be inferred if possible. | +### QC -### Aligned read QC (`--skip_aligned_read_qc`) +This subworkflow depends on the alignment subworkflow, but requires no additional files. -This subworkflow depends on the mapping subworkflow, but requires no additional files. +Turned off with `--skip_qc`. -### Assembly (`--skip_assembly_wf`) +### Assembly -This subworkflow contains both genome assembly and assembly variant calling. The assemblyt variant calling needs the sex of samples and for samples with unknown sex this is inferred from aligned reads, therefore it depends on the mapping subworkflow. +This subworkflow contains both genome assembly and assembly variant calling. The assembly variant calling needs the sex of samples. For samples with unknown sex this is inferred with the help of the aligned reads. Therefore it depends on the alignment subworkflow. It requires a BED file with PARs. -It requires a BED file with PAR regions. +| Parameter | Description | +| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](https://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | -| Parameter | Description | -| ------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](ttps://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | +!!!warning + + Make sure chrY PAR is hard masked (masked with the letter N) in the reference genome you are using. -> [!NOTE] -> Make sure chrY PAR is hard masked in reference genome you are using. +Turned off with `--skip_genome_assembly`. -### Call paralogs (`--skip_call_paralogs`) +### Call paralogs This subworkflow depends on the mapping subworkflow, but requires no additional files. -> [!NOTE] -> Only GRCh38 is supported. +!!!warning + + Only GRCh38 is supported. + +Turned off with `--skip_call_paralogs`. -### Short variant calling (`--skip_short_variant_calling`) +### SNV calling -This subworkflow depends on the mapping subworkflow, and required the same PAR regions file as the assembly workflow. +This subworkflow depends on the alignment subworkflow, and requires PARs. | Parameter | Description | | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `par_regions` | A BED file with PAR regions (e.g. [GRCh38_PAR.bed](ttps://storage.googleapis.com/deepvariant/case-study-testdata/GRCh38_PAR.bed)) | -### CNV calling (`--skip_cnv_calling`) +Turned off with `--skip_snv_calling`. + +### CNV calling + +This subworkflow depends on the alignment and SNV calling subworkflows, and requires the following additional files: + +| Parameter | Description | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `hificnv_expected_xy_cn` | Expected XY copy number regions for your reference genome (e.g. [expected_cn.hg38.XY.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XY.bed)) | +| `hificnv_expected_xx_cn` | Expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | +| `hificnv_excluded_regions` | BED file specifying regions to exclude (e.g. [cnv.excluded_regions.hg38.bed.gz](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/excluded_regions/cnv.excluded_regions.hg38.bed.gz)) | + +Turned off with `--skip_cnv_calling`. -This subworkflow depends on the mapping and short variant calling subworkflows, and requires the following additional files: +### Phasing -| Parameter | Description | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `hificnv_xy` | expected XY copy number regions for your reference genome (e.g. [expected_cn.hg38.XY.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XY.bed)) | -| `hificnv_xx` | expected XX copy number regions for your reference genome (e.g. [expected_cn.hg38.XX.bed](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/expected_cn/expected_cn.hg38.XX.bed)) | -| `hificnv_exclude` | BED file specifying regions to exclude (e.g. [cnv.excluded_regions.hg38.bed.gz](https://github.com/PacificBiosciences/HiFiCNV/raw/main/data/excluded_regions/cnv.excluded_regions.hg38.bed.gz)) | +This subworkflow phases variants and haplotags aligned BAM files, and such relies on the alignment and SNV calling subworkflows, but requires no additional files. -### Phasing (`--skip_phasing_wf`) +Turned off with `--skip_phasing`. -This subworkflow phases variants and haplotags aligned BAM files, and such relies on the mapping and short variant calling subworkflows, but requires no additional files. +### Methylation pileups -### Methylation (`--skip_methylation_wf`) +This subworkflow relies on alignment and short variant calling subworkflows, but requires no additional files. -This subworkflow relies on mapping, short variant calling and phasing subworkflows, but requires no additional files. +Turned off with `--skip_methylation_pileups`. -### Repeat calling (`--skip_repeat_calling`) +### Repeat calling -This subworkflow requires haplotagged BAM files, and such relies on the mapping, short variant calling and phasing subworkflows, and requires the following additional files: +This subworkflow requires haplotagged BAM files, and such relies on aligment, SNV calling and phasing subworkflows. It requires the following additional files: -| Parameter | Description | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](<[https://github.com/PacificBiosciences/trgt/tree/main/repeats](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)>)) | +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `trgt_repeats` | a BED file with tandem repeats matching your reference genome (e.g. [pathogenic_repeats.hg38.bed](https://github.com/PacificBiosciences/trgt/raw/main/repeats/pathogenic_repeats.hg38.bed)) | -### Repeat annotation (`--skip_repeat_annotation`) +Turned off with `--skip_repeat_calling`. -This subworkflow relies on the mapping, short variant calling, phasing and repeat calling subworkflows, and requires the following additional files: +### Repeat annotation -| Parameter | Description | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `variant_catalog` | a variant catalog matching your reference (e.g. [variant_catalog_grch38.json](https://github.com/Clinical-Genomics/stranger/raw/main/stranger/resources/variant_catalog_grch38.json)) | +This subworkflow relies on the alignment, SNV calling, phasing and repeat calling subworkflows. It requires the following additional files: -### SNV annotation (`--skip_snv_annotation`) +| Parameter | Description | +| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `stranger_repeat_catalog` | a variant catalog matching your reference (e.g. [stranger_repeat_catalog_grch38.json](https://github.com/Clinical-Genomics/stranger/raw/main/stranger/resources/stranger_repeat_catalog_grch38.json)) | -This subworkflow relies on the mapping and short variant calling, and requires the following additional files: +Turned off with `--skip_repeat_annotation`. - +### SNV annotation -| Parameter | Description | -| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `vep_cache` | VEP cache matching your reference genome, either as a `.tar.gz` archive or path to a directory (e.g. [homo_sapiens_vep_110_GRCh38.tar.gz](https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz)) | -| `vep_plugins` 1 | A csv file with VEP plugin files, pLI and LoFtool are required. Example provided below. | -| `snp_db` 2 |  A csv file with annotation databases from ([`echtvar encode`](https://github.com/brentp/echtvar)) (e.g. [gnomad.v3.1.2.echtvar.popmax.v2.zip](https://surfdrive.surf.nl/files/index.php/s/LddbAYQAYPqtYu6/download)) | -| `variant_consequences_snv` | A list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://ensembl.org/info/genome/variation/prediction/predicted_data.html) | +This subworkflow relies on the alignment and SNV calling, and requires the following additional files: -1 Example file for input with `--vep_plugins` + -- If running without `--skip_snv_annotation`, `--variant_consequences_snv` is also required (File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://grch37.ensembl.org/info/genome/variation/prediction/predicted_data.html)). +| Parameter | Description | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `vep_cache` | VEP cache matching your reference genome, either as a `.tar.gz` archive or path to a directory (e.g. [homo_sapiens_vep_110_GRCh38.tar.gz](https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz)) | +| `vep_plugin_files` 1 | A csv file with VEP plugin files, pLI and LoFtool are required. Example provided below. | +| `echtvar_snv_databases` 2 | A csv file with annotation databases from [echtvar encode](https://github.com/brentp/echtvar) (e.g. [`gnomad.v3.1.2.echtvar.popmax.v2.zip`](https://surfdrive.surf.nl/files/index.php/s/LddbAYQAYPqtYu6/download)) | +| `variant_consequences_snvs` | A list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic and mitochondrial SNVs. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/variant_consequences_v2.txt). You can learn more about these terms [here](https://ensembl.org/info/genome/variation/prediction/predicted_data.html) | + +1 Example file for input with `--vep_plugin_files` ``` vep_files -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/LoFtool.pm -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_snv_-v1.3-.vcf.gz -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/dbNSFP.pm -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/plugin_config.txt https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_indel_-v1.3-.vcf.gz.tbi https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_indel_-v1.3-.vcf.gz https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/spliceai_21_scores_raw_snv_-v1.3-.vcf.gz.tbi https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/pLI_values.txt -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/pLI.pm -https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/MaxEntScan.pm https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo/reference/vep_plugins/LoFtool_scores.txt ``` -2 Example file for input with `--vep_plugins`: +2 Example file for input with `--echtvar_snv_databases`: ``` sample,file @@ -242,25 +255,80 @@ gnomad,/path/to/gnomad.v3.1.2.echtvar.popmax.v2.zip cadd,/path/to/cadd.v1.6.hg38.zip ``` -> [!NOTE] -> Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--snp_db`. +!!!tip + + Optionally, to calcuate CADD scores for small indels, supply a path to a folder containing cadd annotations with `--cadd_resources` and prescored indels with `--cadd_prescored_indels`. Equivalent of the `data/annotations/` and `data/prescored/` folders described [here](https://github.com/kircherlab/CADD-scripts/#manual-installation). CADD scores for SNVs can be annotated through echvtvar and `--echtvar_snv_databases`. + +Turned off with `--skip_snv_annotation`. + +### Rank SNVs and INDELs -### Rank variants (`--skip_rank_variants`) +This subworkflow ranks SNVs, and relies on the alignment, SNV calling and SNV annotation subworkflows. It requires the following additional files: -This subworkflow relies on the mapping, short variant calling and SNV annotation subworkflows, and requires the following additional files: +| Parameter | Description | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `genmod_score_config_snvs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini) | +| `genmod_reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | -| Parameter | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `score_config_snv` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini). | -| `reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv)) | +Turned off with `--skip_rank_variants`. -### Other highlighted parameters +### SV annotation -- Limit SNV calling to regions in BED file (`--bed`). -- By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Limit this by setting `--parallel_snv` to a different number. -- By default the pipeline does not perform parallel alignment, but this can be changed by setting `--parallel_alignments` to split the alignment into multiple processes. This comes with some additional overhead, but speeds up the alignment significantly. +This subworkflow relies on the alignment subworkflow, and requires the following additional files: -### Reproducibility +| Parameter | Description | +| -------------------------------- | --------------------------------------------------------------------- | +| `svdb_sv_databases` 1 | Csv file with databases (VCFs) used for structural variant annotation | + +1 Example file for input with `--svdb_sv_databases`: + +``` +filename,in_freq_info_key,in_allele_count_info_key,out_freq_info_key,out_allele_count_info_key +https://github.com/genomic-medicine-sweden/test-datasets/raw/b9ff54b59cdd39df5b6e278a30b08d94075a644c/reference/colorsdb.test_data.vcf.gz,AF,AC,colorsdb_af,colorsdb_ac +``` + +These databases could for example come from [CoLoRSdb](https://zenodo.org/records/13145123). + +Turned off with `--skip_sv_annotation`. + +### Rank SVs + +This subworkflow ranks SVs, and relies on the mapping, SV calling and SV annotation subworkflows, and requires the following additional files: + +| Parameter | Description | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `genmod_score_config_svs` |  Used by GENMOD when ranking variants. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/rank_model_snv.ini) | +| `genmod_reduced_penetrance` | A list of loci that show [reduced penetrance](https://medlineplus.gov/genetics/understanding/inheritance/penetranceexpressivity/) in people. Sample file [here](https://github.com/nf-core/test-datasets/blob/raredisease/reference/reduced_penetrance.tsv) | + +`--skip_rank_variants`. + +### Filter variants + +This subworkflow filters SNVs and SVs. It required at least the alignment and SNV calling workflows, but most of the time also the SNV annotation and ranking workflows. + +| Parameter | Description | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter_variants_hgnc_ids` 1 |  Used by filter_vep to filter variants on HGNC IDs. Requires a tsv/csv file with a `hgnc_ids` column, that has one numerical HGNC ID per row, e.g. `4281` or `HGNC:4281`. | +| `filter_snvs_expression` | An expression that is passed to bcftools view to filter SNVs, e.g. `--filter_snvs_expression "-e 'INFO/AQ>60'"` | +| `filter_svs_expression` | An expression that is passed to bcftools view to filter SVs, e.g.`--filter_snvs_expression "-e 'INFO/AQ>60'"` | + +1 Example file for input with `--filter_variants_hgnc_ids`: + +``` +hgnc_id +4865 +14150 +``` + +Filtering of variants only happens if any of these three parameters is active. + +## Other highlighted parameters + +- Limit SNV calling to regions in BED file (`--target_bed`). +- By default SNV-calling is split into 13 parallel processes, this speeds up the variant calling significantly. Change this by setting `--snv_calling_processes` to a different number. +- By default the pipeline splits the input files into 8 pieces, performs parallel alignment and then merges the files. This can be changed to a different number with `--alignment_processes`, or turned off by supplying a value of 1. Parallel alignment comes with some additional overhead, but can speed up the pipeline significantly. + +## Reproducibility It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. @@ -270,13 +338,15 @@ This version number will be logged in reports when you run the pipeline, so that To further assist in reproducbility, you can use share and re-use [parameter files](#running-the-pipeline) to repeat pipeline runs with the same settings without having to write out a command with every single parameter. -> [!TIP] -> If you wish to share such profile (such as upload as supplementary material for academic publications), make sure to NOT include cluster specific paths to files, nor institutional specific profiles. +!!!tip + + If you wish to share such profile (such as upload as supplementary material for academic publications), make sure to NOT include cluster specific paths to files, nor institutional specific profiles. ## Core Nextflow arguments -> [!NOTE] -> These options are part of Nextflow and use a _single_ hyphen (pipeline parameters use a double-hyphen). +!!!note + + These options are part of Nextflow and use a _single_ hyphen (pipeline parameters use a double-hyphen). ### `-profile` @@ -349,14 +419,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. @@ -377,21 +439,12 @@ NXF_OPTS='-Xms1g -Xmx4g' ## Running the pipeline without internet access -The pipeline and container images can be downloaded using [nf-core tools](https://nf-co.re/docs/usage/offline). For running offline, you of course have to make all the reference data available locally, and specify `--fasta`, etc., see [above](#reference-files-and-parameters). - -Contrary to the paragraph about [Nextflow](https://nf-co.re/docs/usage/offline#nextflow) on the page linked above, it is not possible to use the "-all" packaged version of Nextflow for this pipeline. The online version of Nextflow is necessary to support the necessary nextflow plugins. Download instead the file called just `nextflow`. Nextflow will download its dependencies when it is run. Additionally, you need to download the nf-validation plugin explicitly: +### Download pipeline and containers -``` -./nextflow plugin install nf-validation -``` +The pipeline and container images can be downloaded using `nf-core download`, e.g.: -Now you can transfer the `nextflow` binary as well as its directory `$HOME/.nextflow` to the system without Internet access, and use it there. It is necessary to use an explicit version of `nf-validation` offline, or Nextflow will check for the most recent version online. Find the version of nf-validation you downloaded in `$HOME/.nextflow/plugins`, then specify this version for `nf-validation` in your configuration file: - -``` -plugins { - // Set the plugin version explicitly, otherwise nextflow will look for the newest version online. - id 'nf-validation@1.1.3' -} +```bash +nf-core download genomic-medicine-sweden/nallo -r 0.3.2 ``` -This should go in your Nextflow confgiguration file, specified with `-c ` when running the pipeline. +The [offline section](https://nf-co.re/docs/usage/offline#nextflow) from the nf-core docs should be followed for more information about offline usage. diff --git a/main.nf b/main.nf index da4bb096..aab29291 100644 --- a/main.nf +++ b/main.nf @@ -6,9 +6,6 @@ Github : https://github.com/genomic-medicine-sweden/nallo ---------------------------------------------------------------------------------------- */ - -nextflow.enable.dsl = 2 - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS @@ -18,7 +15,6 @@ nextflow.enable.dsl = 2 include { NALLO } from './workflows/nallo' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_nallo_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_nallo_pipeline' - include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_nallo_pipeline' /* @@ -36,6 +32,7 @@ workflow GENOMICMEDICINESWEDEN_NALLO { samplesheet // channel: samplesheet read in from --input main: + // // WORKFLOW: Run pipeline // @@ -56,13 +53,11 @@ workflow GENOMICMEDICINESWEDEN_NALLO { workflow { main: - // // SUBWORKFLOW: Run initialisation tasks // PIPELINE_INITIALISATION ( params.version, - params.help, params.validate_params, params.monochrome_logs, args, diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..418a2604 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,66 @@ +# based on: https://github.com/nf-cmgg/structural/blob/master/mkdocs.yml +site_name: genomic-medicine-sweden/nallo +repo_name: genomic-medicine-sweden/nallo +repo_url: https://github.com/genomic-medicine-sweden/nallo +site_url: https://genomic-medicine-sweden.github.io/nallo + +nav: + - Home: index.md + - Usage: usage.md + - Output: output.md + - Parameters: parameters.md + - Citations: CITATIONS.md + +theme: + name: material + icon: + logo: octicons/checklist-16 + repo: fontawesome/brands/github + palette: + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: custom + accent: custom + toggle: + icon: material/weather-sunny + name: Switch to light mode + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + primary: custom + accent: custom + toggle: + icon: material/weather-night + name: Switch to dark mode + font: + text: Inter + features: + - content.code.annotate + - content.code.copy + - navigation.instant + - navigation.top + - navigation.tracking + - navigation.sections + - navigation.footer + - search.share + - toc.follow + +markdown_extensions: + - attr_list + - md_in_html + - admonition + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + +extra: + version: + provider: mike diff --git a/modules.json b/modules.json index 94687dcd..0e060712 100644 --- a/modules.json +++ b/modules.json @@ -7,245 +7,298 @@ "nf-core": { "bcftools/annotate": { "branch": "master", - "git_sha": "682f789f93070bd047868300dd018faf3d434e7c", - "installed_by": ["modules"] + "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", + "installed_by": ["modules"], + "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, "bcftools/concat": { "branch": "master", - "git_sha": "cdf83b18471db290a28fe98c2a0852cb05864890", + "git_sha": "d1e0ec7670fa77905a378627232566ce54c3c26d", "installed_by": ["modules"] }, "bcftools/index": { "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, - "bcftools/merge": { + "bcftools/norm": { "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, - "bcftools/norm": { + "bcftools/pluginsplit": { "branch": "master", - "git_sha": "33ef773a7ea36e88323902f63662aa53c9b88988", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, - "bcftools/pluginsplit": { + "bcftools/query": { "branch": "master", - "git_sha": "c5abf7acbb2943bf09f4025cacbbcc2bc2292637", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/reheader": { "branch": "master", - "git_sha": "682f789f93070bd047868300dd018faf3d434e7c", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", - "git_sha": "cdf83b18471db290a28fe98c2a0852cb05864890", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/stats": { "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/view": { "branch": "master", - "git_sha": "34ac993e081b32d2170ab790d0386b74122f9d36", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/merge": { "branch": "master", - "git_sha": "a3d614e4a7b8691a259bcfe33ad80903217d6215", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/sort": { "branch": "master", - "git_sha": "571a5feac4c9ce0a8df0bc15b94230e7f3e8db47", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "cadd": { "branch": "master", - "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", - "installed_by": ["modules"] + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/cadd/cadd.diff" }, "cat/fastq": { "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "a1abf90966a2a4016d3c3e41e228bfcbd4811ccc", "installed_by": ["modules"] }, - "deepvariant": { + "deepvariant/rundeepvariant": { "branch": "master", - "git_sha": "a7e8b8afd4fa82f20d745fa778bfdbf39c1f7efb", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, - "ensemblvep/vep": { + "deepvariant/vcfstatsreport": { + "branch": "master", + "git_sha": "2f9a5431355897e299cb41928c45f51ea8410c42", + "installed_by": ["modules"] + }, + "ensemblvep/filtervep": { "branch": "master", - "git_sha": "e1938f8ecb13b9b82ff488d4b35269c84aa965e8", + "git_sha": "6e3585d9ad20b41adc7d271009f8cb5e191ecab4", "installed_by": ["modules"] }, + "ensemblvep/vep": { + "branch": "master", + "git_sha": "6e3585d9ad20b41adc7d271009f8cb5e191ecab4", + "installed_by": ["modules"], + "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" + }, "fastqc": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gawk": { "branch": "master", - "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", + "git_sha": "97321eded31a12598837a476d3615300af413bb7", "installed_by": ["modules"] }, "genmod/annotate": { "branch": "master", - "git_sha": "043f1164b94bcaf7b9810db243a8c37c66298077", + "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", "installed_by": ["modules"] }, "genmod/compound": { "branch": "master", - "git_sha": "89fe39b745da3dca14ad1a361784812ea3aa3a43", + "git_sha": "91a84f951358143e93dc9e03470db4e6a4a7105c", "installed_by": ["modules"] }, "genmod/models": { "branch": "master", - "git_sha": "043f1164b94bcaf7b9810db243a8c37c66298077", + "git_sha": "f888300c726e1f817a9f93a680866ff7e6c669f6", "installed_by": ["modules"] }, "genmod/score": { "branch": "master", - "git_sha": "043f1164b94bcaf7b9810db243a8c37c66298077", + "git_sha": "f888300c726e1f817a9f93a680866ff7e6c669f6", "installed_by": ["modules"] }, "gfastats": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "glnexus": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "git_sha": "bcf36bc95e3e5605e9859b8e9a49648841e04fe8", + "installed_by": ["modules"], + "patch": "modules/nf-core/glnexus/glnexus.diff" }, "gunzip": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "hifiasm": { "branch": "master", - "git_sha": "aecb06fcdb995ff3e3df7c7a1fd119367d6d1996", + "git_sha": "daa15d5226111e10ca95c0d4a85fa6bd11a08a01", + "installed_by": ["modules"] + }, + "longphase/haplotag": { + "branch": "master", + "git_sha": "22fc6d90be8eca2cf6afe5d10b3c5cffcdbcb19c", + "installed_by": ["modules"] + }, + "longphase/phase": { + "branch": "master", + "git_sha": "22fc6d90be8eca2cf6afe5d10b3c5cffcdbcb19c", "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", - "git_sha": "a33ef9475558c6b8da08c5f522ddaca1ec810306", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", - "git_sha": "72e277acfd9e61a9f1368eafb4a9e83f5bcaa9f5", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "modkit/pileup": { "branch": "master", - "git_sha": "e29c9dda946de3c4d310d0b3f75664f0f3d5a842", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "mosdepth": { "branch": "master", - "git_sha": "9bfc81874554e87740bcb3e5e07acf0a153c9ecb", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", + "git_sha": "cf17ca47590cc578dfb47db1c2a44ef86f89976d", "installed_by": ["modules"] }, "paraphase": { "branch": "master", - "git_sha": "54b51b69634128ca63568e87387ab1140a5c9410", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "samtools/faidx": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/fastq": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/import": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/merge": { "branch": "master", - "git_sha": "e9bc33485e420b51cfbed3cf63ac7463cd5739d3", - "installed_by": ["modules"] + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", + "installed_by": ["modules"], + "patch": "modules/nf-core/samtools/merge/samtools-merge.diff" }, "samtools/sort": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", - "installed_by": ["modules"] + "git_sha": "b7800db9b069ed505db3f9d91b8c72faea9be17b", + "installed_by": ["modules"], + "patch": "modules/nf-core/samtools/sort/samtools-sort.diff" }, "samtools/view": { "branch": "master", - "git_sha": "6c2309aaec566c0d44a6cf14d4b2d0c51afe2e91", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, - "sniffles": { + "severus": { "branch": "master", - "git_sha": "b50aa17b1b604c7b3cfe58a2472d1e7b990ae8bf", + "git_sha": "8a36181859504560ef333c299f6773c7b99a801f", "installed_by": ["modules"] }, + "sniffles": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/sniffles/sniffles.diff" + }, "somalier/extract": { "branch": "master", - "git_sha": "458c882987320e27fc90723ec96c127a243a5497", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/somalier/extract/somalier-extract.diff" }, "somalier/relate": { "branch": "master", - "git_sha": "458c882987320e27fc90723ec96c127a243a5497", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/somalier/relate/somalier-relate.diff" }, "splitubam": { "branch": "master", - "git_sha": "d12bb6cdcd22ef8f26803a6a55e918ac017176e8", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "stranger": { "branch": "master", - "git_sha": "4806239588f35d27a95b187b4000d80e15152022", + "git_sha": "26cdbf29e76695c7fd85e42e0015c7e96f979fe9", + "installed_by": ["modules"] + }, + "svdb/merge": { + "branch": "master", + "git_sha": "a8ad84b7ee0cda0b001490e95d9ed277e687e368", + "installed_by": ["modules"] + }, + "svdb/query": { + "branch": "master", + "git_sha": "eb2c3f7ee2c938ab1a49764bdb1319adaa35492c", "installed_by": ["modules"] }, "tabix/bgzip": { "branch": "master", - "git_sha": "b20be35facfc5acdc1259f132ed79339d79e989f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "tabix/bgziptabix": { "branch": "master", - "git_sha": "0840b387799172e77510393ed09e4d4ec1bc6d7c", + "git_sha": "f448e846bdadd80fc8be31fbbc78d9f5b5131a45", "installed_by": ["modules"] }, "tabix/tabix": { "branch": "master", - "git_sha": "0840b387799172e77510393ed09e4d4ec1bc6d7c", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, - "untar": { + "trgt/genotype": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "484afd16770cf3c466a6c385e33746c877656663", "installed_by": ["modules"] + }, + "trgt/merge": { + "branch": "master", + "git_sha": "8f77dd07042aef4eb19ea7fa91496a41975299b0", + "installed_by": ["modules"] + }, + "untar": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": ["modules"], + "patch": "modules/nf-core/untar/untar.diff" } } }, @@ -253,17 +306,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "56372688d8979092cafbe0c5c3895b491166ca1c", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", + "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", "installed_by": ["subworkflows"] }, - "utils_nfvalidation_plugin": { + "utils_nfschema_plugin": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/bcftools/merge/environment.yml b/modules/local/add_found_in_tag/environment.yml similarity index 80% rename from modules/nf-core/bcftools/merge/environment.yml rename to modules/local/add_found_in_tag/environment.yml index 51f1fb75..a8a985fa 100644 --- a/modules/nf-core/bcftools/merge/environment.yml +++ b/modules/local/add_found_in_tag/environment.yml @@ -1,4 +1,4 @@ -name: bcftools_merge +name: add_found_in_tag channels: - conda-forge - bioconda diff --git a/modules/local/add_found_in_tag/main.nf b/modules/local/add_found_in_tag/main.nf new file mode 100644 index 00000000..ff31cdeb --- /dev/null +++ b/modules/local/add_found_in_tag/main.nf @@ -0,0 +1,96 @@ +process ADD_FOUND_IN_TAG { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': + 'biocontainers/bcftools:1.20--h8b25389_0' }" + + input: + tuple val(meta), path(vcf, stageAs: "?/*"), path(index, stageAs: "?/*") + val(variant_caller) + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : + args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : + args2.contains('--output-type z') || args2.contains('-Oz') ? 'vcf.gz' : + args2.contains('--output-type v') || args2.contains('-Ov') ? 'vcf' : + 'vcf' + + """ + bcftools view \\ + $args \\ + --threads $task.cpus \\ + $vcf |\\ + awk ' + # Print all existing header lines + /^##/ { + print; + next; + } + + # Add a INFO header line before the #CHROM line, then print the #CHROM line + /^#CHROM/ { + printf("##INFO=\\n"); + print; + next; + } + + # Then for all other lines, append FOUND_IN=variant_caller to the INFO field (column 8) + { + OFS="\\t"; + \$8 = sprintf("%s;FOUND_IN=${variant_caller}", \$8 ); + print; + } + ' |\\ + bcftools view \\ + $args2 \\ + --threads $task.cpus \\ + --output ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + busybox_awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') + END_VERSIONS + """ + + stub: + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args2.contains('--output-type b') || args2.contains('-Ob') ? 'bcf.gz' : + args2.contains('--output-type u') || args2.contains('-Ou') ? 'bcf' : + args2.contains('--output-type z') || args2.contains('-Oz') ? "vcf.gz" : + args2.contains('--output-type v') || args2.contains('-Ov') ? 'vcf' : + 'vcf' + def index = args2.contains('--write-index=tbi') || args2.contains('-W=tbi') ? 'tbi' : + args2.contains('--write-index=csi') || args2.contains("-W=csi") ? 'csi' : + args2.contains('--write-index') || args2.contains("-W") ? 'csi' : + '' + def create_cmd = extension.endsWith('.gz') ? "echo '' | gzip >" : 'touch' + def create_index = extension.endsWith('.gz') && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : '' + + """ + ${create_cmd} ${prefix}.${extension} + ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + busybox_awk: \$(awk 2>&1 | sed -n 's/.*v\\([^ ]*\\) (.*/\\1/p') + END_VERSIONS + """ +} diff --git a/modules/local/add_found_in_tag/tests/main.nf.test b/modules/local/add_found_in_tag/tests/main.nf.test new file mode 100644 index 00000000..02385503 --- /dev/null +++ b/modules/local/add_found_in_tag/tests/main.nf.test @@ -0,0 +1,66 @@ +nextflow_process { + + name "Test Process ADD_FOUND_IN_TAG" + script "../main.nf" + process "ADD_FOUND_IN_TAG" + + tag "modules" + tag "modules_local" + tag "bcftools" + tag "add_found_in_tag" + + test("sarscov2 - [vcf, []], variant_caller") { + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = 'variant_caller' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert file(process.out.vcf.get(0).get(1)).readLines().any { it.contains("FOUND_IN=variant_caller") } }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, []], variant_caller -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = 'variant_caller' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/local/add_found_in_tag/tests/main.nf.test.snap b/modules/local/add_found_in_tag/tests/main.nf.test.snap new file mode 100644 index 00000000..90deb557 --- /dev/null +++ b/modules/local/add_found_in_tag/tests/main.nf.test.snap @@ -0,0 +1,382 @@ +{ + "sarscov2 - [vcf, []], variant_caller": { + "content": [ + "7ce88babfa8801b2a913faf40c6f7edd", + [ + "versions.yml:md5,5d810c4fbc154928fabfe136fad38704" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T09:33:11.23710858" + }, + "sarscov2 - [vcf, []], variant_caller -stub": { + "content": [ + { + "0": [ + [ + { + "id": [ + [ + [ + "HG002_Revio_phased.bam:md5,64e1d1ed3d180589193c13f2c94d1098", + "HG002_Revio_phased.bam.bai:md5,bb768f48be5144262c0b713ef183d152" + ] + ], + [ + [ + [ + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250" + ] + ] + ], + [ + [ + [ + "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", + "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", + "HG002_Revio.hap1.bam:md5,5c739e8b3c2f659c3847498848280bbf", + "HG002_Revio.hap1.bam.bai:md5,a57472fa9365470db09f5ea8c7a7420a", + "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", + "HG002_Revio.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", + "HG002_Revio.hap1.sam.gz:md5,0a161b44c29c0581ada87fee50be38c2", + "HG002_Revio.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", + "HG002_Revio.hap2.bam:md5,df63e7bb5dcee6ca5e731272dad0eb99", + "HG002_Revio.hap2.bam.bai:md5,ed8184223edea0297c7f9283ea7927bf", + "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", + "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", + "HG002_Revio.hap2.sam.gz:md5,410acad899eda2f0a4a3e1eb4acf81cb", + "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", + "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22" + ] + ] + ], + [ + [ + [ + "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", + "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", + "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", + "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", + "HG002_Revio.log:md5,3b47302d7e8e0ffac4841123de74ffb3" + ] + ] + ], + [ + [ + [ + [ + + ], + [ + + ] + ] + ] + ], + [ + [ + "HG002_Revio.paraphase.bam:md5,839cab6fb9b453b36975e9ab650d2552", + "HG002_Revio.paraphase.bam.bai:md5,7146463306700bc589b4085c3404bac3", + "HG002_Revio.paraphase.json:md5,03ba9306a2bea70a817e4b2ef32d55b4", + [ + "HG002_Revio_hba.vcf.gz:md5,fb0207f30c5bb0e3beba699e147feed9", + "HG002_Revio_hba.vcf.gz.tbi:md5,63656171e041cf226e8b312c3e989eee" + ] + ] + ], + [ + "test_single.ped:md5,bd5cec27ba7337a85cf98e787131e2b5" + ], + [ + [ + [ + [ + "HG002_Revio_phased.vcf.gz:md5,cde30af0e4f160e91b9db0fcebebc2d1", + "HG002_Revio_phased.vcf.gz.tbi:md5,3e2fc64bb2f893b44dcf24817b4632f3" + ] + ], + [ + [ + "HG002_Revio_stats.blocks.tsv:md5,eaf8f60522034f52b3a45ced6ebed2ea", + "HG002_Revio_stats.stats.tsv:md5,b571fcb3ef8a9e7921dd2824cfc1f549" + ] + ] + ] + ], + [ + "nf_core_pipeline_software_mqc_versions.yml:md5,3675babbfa3ff94ad52a8d090e42545e", + "params_2024-09-20_14-33-35.json:md5,ef85e454ae8828ddf71282d9aa407fb2" + ], + [ + [ + [ + [ + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned_phased.txt:md5,3af7900149aa0b16e1f858feed041aaa" + ] + ], + [ + [ + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.txt:md5,10dc53594d12a53b793f8c8d4382b1fb" + ] + ] + ], + [ + [ + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab" + ] + ], + [ + [ + [ + "test_single.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", + "test_single.pairs.tsv:md5,4a0988fc3c0fe5cfd5dd205fe6755595", + "test_single.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686" + ] + ] + ] + ], + [ + [ + [ + "HG002_Revio_fastqc.html:md5,0337b9b2bb1368340c79624051d97363", + "HG002_Revio_fastqc.zip:md5,0b4dde7cf60185c165e61b689f246787" + ] + ], + [ + [ + "HG002_PacBio_Revio.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b" + ] + ] + ], + [ + [ + [ + [ + "test_single_sniffles.vcf.gz:md5,8386b2d30b0e77a644f26c820013df3f", + "test_single_sniffles.vcf.gz.tbi:md5,6fd9ceb01d7baec1b96ecb3b29583e0d" + ] + ], + [ + [ + "HG002_Revio_sniffles.snf:md5,b2d5a63bb00cabcb2527d361721f6fa1", + "HG002_Revio_sniffles.vcf.gz:md5,9b69d2d3f79130b6f483d12855ab07fa", + "HG002_Revio_sniffles.vcf.gz.tbi:md5,4d5ed6747851d968a0b9b51d0e3558b1" + ] + ] + ] + ] + ], + "single_end": false + }, + "out.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,5d810c4fbc154928fabfe136fad38704" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": [ + [ + [ + "HG002_Revio_phased.bam:md5,64e1d1ed3d180589193c13f2c94d1098", + "HG002_Revio_phased.bam.bai:md5,bb768f48be5144262c0b713ef183d152" + ] + ], + [ + [ + [ + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,e4da3107f2421d42c6e2f59bff4e47d9", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,eff16bf92abff02c36cceb2eb5a9871c", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,bf908610472e602fd986b9d4a4d58b9e", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,e28c886baffe24c1a2972a1d95b1b250" + ] + ] + ], + [ + [ + [ + "HG002_Revio.dip.bed:md5,4e3cde029bceaa9363402e997f12f280", + "HG002_Revio.dip.vcf.gz:md5,9259613d7b01347b2d817d4e547c4203", + "HG002_Revio.hap1.bam:md5,5c739e8b3c2f659c3847498848280bbf", + "HG002_Revio.hap1.bam.bai:md5,a57472fa9365470db09f5ea8c7a7420a", + "HG002_Revio.hap1.bed:md5,3d75c9538e748a7672b934bdbde90df3", + "HG002_Revio.hap1.paf.gz:md5,46a3056ecd833d9a932c53fc46a3cafc", + "HG002_Revio.hap1.sam.gz:md5,0a161b44c29c0581ada87fee50be38c2", + "HG002_Revio.hap1.var.gz:md5,173218f6c3f5f067e0932a8331f12e3d", + "HG002_Revio.hap2.bam:md5,df63e7bb5dcee6ca5e731272dad0eb99", + "HG002_Revio.hap2.bam.bai:md5,ed8184223edea0297c7f9283ea7927bf", + "HG002_Revio.hap2.bed:md5,9ac411d49f08a8ec70e4792890e9faf9", + "HG002_Revio.hap2.paf.gz:md5,a99e451e4af96a7ab120cedd49eea618", + "HG002_Revio.hap2.sam.gz:md5,410acad899eda2f0a4a3e1eb4acf81cb", + "HG002_Revio.hap2.var.gz:md5,53dc16fc893a529a95067da161b4dad6", + "HG002_Revio.pair.vcf.gz:md5,a390558ab50ce0dc9efec070b1c70c22" + ] + ] + ], + [ + [ + [ + "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", + "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", + "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", + "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", + "HG002_Revio.log:md5,3b47302d7e8e0ffac4841123de74ffb3" + ] + ] + ], + [ + [ + [ + [ + + ], + [ + + ] + ] + ] + ], + [ + [ + "HG002_Revio.paraphase.bam:md5,839cab6fb9b453b36975e9ab650d2552", + "HG002_Revio.paraphase.bam.bai:md5,7146463306700bc589b4085c3404bac3", + "HG002_Revio.paraphase.json:md5,03ba9306a2bea70a817e4b2ef32d55b4", + [ + "HG002_Revio_hba.vcf.gz:md5,fb0207f30c5bb0e3beba699e147feed9", + "HG002_Revio_hba.vcf.gz.tbi:md5,63656171e041cf226e8b312c3e989eee" + ] + ] + ], + [ + "test_single.ped:md5,bd5cec27ba7337a85cf98e787131e2b5" + ], + [ + [ + [ + [ + "HG002_Revio_phased.vcf.gz:md5,cde30af0e4f160e91b9db0fcebebc2d1", + "HG002_Revio_phased.vcf.gz.tbi:md5,3e2fc64bb2f893b44dcf24817b4632f3" + ] + ], + [ + [ + "HG002_Revio_stats.blocks.tsv:md5,eaf8f60522034f52b3a45ced6ebed2ea", + "HG002_Revio_stats.stats.tsv:md5,b571fcb3ef8a9e7921dd2824cfc1f549" + ] + ] + ] + ], + [ + "nf_core_pipeline_software_mqc_versions.yml:md5,3675babbfa3ff94ad52a8d090e42545e", + "params_2024-09-20_14-33-35.json:md5,ef85e454ae8828ddf71282d9aa407fb2" + ], + [ + [ + [ + [ + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned_phased.txt:md5,3af7900149aa0b16e1f858feed041aaa" + ] + ], + [ + [ + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.txt:md5,10dc53594d12a53b793f8c8d4382b1fb" + ] + ] + ], + [ + [ + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab" + ] + ], + [ + [ + [ + "test_single.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", + "test_single.pairs.tsv:md5,4a0988fc3c0fe5cfd5dd205fe6755595", + "test_single.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686" + ] + ] + ] + ], + [ + [ + [ + "HG002_Revio_fastqc.html:md5,0337b9b2bb1368340c79624051d97363", + "HG002_Revio_fastqc.zip:md5,0b4dde7cf60185c165e61b689f246787" + ] + ], + [ + [ + "HG002_PacBio_Revio.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b" + ] + ] + ], + [ + [ + [ + [ + "test_single_sniffles.vcf.gz:md5,8386b2d30b0e77a644f26c820013df3f", + "test_single_sniffles.vcf.gz.tbi:md5,6fd9ceb01d7baec1b96ecb3b29583e0d" + ] + ], + [ + [ + "HG002_Revio_sniffles.snf:md5,b2d5a63bb00cabcb2527d361721f6fa1", + "HG002_Revio_sniffles.vcf.gz:md5,9b69d2d3f79130b6f483d12855ab07fa", + "HG002_Revio_sniffles.vcf.gz.tbi:md5,4d5ed6747851d968a0b9b51d0e3558b1" + ] + ] + ] + ] + ], + "single_end": false + }, + "out.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5d810c4fbc154928fabfe136fad38704" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T09:33:18.256743972" + } +} \ No newline at end of file diff --git a/modules/local/add_found_in_tag/tests/tags.yml b/modules/local/add_found_in_tag/tests/tags.yml new file mode 100644 index 00000000..9d5792cf --- /dev/null +++ b/modules/local/add_found_in_tag/tests/tags.yml @@ -0,0 +1,2 @@ +add_found_in_tag: + - "modules/local/add_found_in_tag/**" diff --git a/modules/local/add_most_severe_consequence.nf b/modules/local/add_most_severe_consequence.nf index 0c572811..26a4fce3 100644 --- a/modules/local/add_most_severe_consequence.nf +++ b/modules/local/add_most_severe_consequence.nf @@ -1,6 +1,6 @@ process ADD_MOST_SEVERE_CSQ { tag "$meta.id" - label 'process_low' + label 'process_single' conda "conda-forge::python=3.8.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -9,11 +9,11 @@ process ADD_MOST_SEVERE_CSQ { input: tuple val(meta), path(vcf) - path (variant_consequences) + tuple val(meta2), path (variant_consequences) output: - tuple val(meta), path("*.vcf") , emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -21,12 +21,17 @@ process ADD_MOST_SEVERE_CSQ { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + if ("$vcf" == "${prefix}.vcf" ) error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ - add_most_severe_consequence.py --file_in ${vcf} --file_out ${prefix}.vcf --variant_csq ${variant_consequences} + add_most_severe_consequence.py \\ + --file_in ${vcf} \\ + --file_out ${prefix}.vcf \\ + --variant_csq ${variant_consequences} cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_consequence: v1.0 + add_most_severe_consequence: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ @@ -38,7 +43,7 @@ process ADD_MOST_SEVERE_CSQ { cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_consequence: v1.0 + add_most_severe_consequence: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ diff --git a/modules/local/add_most_severe_pli.nf b/modules/local/add_most_severe_pli.nf index f2975a22..16286b49 100644 --- a/modules/local/add_most_severe_pli.nf +++ b/modules/local/add_most_severe_pli.nf @@ -1,6 +1,6 @@ process ADD_MOST_SEVERE_PLI { tag "$meta.id" - label 'process_low' + label 'process_single' conda "conda-forge::python=3.8.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -11,8 +11,8 @@ process ADD_MOST_SEVERE_PLI { tuple val(meta), path(vcf) output: - tuple val(meta), path("*.vcf") , emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -20,12 +20,16 @@ process ADD_MOST_SEVERE_PLI { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + if ("$vcf" == "${prefix}.vcf" ) error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ - add_most_severe_pli.py --file_in ${vcf} --file_out ${prefix}.vcf + add_most_severe_pli.py \\ + --file_in ${vcf} \\ + --file_out ${prefix}.vcf cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_pli: v1.0 + add_most_severe_pli: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ @@ -37,7 +41,7 @@ process ADD_MOST_SEVERE_PLI { cat <<-END_VERSIONS > versions.yml "${task.process}": - add_most_severe_pli: v1.0 + add_most_severe_pli: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ diff --git a/modules/local/create_pedigree_file.nf b/modules/local/create_pedigree_file/main.nf similarity index 66% rename from modules/local/create_pedigree_file.nf rename to modules/local/create_pedigree_file/main.nf index 18480df5..37d9a0c1 100644 --- a/modules/local/create_pedigree_file.nf +++ b/modules/local/create_pedigree_file/main.nf @@ -1,5 +1,5 @@ process CREATE_PEDIGREE_FILE { - tag "${project}" + tag "${meta.id}" label 'process_single' conda "conda-forge::python=3.8.3" @@ -8,17 +8,20 @@ process CREATE_PEDIGREE_FILE { 'biocontainers/python:3.8.3' }" input: - tuple val(project), val(samples) + tuple val(meta), val(sample_metas) output: - tuple val(project), path("*.ped"), emit: ped - path "versions.yml" , emit: versions + tuple val(meta), path("*.ped"), emit: ped + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def out = new File(project + ".ped") + def prefix = task.ext.prefix ?: "${meta.id}" + def samples = (sample_metas.collect().size() > 1) ? sample_metas.sort{ a, b -> + // First sort on family_id, then on sample id + a.family_id <=> b.family_id ?: a.id <=> b.id } : sample_metas outfile_text = ['#family_id', 'sample_id', 'father', 'mother', 'sex', 'phenotype'].join('\\t') def samples_list = [] for(int i = 0; i${project}.ped + echo -e "$outfile_text" > ${prefix}.ped cat <<-END_VERSIONS > versions.yml "${task.process}": - create_pedigree_file: v1.0 + create_pedigree_file: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ stub: + def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${project}.ped + touch ${prefix}.ped cat <<-END_VERSIONS > versions.yml "${task.process}": - create_pedigree_file: v1.0 + create_pedigree_file: 1.0 python: \$(python --version | sed 's/Python //g') END_VERSIONS """ diff --git a/modules/local/create_pedigree_file/tests/main.nf.test b/modules/local/create_pedigree_file/tests/main.nf.test new file mode 100644 index 00000000..1667d5bf --- /dev/null +++ b/modules/local/create_pedigree_file/tests/main.nf.test @@ -0,0 +1,67 @@ +nextflow_process { + + name "Test Process CREATE_PEDIGREE_FILE" + script "../main.nf" + process "CREATE_PEDIGREE_FILE" + + tag "modules" + tag "modules_local" + tag "create_pedigree_file" + + test("create_pedigree_file - one sample") { + + when { + process { + """ + input[0] = Channel.of( + [ 'project', + [ + [id:'HG002.Revio', family_id:'family', paternal_id:0, maternal_id:0, sex:0, phenotype:2, project:'project', n_files:1, single_end:true] + ] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.ped.get(0).get(1)).readLines(), + process.out.versions + ).match() } + ) + } + } + + test("create_pedigree_file - multiple samples") { + + when { + process { + """ + input[0] = Channel.of( + [ 'test', + [ + [id:'HG002_Revio_AB', family_id:'FAM2', paternal_id:0, maternal_id:0, sex:0, phenotype:1, project:'test', n_files:1, single_end:true], + [id:'HG002_Revio_AA', family_id:'FAM2', paternal_id:0, maternal_id:0, sex:0, phenotype:1, project:'test', n_files:1, single_end:true], + [id:'HG002_Revio_B', family_id:'FAM1', paternal_id:0, maternal_id:0, sex:0, phenotype:1, project:'test', n_files:2, single_end:true], + [id:'HG002_Revio_A', family_id:'FAM1', paternal_id:0, maternal_id:0, sex:0, phenotype:2, project:'test', n_files:1, single_end:true], + [id:'HG002_Revio_B', family_id:'FAM1', paternal_id:0, maternal_id:0, sex:0, phenotype:1, project:'test', n_files:2, single_end:true] + ] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.ped.get(0).get(1)).readLines(), + process.out.versions + ).match() } + ) + } + } + +} diff --git a/modules/local/create_pedigree_file/tests/main.nf.test.snap b/modules/local/create_pedigree_file/tests/main.nf.test.snap new file mode 100644 index 00000000..38ecf6ba --- /dev/null +++ b/modules/local/create_pedigree_file/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "create_pedigree_file - one sample": { + "content": [ + [ + "#family_id\tsample_id\tfather\tmother\tsex\tphenotype", + "family\tHG002.Revio\t0\t0\t0\t2" + ], + [ + "versions.yml:md5,fb643cd2fc69cab285a7f0061ad223d8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-04T16:16:12.293913485" + }, + "create_pedigree_file - multiple samples": { + "content": [ + [ + "#family_id\tsample_id\tfather\tmother\tsex\tphenotype", + "FAM1\tHG002_Revio_A\t0\t0\t0\t2", + "FAM1\tHG002_Revio_B\t0\t0\t0\t1", + "FAM2\tHG002_Revio_AA\t0\t0\t0\t1", + "FAM2\tHG002_Revio_AB\t0\t0\t0\t1" + ], + [ + "versions.yml:md5,fb643cd2fc69cab285a7f0061ad223d8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-04T16:16:19.916570689" + } +} \ No newline at end of file diff --git a/modules/local/create_samples_file/main.nf b/modules/local/create_samples_file/main.nf new file mode 100644 index 00000000..b4847ed8 --- /dev/null +++ b/modules/local/create_samples_file/main.nf @@ -0,0 +1,44 @@ +process CREATE_SAMPLES_FILE { + tag "${meta.id}" + label 'process_single' + + conda "anaconda::gawk=5.1.0" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' : + 'biocontainers/gawk:5.1.0' }" + + input: + tuple val(meta), path(txt) + + output: + tuple val(meta), path("*.txt"), emit: samples + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def prefix = task.ext.prefix ?: "${meta.id}" + if ("$txt" == "${prefix}.txt") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ + awk '{print \$1,"${meta.id}"}' ${txt} > ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + END_VERSIONS + """ +} diff --git a/modules/local/create_samples_file/tests/main.nf.test b/modules/local/create_samples_file/tests/main.nf.test new file mode 100644 index 00000000..38c558b4 --- /dev/null +++ b/modules/local/create_samples_file/tests/main.nf.test @@ -0,0 +1,55 @@ +nextflow_process { + + name "Test Process CREATE_SAMPLES_FILE" + script "../main.nf" + process "CREATE_SAMPLES_FILE" + + tag "modules" + tag "modules_local" + tag "create_samples_file" + + config "./nextflow.config" + + test("create_samples_file") { + + when { + process { + """ + input[0] = Channel.of('test_vcf_file_sample') + .collectFile(name: 'test.txt') + .map { file -> [ [ id: 'test' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("create_samples_file -stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of('test_vcf_file_sample') + .collectFile(name: 'test.txt') + .map { file -> [ [ id: 'test' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/local/create_samples_file/tests/main.nf.test.snap b/modules/local/create_samples_file/tests/main.nf.test.snap new file mode 100644 index 00000000..5579fc68 --- /dev/null +++ b/modules/local/create_samples_file/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "create_samples_file -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ], + "samples": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-11T18:56:06.026507892" + }, + "create_samples_file": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,41e40eee31c3003c213685c180f52c25" + ] + ], + "1": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ], + "samples": [ + [ + { + "id": "test" + }, + "samples_file.txt:md5,41e40eee31c3003c213685c180f52c25" + ] + ], + "versions": [ + "versions.yml:md5,ef72b0fd7e245e40b0ce6d409e218689" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-09-11T18:55:18.906428667" + } +} \ No newline at end of file diff --git a/modules/local/create_samples_file/tests/nextflow.config b/modules/local/create_samples_file/tests/nextflow.config new file mode 100644 index 00000000..f65fe04c --- /dev/null +++ b/modules/local/create_samples_file/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'CREATE_SAMPLES_FILE' { + ext.prefix = 'samples_file' + } +} diff --git a/modules/local/fqcrs/Dockerfile b/modules/local/fqcrs/Dockerfile deleted file mode 100644 index 955356d5..00000000 --- a/modules/local/fqcrs/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM ubuntu:22.04 - -RUN apt-get update && apt-get install -y procps sed zstd && rm -rf /var/lib/apt/lists/* -# install app -COPY fqcrs /usr/bin/fqcrs - -# final configuration -ENV FLASK_APP=fqcrs diff --git a/modules/local/fqcrs/main.nf b/modules/local/fqcrs/main.nf deleted file mode 100644 index 64162695..00000000 --- a/modules/local/fqcrs/main.nf +++ /dev/null @@ -1,37 +0,0 @@ -process FQCRS { - tag "$meta.id" - label 'process_single' - - container "docker.io/fellen31/fqcrs:0.1.0" - // Add verion manually - def fqcrs_version = '0.1.0' - - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - exit 1, "FQCRS module does not support Conda. Please use Docker / Singularity / Podman instead." - } - - input: - tuple val(meta), path(reads) - - output: - tuple val(meta), path("${prefix}.tsv.zst"), emit: fqc - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - - """ - zcat ${reads} | fqcrs | zstd -c > ${prefix}.tsv.zst - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fqcrs: \$(echo "$fqcrs_version" ) - END_VERSIONS - """ -} - diff --git a/modules/local/hiphase/main.nf b/modules/local/hiphase/main.nf index 44b5d4bf..3de4359a 100644 --- a/modules/local/hiphase/main.nf +++ b/modules/local/hiphase/main.nf @@ -42,7 +42,7 @@ process HIPHASE { vcfInputs.add('--vcf') vcfInputs.add(vcf) vcfOutputs.add('--output-vcf') - vcfOutputs.add("${prefix}.vcf.gz") + vcfOutputs.add("${prefix}_phased.vcf.gz") vcfNames.add(vcf.getName()) } @@ -58,7 +58,7 @@ process HIPHASE { if(output_bam) { bamOutputs.add('--output-bam') - bamOutputs.add("${prefix}.bam") + bamOutputs.add("${prefix}_haplotagged.bam") } } diff --git a/modules/local/pacbio/hificnv/main.nf b/modules/local/pacbio/hificnv/main.nf index 31131ab6..9046dca8 100644 --- a/modules/local/pacbio/hificnv/main.nf +++ b/modules/local/pacbio/hificnv/main.nf @@ -2,14 +2,17 @@ process HIFICNV { tag "$meta.id" label 'process_medium' - conda "bioconda::hificnv=0.1.7" - container "quay.io/biocontainers/hificnv:0.1.7--h9ee0642_0" - + conda "bioconda::hificnv=1.0.0" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/hificnv:1.0.0--h9ee0642_0' : + 'quay.io/biocontainers/hificnv:1.0.0--h9ee0642_0' }" input: - tuple val(meta), path(bam), path(bai), path(maf_vcf), path(expected_cn_bed) + tuple val(meta), path(bam), path(bai), path(maf_vcf), val(sex) tuple val(meta2), path(fasta) - path(exclude_bed) + tuple val(meta3), path(expected_xy_bed) + tuple val(meta4), path(expected_xx_bed) + tuple val(meta5), path(exclude_bed) output: tuple val(meta), path("*.vcf.gz") , emit: vcf @@ -26,10 +29,14 @@ process HIFICNV { def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" - def expected_cn = expected_cn_bed ? "--expected-cn ${expected_cn_bed}" : "" + def expected_cn = (sex == 1 && expected_xy_bed) ? "--expected-cn ${expected_xy_bed}" : (sex == 2 && expected_xx_bed) ? "--expected-cn ${expected_xx_bed}" : "" def exclude = exclude_bed ? "--exclude ${exclude_bed}" : "" def maf = maf_vcf ? "--maf ${maf_vcf}" : "" + if ("$maf_vcf" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + mv_maf = maf ? "mv hificnv.*.maf.bw ${prefix}.maf.bw" : '' + """ hificnv \\ $args \\ @@ -38,8 +45,13 @@ process HIFICNV { $exclude \\ $maf \\ --ref ${fasta} \\ - --threads ${task.cpus} \\ - --output-prefix ${prefix} + --threads ${task.cpus} + + mv hificnv.*.vcf.gz ${prefix}.vcf.gz + mv hificnv.*.depth.bw ${prefix}.depth.bw + $mv_maf + mv hificnv.*.copynum.bedgraph ${prefix}.copynum.bedgraph + mv *.log ${prefix}.log cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -50,9 +62,12 @@ process HIFICNV { stub: prefix = task.ext.prefix ?: "${meta.id}" + if ("$maf_vcf" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + def maf = maf_vcf ? "touch ${prefix}.maf.bw" : "" """ - touch ${prefix}.vcf.gz + echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.depth.bw + $maf touch ${prefix}.bedgraph touch ${prefix}.log diff --git a/modules/local/trgt/main.nf b/modules/local/trgt/main.nf deleted file mode 100644 index 0c493bf4..00000000 --- a/modules/local/trgt/main.nf +++ /dev/null @@ -1,49 +0,0 @@ -process TRGT { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "biocontainers/trgt:0.7.0--hdfd78af_0" - - input: - tuple val(meta), path(bam), path(bai), val(sex) - tuple val(meta2), path(fasta) - tuple val(meta3), path(fai) - path(repeats) - - output: - tuple val(meta), path("${meta.id}.spanning.bam"), emit: bam - tuple val(meta), path("${meta.id}.vcf.gz") , emit: vcf - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - - if (sex == 1) { - karyotype = "XY" - } else if (sex == 2) { - karyotype = "XX" - } - - """ - trgt \\ - $args \\ - --genome ${fasta} \\ - --karyotype ${karyotype} \\ - --repeats ${repeats} \\ - --reads ${bam} \\ - --threads ${task.cpus} \\ - --output-prefix ${meta.id} - - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - trgt: \$(echo \$(trgt -V) | sed 's/TRGT //' ) - END_VERSIONS - """ -} - diff --git a/modules/local/whatshap/haplotag/main.nf b/modules/local/whatshap/haplotag/main.nf index d4cce45e..9df8d450 100644 --- a/modules/local/whatshap/haplotag/main.nf +++ b/modules/local/whatshap/haplotag/main.nf @@ -2,10 +2,10 @@ process WHATSHAP_HAPLOTAG { tag "$meta.id" label 'process_medium' - conda "bioconda::whatshap=2.2" + conda "bioconda::whatshap=2.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/whatshap:2.2--py39h1f90b4d_1' : - 'quay.io/biocontainers/whatshap:2.2--py39h1f90b4d_1' }" + 'https://depot.galaxyproject.org/singularity/whatshap:2.3--py38h2494328_0' : + 'quay.io/biocontainers/whatshap:2.3--py38h2494328_0' }" input: tuple val(meta), path(vcf), path(tbi), path(bam), path(bai) diff --git a/modules/local/whatshap/phase/main.nf b/modules/local/whatshap/phase/main.nf index 158046f1..6fd7d674 100644 --- a/modules/local/whatshap/phase/main.nf +++ b/modules/local/whatshap/phase/main.nf @@ -2,8 +2,10 @@ process WHATSHAP_PHASE { tag "$meta.id" label 'process_low' - conda "bioconda::whatshap=2.2 bioconda::tabix=1.11" - container "docker.io/fellen31/whatshap-tabix:2.2" + conda "bioconda::whatshap=2.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/whatshap:2.3--py38h2494328_0' : + 'quay.io/biocontainers/whatshap:2.3--py38h2494328_0' }" input: tuple val(meta), path(vcf), path(bam), path(bai) diff --git a/modules/local/whatshap/stats/main.nf b/modules/local/whatshap/stats/main.nf index 398f3013..c2074328 100644 --- a/modules/local/whatshap/stats/main.nf +++ b/modules/local/whatshap/stats/main.nf @@ -2,8 +2,10 @@ process WHATSHAP_STATS { tag "$meta.id" label 'process_single' - conda "bioconda::whatshap=2.2 bioconda::tabix=1.11" - container "docker.io/fellen31/whatshap-tabix:2.2" + conda "bioconda::whatshap=2.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/whatshap:2.3--py38h2494328_0' : + 'quay.io/biocontainers/whatshap:2.3--py38h2494328_0' }" input: tuple val(meta), path(vcf), path(tbi) @@ -36,7 +38,7 @@ process WHATSHAP_STATS { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.stats.tsv.gz + touch ${prefix}.stats.tsv touch ${prefix}.blocks.tsv cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/bcftools/annotate/bcftools-annotate.diff b/modules/nf-core/bcftools/annotate/bcftools-annotate.diff index 391089ff..8d3f5541 100644 --- a/modules/nf-core/bcftools/annotate/bcftools-annotate.diff +++ b/modules/nf-core/bcftools/annotate/bcftools-annotate.diff @@ -1,33 +1,17 @@ Changes in module 'nf-core/bcftools/annotate' ---- modules/nf-core/bcftools/annotate/meta.yml -+++ modules/nf-core/bcftools/annotate/meta.yml -@@ -34,6 +34,9 @@ - - header_lines: - type: file - description: Contains lines to append to the output VCF header -+ - rename_chrs: -+ type: file -+ description: Contains new and old chromosome names - output: - - meta: - type: map - +'modules/nf-core/bcftools/annotate/meta.yml' is unchanged +Changes in 'bcftools/annotate/main.nf': --- modules/nf-core/bcftools/annotate/main.nf +++ modules/nf-core/bcftools/annotate/main.nf -@@ -8,10 +8,9 @@ - 'biocontainers/bcftools:1.20--h8b25389_0' }" - +@@ -10,6 +10,7 @@ input: -- tuple val(meta), path(input), path(index) -- path(annotations) -- path(annotations_index) -+ tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) + tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) path(header_lines) + path(rename_chrs) output: tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf -@@ -27,6 +26,7 @@ +@@ -25,6 +26,7 @@ def prefix = task.ext.prefix ?: "${meta.id}" def header_file = header_lines ? "--header-lines ${header_lines}" : '' def annotations_file = annotations ? "--annotations ${annotations}" : '' @@ -35,13 +19,22 @@ Changes in module 'nf-core/bcftools/annotate' def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : -@@ -43,6 +43,7 @@ +@@ -40,6 +42,7 @@ + annotate \\ $args \\ $annotations_file \\ - $header_file \\ + $rename_chrs_file \\ + $header_file \\ --output ${prefix}.${extension} \\ --threads $task.cpus \\ - $input +'modules/nf-core/bcftools/annotate/environment.yml' is unchanged +'modules/nf-core/bcftools/annotate/tests/tags.yml' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf_gz_index.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/main.nf.test.snap' is unchanged +'modules/nf-core/bcftools/annotate/tests/bcf.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/main.nf.test' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf_gz_index_tbi.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf.config' is unchanged +'modules/nf-core/bcftools/annotate/tests/vcf_gz_index_csi.config' is unchanged ************************************************************ diff --git a/modules/nf-core/bcftools/annotate/environment.yml b/modules/nf-core/bcftools/annotate/environment.yml index 3d4e3379..5c00b116 100644 --- a/modules/nf-core/bcftools/annotate/environment.yml +++ b/modules/nf-core/bcftools/annotate/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_annotate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/annotate/main.nf b/modules/nf-core/bcftools/annotate/main.nf index 06eb6d34..b6b73309 100644 --- a/modules/nf-core/bcftools/annotate/main.nf +++ b/modules/nf-core/bcftools/annotate/main.nf @@ -42,8 +42,8 @@ process BCFTOOLS_ANNOTATE { annotate \\ $args \\ $annotations_file \\ - $header_file \\ $rename_chrs_file \\ + $header_file \\ --output ${prefix}.${extension} \\ --threads $task.cpus \\ $input @@ -62,12 +62,12 @@ process BCFTOOLS_ANNOTATE { args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" - def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : - args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : - args.contains("--write-index") || args.contains("-W") ? "csi" : - "" + def index_extension = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" - def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + def create_index = extension.endsWith(".gz") && index_extension.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index_extension}" : "" """ ${create_cmd} ${prefix}.${extension} diff --git a/modules/nf-core/bcftools/annotate/meta.yml b/modules/nf-core/bcftools/annotate/meta.yml index 78f806a4..5bfccd2b 100644 --- a/modules/nf-core/bcftools/annotate/meta.yml +++ b/modules/nf-core/bcftools/annotate/meta.yml @@ -13,52 +13,64 @@ tools: documentation: https://samtools.github.io/bcftools/bcftools.html#annotate doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: Query VCF or BCF file, can be either uncompressed or compressed - - index: - type: file - description: Index of the query VCF or BCF file - - annotations: - type: file - description: Bgzip-compressed file with annotations - - annotations_index: - type: file - description: Index of the annotations file - - header_lines: - type: file - description: Contains lines to append to the output VCF header - - rename_chrs: - type: file - description: Contains new and old chromosome names + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Query VCF or BCF file, can be either uncompressed or compressed + - index: + type: file + description: Index of the query VCF or BCF file + - annotations: + type: file + description: Bgzip-compressed file with annotations + - annotations_index: + type: file + description: Index of the annotations file + - - header_lines: + type: file + description: Contains lines to append to the output VCF header output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: Compressed annotated VCF file - pattern: "*{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: Compressed annotated VCF file + pattern: "*{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@projectoriented" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test b/modules/nf-core/bcftools/annotate/tests/main.nf.test index 8cd87abc..3a5c4933 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test @@ -9,20 +9,21 @@ nextflow_process { tag "bcftools" tag "bcftools/annotate" - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_output") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output") { config "./vcf.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -39,20 +40,21 @@ nextflow_process { } - test("sarscov2 - [vcf, []] annotation, annotation_tbi, [] - vcf_output") { + test("sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output") { config "./vcf.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - []] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -68,20 +70,21 @@ nextflow_process { } } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index") { config "./vcf_gz_index.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -101,20 +104,21 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_csi") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi") { config "./vcf_gz_index_csi.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -134,20 +138,21 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_tbi") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi") { config "./vcf_gz_index_tbi.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -166,20 +171,21 @@ nextflow_process { } } - test("sarscov2 - [vcf, []], annotation, annotation_tbi, header - bcf_output") { + test("sarscov2 - [vcf, [], annotation, annotation_tbi], header - bcf_output") { config "./bcf.config" when { process { """ - input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - []]) - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = Channel.of( + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = Channel.of( '##INFO=', '##INFO=' ).collectFile(name:"headers.vcf", newLine:true) @@ -199,7 +205,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub") { config "./vcf.config" options "-stub" @@ -207,13 +213,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -227,7 +234,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub") { config "./vcf_gz_index.config" options "-stub" @@ -235,13 +242,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -256,7 +264,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_csi - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub") { config "./vcf_gz_index_csi.config" options "-stub" @@ -264,13 +272,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -285,7 +294,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_tbi - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub") { config "./vcf_gz_index_tbi.config" options "-stub" @@ -293,13 +302,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap index 8fd8d11d..bac2224a 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap @@ -1,38 +1,5 @@ { - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_tbi": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi" - ] - ], - [ - - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-12T16:39:23.802873" - }, - "sarscov2 - [vcf, []] annotation, annotation_tbi, [] - vcf_output": { + "bcf": { "content": [ [ [ @@ -40,7 +7,7 @@ "id": "test", "single_end": false }, - "test_vcf.vcf.gz" + "test_ann.bcf" ] ], [ @@ -51,9 +18,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:38:57.039285" + "timestamp": "2024-06-12T16:39:33.331888" }, - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_csi": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { "content": [ [ [ @@ -84,9 +51,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:15.152697" + "timestamp": "2024-08-15T10:07:59.658031137" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { "content": [ { "0": [ @@ -102,13 +69,25 @@ ], "2": [ - + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ - + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "tbi": [ @@ -131,9 +110,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:41.994785" + "timestamp": "2024-08-15T10:09:05.096883418" }, - "bcf": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { "content": [ [ [ @@ -141,7 +120,19 @@ "id": "test", "single_end": false }, - "test_ann.bcf" + "test_vcf.vcf.gz" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" ] ], [ @@ -152,9 +143,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:33.331888" + "timestamp": "2024-08-15T10:08:10.581301219" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_tbi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { "content": [ { "0": [ @@ -167,13 +158,7 @@ ] ], "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "2": [ @@ -185,13 +170,7 @@ ], "tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "vcf": [ [ @@ -211,9 +190,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:40:13.835994" + "timestamp": "2024-08-15T10:08:43.975017625" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_output": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { "content": [ [ [ @@ -223,6 +202,18 @@ }, "test_vcf.vcf.gz" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi" + ] + ], + [ + ], [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" @@ -232,9 +223,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:38:48.368629" + "timestamp": "2024-08-15T10:08:21.354059092" }, - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { "content": [ [ [ @@ -246,15 +237,24 @@ ] ], [ - - ], + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T10:07:37.788393317" + }, + "sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output": { + "content": [ [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi" + "test_vcf.vcf.gz" ] ], [ @@ -265,9 +265,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:05.608108" + "timestamp": "2024-08-15T10:07:48.500746325" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub": { "content": [ { "0": [ @@ -280,31 +280,31 @@ ] ], "1": [ - - ], - "2": [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ + + ], + "tbi": [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tbi": [ - ], "vcf": [ [ @@ -324,9 +324,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:54.842082" + "timestamp": "2024-08-15T10:09:16.094918834" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_csi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub": { "content": [ { "0": [ @@ -383,6 +383,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:40:04.074052" + "timestamp": "2024-08-15T10:08:54.366358502" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/concat/environment.yml b/modules/nf-core/bcftools/concat/environment.yml index 6544e949..5c00b116 100644 --- a/modules/nf-core/bcftools/concat/environment.yml +++ b/modules/nf-core/bcftools/concat/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_concat channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/concat/main.nf b/modules/nf-core/bcftools/concat/main.nf index e2337eff..a94b28d8 100644 --- a/modules/nf-core/bcftools/concat/main.nf +++ b/modules/nf-core/bcftools/concat/main.nf @@ -11,18 +11,22 @@ process BCFTOOLS_CONCAT { tuple val(meta), path(vcfs), path(tbi) output: - tuple val(meta), path("*.gz") , emit: vcf - tuple val(meta), path("*.tbi"), emit: tbi, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf + tuple val(meta), path("${prefix}.vcf.gz.tbi"), emit: tbi, optional: true + tuple val(meta), path("${prefix}.vcf.gz.csi"), emit: csi, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" + def tbi_names = tbi.findAll { file -> !(file instanceof List) }.collect { file -> file.name } + def create_input_index = vcfs.collect { vcf -> tbi_names.contains(vcf.name + ".tbi") ? "" : "tabix ${vcf}" }.join("\n ") """ + ${create_input_index} + bcftools concat \\ --output ${prefix}.vcf.gz \\ $args \\ @@ -37,7 +41,7 @@ process BCFTOOLS_CONCAT { stub: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : args.contains("--write-index") || args.contains("-W") ? "csi" : diff --git a/modules/nf-core/bcftools/concat/meta.yml b/modules/nf-core/bcftools/concat/meta.yml index eeeb2071..d2565b28 100644 --- a/modules/nf-core/bcftools/concat/meta.yml +++ b/modules/nf-core/bcftools/concat/meta.yml @@ -13,44 +13,68 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcfs: - type: list - description: | - List containing 2 or more vcf files - e.g. [ 'file1.vcf', 'file2.vcf' ] - - tbi: - type: list - description: | - List containing 2 or more index files (optional) - e.g. [ 'file1.tbi', 'file2.tbi' ] + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcfs: + type: list + description: | + List containing 2 or more vcf files + e.g. [ 'file1.vcf', 'file2.vcf' ] + - tbi: + type: list + description: | + List containing 2 or more index files (optional) + e.g. [ 'file1.tbi', 'file2.tbi' ] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: VCF concatenated output file - pattern: "*.{vcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{vcf.gz}" + - ${prefix}.vcf.gz: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{vcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.tbi" + - ${prefix}.vcf.gz.tbi: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.csi" + - ${prefix}.vcf.gz.csi: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@nvnieuwk" diff --git a/modules/nf-core/bcftools/concat/tests/main.nf.test b/modules/nf-core/bcftools/concat/tests/main.nf.test index cea386e3..cb4642b2 100644 --- a/modules/nf-core/bcftools/concat/tests/main.nf.test +++ b/modules/nf-core/bcftools/concat/tests/main.nf.test @@ -10,7 +10,7 @@ nextflow_process { tag "bcftools/concat" - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]]") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]]") { config "./nextflow.config" @@ -41,7 +41,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index") { config "./vcf_gz_index.config" @@ -78,7 +78,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi") { config "./vcf_gz_index_csi.config" @@ -115,7 +115,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi") { config "./vcf_gz_index_tbi.config" @@ -153,7 +153,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], []]") { + test("homo_sapiens - [[vcf1, vcf2], []]") { config "./nextflow.config" @@ -181,7 +181,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - stub") { config "./nextflow.config" options "-stub" @@ -213,7 +213,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub") { config "./vcf_gz_index.config" options "-stub" @@ -246,7 +246,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub") { config "./vcf_gz_index_csi.config" options "-stub" @@ -279,7 +279,7 @@ nextflow_process { } - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub") { + test("homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub") { config "./vcf_gz_index_tbi.config" options "-stub" diff --git a/modules/nf-core/bcftools/concat/tests/main.nf.test.snap b/modules/nf-core/bcftools/concat/tests/main.nf.test.snap index 1182854f..09e87cd3 100644 --- a/modules/nf-core/bcftools/concat/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/concat/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub": { "content": [ { "0": [ @@ -49,12 +49,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T08:09:13.734103412" + "timestamp": "2024-09-26T11:04:11.178539482" }, - "sarscov2 - [[vcf1, vcf2], []]": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]]": { "content": [ { "0": [ @@ -94,12 +94,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-04T15:19:09.213249578" + "timestamp": "2024-09-26T11:03:08.765639958" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index": { "content": [ [ [ @@ -125,12 +125,12 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T08:08:23.981388325" + "timestamp": "2024-09-26T11:03:21.607274757" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub": { "content": [ { "0": [ @@ -142,29 +142,29 @@ ] ], "1": [ - - ], - "2": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + ], "3": [ "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" ], "csi": [ + + ], + "tbi": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tbi": [ - ], "vcf": [ [ @@ -180,12 +180,43 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-26T11:04:27.332133878" + }, + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi": { + "content": [ + [ + [ + { + "id": "test3" + }, + "test3_vcf.vcf.gz:md5,5f6796c3ae109a1a5b87353954693f5a" + ] + ], + [ + [ + { + "id": "test3" + }, + "test3_vcf.vcf.gz.csi" + ] + ], + [ + + ], + [ + "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T14:01:24.419027693" + "timestamp": "2024-09-26T11:03:36.575719606" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]]": { + "homo_sapiens - [[vcf1, vcf2], []]": { "content": [ { "0": [ @@ -225,43 +256,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-04T15:19:03.597061078" + "timestamp": "2024-09-26T11:03:54.069826178" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi": { - "content": [ - [ - [ - { - "id": "test3" - }, - "test3_vcf.vcf.gz:md5,5f6796c3ae109a1a5b87353954693f5a" - ] - ], - [ - [ - { - "id": "test3" - }, - "test3_vcf.vcf.gz.csi" - ] - ], - [ - - ], - [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-05T14:00:10.868487669" - }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { "content": [ { "0": [ @@ -301,12 +301,12 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-04T15:19:14.836256897" + "timestamp": "2024-09-26T11:04:02.45346063" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi": { "content": [ [ [ @@ -332,12 +332,12 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T14:00:31.061411617" + "timestamp": "2024-09-26T11:03:44.618596639" }, - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub": { + "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub": { "content": [ { "0": [ @@ -349,29 +349,29 @@ ] ], "1": [ + + ], + "2": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "2": [ - ], "3": [ "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" ], "csi": [ - - ], - "tbi": [ [ { "id": "test3" }, - "test3_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test3_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "tbi": [ + ], "vcf": [ [ @@ -387,9 +387,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-05T14:01:35.209746508" + "timestamp": "2024-09-26T11:04:19.745768656" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/index/environment.yml b/modules/nf-core/bcftools/index/environment.yml index ea752646..5c00b116 100644 --- a/modules/nf-core/bcftools/index/environment.yml +++ b/modules/nf-core/bcftools/index/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/index/meta.yml b/modules/nf-core/bcftools/index/meta.yml index 0207d057..6897d1bd 100644 --- a/modules/nf-core/bcftools/index/meta.yml +++ b/modules/nf-core/bcftools/index/meta.yml @@ -8,40 +8,55 @@ keywords: - tbi tools: - bcftools: - description: BCFtools is a set of utilities that manipulate variant calls in the Variant Call Format (VCF) and its binary counterpart BCF. All commands work transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed. Most commands accept VCF, bgzipped VCF and BCF with filetype detected automatically even when streaming from a pipe. Indexed VCF and BCF will work in all situations. Un-indexed VCF and BCF and streams will work in most, but not all situations. + description: BCFtools is a set of utilities that manipulate variant calls in the + Variant Call Format (VCF) and its binary counterpart BCF. All commands work + transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed. Most + commands accept VCF, bgzipped VCF and BCF with filetype detected automatically + even when streaming from a pipe. Indexed VCF and BCF will work in all situations. + Un-indexed VCF and BCF and streams will work in most, but not all situations. homepage: https://samtools.github.io/bcftools/ documentation: https://samtools.github.io/bcftools/howtos/index.html tool_dev_url: https://github.com/samtools/bcftools doi: "10.1093/gigascience/giab008" licence: ["MIT", "GPL-3.0-or-later"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF file (optionally GZIPPED) - pattern: "*.{vcf,vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF file (optionally GZIPPED) + pattern: "*.{vcf,vcf.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software version - pattern: "versions.yml" - csi: - type: file - description: Default VCF file index file - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index file + pattern: "*.csi" - tbi: - type: file - description: Alternative VCF file index file for larger files (activated with -t parameter) - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index file for larger files (activated with + -t parameter) + pattern: "*.tbi" + - versions: + - versions.yml: + type: file + description: File containing software version + pattern: "versions.yml" authors: - "@jfy133" maintainers: diff --git a/modules/nf-core/bcftools/merge/meta.yml b/modules/nf-core/bcftools/merge/meta.yml deleted file mode 100644 index 87707140..00000000 --- a/modules/nf-core/bcftools/merge/meta.yml +++ /dev/null @@ -1,88 +0,0 @@ -name: bcftools_merge -description: Merge VCF files -keywords: - - variant calling - - merge - - VCF -tools: - - merge: - description: | - Merge VCF files. - homepage: http://samtools.github.io/bcftools/bcftools.html - documentation: http://www.htslib.org/doc/bcftools.html - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcfs: - type: file - description: | - List containing 2 or more vcf files - e.g. [ 'file1.vcf', 'file2.vcf' ] - - tbis: - type: file - description: | - List containing the tbi index files corresponding to the vcfs input files - e.g. [ 'file1.vcf.tbi', 'file2.vcf.tbi' ] - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: "(Optional) The fasta reference file (only necessary for the `--gvcf FILE` parameter)" - pattern: "*.{fasta,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: "(Optional) The fasta reference file index (only necessary for the `--gvcf FILE` parameter)" - pattern: "*.fai" - - bed: - type: file - description: "(Optional) The bed regions to merge on" - pattern: "*.bed" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf_gz: - type: file - description: VCF merged output file (bgzipped) => when `--output-type z` is used - pattern: "*.vcf.gz" - - vcf: - type: file - description: VCF merged output file => when `--output-type v` is used - pattern: "*.vcf" - - bcf_gz: - type: file - description: BCF merged output file (bgzipped) => when `--output-type b` is used - pattern: "*.bcf.gz" - - bcf: - type: file - description: BCF merged output file => when `--output-type u` is used - pattern: "*.bcf" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@joseespinosa" - - "@drpatelh" - - "@nvnieuwk" - - "@ramprasadn" -maintainers: - - "@joseespinosa" - - "@drpatelh" - - "@nvnieuwk" - - "@ramprasadn" diff --git a/modules/nf-core/bcftools/norm/environment.yml b/modules/nf-core/bcftools/norm/environment.yml index 0c7dfa8f..5c00b116 100644 --- a/modules/nf-core/bcftools/norm/environment.yml +++ b/modules/nf-core/bcftools/norm/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_norm channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/norm/main.nf b/modules/nf-core/bcftools/norm/main.nf index 97658267..bd7a2501 100644 --- a/modules/nf-core/bcftools/norm/main.nf +++ b/modules/nf-core/bcftools/norm/main.nf @@ -32,7 +32,7 @@ process BCFTOOLS_NORM { """ bcftools norm \\ --fasta-ref ${fasta} \\ - --output ${prefix}.${extension}\\ + --output ${prefix}.${extension} \\ $args \\ --threads $task.cpus \\ ${vcf} diff --git a/modules/nf-core/bcftools/norm/meta.yml b/modules/nf-core/bcftools/norm/meta.yml index a0cdeaf1..b6edeb4a 100644 --- a/modules/nf-core/bcftools/norm/meta.yml +++ b/modules/nf-core/bcftools/norm/meta.yml @@ -13,54 +13,70 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be normalized - e.g. 'file1.vcf' - pattern: "*.{vcf,vcf.gz}" - - tbi: - type: file - description: | - An optional index of the VCF file (for when the VCF is compressed) - pattern: "*.vcf.gz.tbi" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: FASTA reference file - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be normalized + e.g. 'file1.vcf' + pattern: "*.{vcf,vcf.gz}" + - tbi: + type: file + description: | + An optional index of the VCF file (for when the VCF is compressed) + pattern: "*.vcf.gz.tbi" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: FASTA reference file + pattern: "*.{fasta,fa}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed + BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/pluginsplit/environment.yml b/modules/nf-core/bcftools/pluginsplit/environment.yml index 1f7bb1ff..5c00b116 100644 --- a/modules/nf-core/bcftools/pluginsplit/environment.yml +++ b/modules/nf-core/bcftools/pluginsplit/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_pluginsplit channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/pluginsplit/meta.yml b/modules/nf-core/bcftools/pluginsplit/meta.yml index 64bfce0a..41f76658 100644 --- a/modules/nf-core/bcftools/pluginsplit/meta.yml +++ b/modules/nf-core/bcftools/pluginsplit/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json name: "bcftools_pluginsplit" description: Split VCF by sample, creating single- or multi-sample VCFs. @@ -14,60 +13,83 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: The VCF file to split + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - tbi: + type: file + description: OPTIONAL - The index of the input VCF/BCF + pattern: "*.tbi" + - - samples: + type: file + description: | + A tab-separated file determining which samples should be in which output file + column 1: The sample name(s) in the input file + column 2: The sample name(s) to use in the output file (use `-` to keep the original name) + column 3: The name of the output file + Either this or a groups file should be given + pattern: "*" + - - groups: + type: file + description: | + A tab-separated file determining which samples should be in which output file(s) + column 1: The sample name(s) in the input file + column 2: The sample name(s) to use in the output file (use `-` to keep the original name) + column 3: The name of the output file(s) + Either this or a samples file should be given + pattern: "*" + - - regions: + type: file + description: A BED file containing regions to use + pattern: "*.bed" + - - targets: + type: file + description: A BED file containing regions to use (but streams rather than index-jumps) + pattern: "*.bed" +output: - vcf: - type: file - description: The VCF file to split - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: The resulting VCF files from the split + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: OPTIONAL - The index of the input VCF/BCF - pattern: "*.tbi" - - samples: - type: file - description: | - A tab-separated file determining which samples should be in which output file - column 1: The sample name(s) in the input file - column 2: The sample name(s) to use in the output file (use `-` to keep the original name) - column 3: The name of the output file - Either this or a groups file should be given - pattern: "*" - - groups: - type: file - description: | - A tab-separated file determining which samples should be in which output file(s) - column 1: The sample name(s) in the input file - column 2: The sample name(s) to use in the output file (use `-` to keep the original name) - column 3: The name of the output file(s) - Either this or a samples file should be given - pattern: "*" - - regions: - type: file - description: A BED file containing regions to use - pattern: "*.bed" - - targets: - type: file - description: A BED file containing regions to use (but streams rather than index-jumps) - pattern: "*.bed" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: TBI file + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: CSI file + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - vcf: - type: file - description: The resulting VCF files from the split - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/local/trgt/enviroment.yml b/modules/nf-core/bcftools/query/environment.yml similarity index 51% rename from modules/local/trgt/enviroment.yml rename to modules/nf-core/bcftools/query/environment.yml index e6c0944a..5c00b116 100644 --- a/modules/local/trgt/enviroment.yml +++ b/modules/nf-core/bcftools/query/environment.yml @@ -1,7 +1,5 @@ -name: trgt channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::trgt=0.4.0 + - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/query/main.nf b/modules/nf-core/bcftools/query/main.nf new file mode 100644 index 00000000..58019f4d --- /dev/null +++ b/modules/nf-core/bcftools/query/main.nf @@ -0,0 +1,56 @@ +process BCFTOOLS_QUERY { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': + 'biocontainers/bcftools:1.20--h8b25389_0' }" + + input: + tuple val(meta), path(vcf), path(tbi) + path regions + path targets + path samples + + output: + tuple val(meta), path("*.${suffix}"), emit: output + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + suffix = task.ext.suffix ?: "txt" + def regions_file = regions ? "--regions-file ${regions}" : "" + def targets_file = targets ? "--targets-file ${targets}" : "" + def samples_file = samples ? "--samples-file ${samples}" : "" + """ + bcftools query \\ + $regions_file \\ + $targets_file \\ + $samples_file \\ + $args \\ + $vcf \\ + > ${prefix}.${suffix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + suffix = task.ext.suffix ?: "txt" + """ + touch ${prefix}.${suffix} \\ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/bcftools/query/meta.yml b/modules/nf-core/bcftools/query/meta.yml new file mode 100644 index 00000000..279b3205 --- /dev/null +++ b/modules/nf-core/bcftools/query/meta.yml @@ -0,0 +1,67 @@ +name: bcftools_query +description: Extracts fields from VCF or BCF files and outputs them in user-defined + format. +keywords: + - query + - variant calling + - bcftools + - VCF +tools: + - query: + description: | + Extracts fields from VCF or BCF files and outputs them in user-defined format. + homepage: http://samtools.github.io/bcftools/bcftools.html + documentation: http://www.htslib.org/doc/bcftools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] + identifier: biotools:bcftools +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be qeuried. + pattern: "*.{vcf.gz, vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. + pattern: "*.tbi" + - - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + - - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + - - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' +output: + - output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${suffix}": + type: file + description: BCFTools query output file + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@drpatelh" +maintainers: + - "@abhi18av" + - "@drpatelh" diff --git a/modules/nf-core/bcftools/query/tests/main.nf.test b/modules/nf-core/bcftools/query/tests/main.nf.test new file mode 100644 index 00000000..39e67b35 --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/main.nf.test @@ -0,0 +1,101 @@ +nextflow_process { + + name "Test Process BCFTOOLS_QUERY" + script "../main.nf" + process "BCFTOOLS_QUERY" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/query" + + config "./nextflow.config" + + test("sarscov2 - [vcf, tbi], [], [], []") { + + when { + process { + """ + input[0] = [ + [ id:'out' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], vcf, tsv, []") { + + when { + process { + """ + input[0] = [ + [ id:'out' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.targets.tsv.gz', checkIfExists: true) + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - stub") { + + when { + process { + """ + input[0] = [ + [ id:'out' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.output[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bcftools/query/tests/main.nf.test.snap b/modules/nf-core/bcftools/query/tests/main.nf.test.snap new file mode 100644 index 00000000..3ead1f2c --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/main.nf.test.snap @@ -0,0 +1,55 @@ +{ + "sarscov2 - [vcf, tbi], vcf, tsv, []": { + "content": [ + [ + [ + { + "id": "out" + }, + "out.txt:md5,75a6bd0084e2e1838cf7baba11b99d19" + ] + ], + [ + "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-31T15:15:44.916249758" + }, + "sarscov2 - [vcf, tbi], [], [], [] - stub": { + "content": [ + "out.txt", + [ + "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-31T15:15:49.932359271" + }, + "sarscov2 - [vcf, tbi], [], [], []": { + "content": [ + [ + [ + { + "id": "out" + }, + "out.txt:md5,87a2ab194e1ee3219b44e58429ec3307" + ] + ], + [ + "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-31T15:15:39.930697926" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/query/tests/nextflow.config b/modules/nf-core/bcftools/query/tests/nextflow.config new file mode 100644 index 00000000..da81c2a0 --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "-f '%CHROM %POS %REF %ALT[%SAMPLE=%GT]'" +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/query/tests/tags.yml b/modules/nf-core/bcftools/query/tests/tags.yml new file mode 100644 index 00000000..fb9455cb --- /dev/null +++ b/modules/nf-core/bcftools/query/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/query: + - "modules/nf-core/bcftools/query/**" diff --git a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff b/modules/nf-core/bcftools/reheader/bcftools-reheader.diff deleted file mode 100644 index 65ddb0a2..00000000 --- a/modules/nf-core/bcftools/reheader/bcftools-reheader.diff +++ /dev/null @@ -1,28 +0,0 @@ -Changes in module 'nf-core/bcftools/reheader' ---- modules/nf-core/bcftools/reheader/main.nf -+++ modules/nf-core/bcftools/reheader/main.nf -@@ -32,17 +32,14 @@ - args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : - "vcf" - """ -+ echo "${meta.id}" > samples -+ - bcftools \\ - reheader \\ -- $fai_argument \\ -- $header_argument \\ -- $samples_argument \\ -- $args \\ -- --threads $task.cpus \\ -+ -s samples \\ - $vcf \\ -- | bcftools view \\ -- $args2 \\ -- --output ${prefix}.${extension} -+ > ${prefix}.reheader.vcf -+ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - -************************************************************ diff --git a/modules/nf-core/bcftools/reheader/environment.yml b/modules/nf-core/bcftools/reheader/environment.yml index 48fd72c9..5c00b116 100644 --- a/modules/nf-core/bcftools/reheader/environment.yml +++ b/modules/nf-core/bcftools/reheader/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_reheader channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/reheader/main.nf b/modules/nf-core/bcftools/reheader/main.nf index e1cf0091..9cf6d0d3 100644 --- a/modules/nf-core/bcftools/reheader/main.nf +++ b/modules/nf-core/bcftools/reheader/main.nf @@ -13,6 +13,7 @@ process BCFTOOLS_REHEADER { output: tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true path "versions.yml" , emit: versions when: @@ -32,14 +33,17 @@ process BCFTOOLS_REHEADER { args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" """ - echo "${meta.id}" > samples - bcftools \\ reheader \\ - -s samples \\ + $fai_argument \\ + $header_argument \\ + $samples_argument \\ + $args \\ + --threads $task.cpus \\ $vcf \\ - > ${prefix}.reheader.vcf - + | bcftools view \\ + $args2 \\ + --output ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -56,8 +60,16 @@ process BCFTOOLS_REHEADER { args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" + def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : + args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : + args2.contains("--write-index") || args2.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + """ - touch ${prefix}.${extension} + ${create_cmd} ${prefix}.${extension} + ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/reheader/meta.yml b/modules/nf-core/bcftools/reheader/meta.yml index 690d4ead..47e5344c 100644 --- a/modules/nf-core/bcftools/reheader/meta.yml +++ b/modules/nf-core/bcftools/reheader/meta.yml @@ -12,47 +12,60 @@ tools: documentation: http://samtools.github.io/bcftools/bcftools.html#reheader doi: 10.1093/gigascience/giab008 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF/BCF file - pattern: "*.{vcf.gz,vcf,bcf}" - - header: - type: file - description: New header to add to the VCF - pattern: "*.{header.txt}" - - samples: - type: file - description: File containing sample names to update (one sample per line) - pattern: "*.{samples.txt}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Fasta index to update header sequences with - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF/BCF file + pattern: "*.{vcf.gz,vcf,bcf}" + - header: + type: file + description: New header to add to the VCF + pattern: "*.{header.txt}" + - samples: + type: file + description: File containing sample names to update (one sample per line) + pattern: "*.{samples.txt}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Fasta index to update header sequences with + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: VCF with updated header, bgzipped per default - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: VCF with updated header, bgzipped per default + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - index: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{csi,tbi}": + type: file + description: Index of VCF with updated header + pattern: "*.{csi,tbi}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@bjohnnyd" - "@jemten" diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test b/modules/nf-core/bcftools/reheader/tests/main.nf.test index f3200cb3..96c1b7b0 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test @@ -17,13 +17,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -47,13 +47,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -68,6 +68,111 @@ nextflow_process { } + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - index") { + + config "./vcf_gz_index.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index") { + + config "./vcf_gz_index_csi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index") { + + config "./vcf_gz_index_tbi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".tbi") } + ) + } + + } + test("sarscov2 - [vcf, [], []], fai - bcf output") { config "./bcf.config" @@ -77,13 +182,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -107,11 +212,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map [] ] @@ -137,15 +242,15 @@ nextflow_process { """ ch_no_samples = Channel.of([ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [] ]) ch_samples = Channel.of(["samples.txt", "new_name"]) .collectFile(newLine:true) input[0] = ch_no_samples.combine(ch_samples) - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -170,13 +275,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -193,5 +298,97 @@ nextflow_process { } } + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub") { + + options "-stub" + config "./vcf_gz_index.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub") { + + options "-stub" + config "./vcf_gz_index_csi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub") { + + options "-stub" + config "./vcf_gz_index_tbi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } } diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap index 3629393b..87a3654a 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap @@ -1,4 +1,140 @@ { + "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:09:05.955833763" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:52:41.444952182" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:53:04.314827944" + }, "sarscov2 - [vcf, [], []], fai - vcf output": { "content": [ { @@ -12,7 +148,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -32,7 +174,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:52:56.985565049" + "timestamp": "2024-09-03T09:50:41.983008108" }, "sarscov2 - [vcf, [], []], fai - bcf output": { "content": [ @@ -47,7 +189,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -67,7 +215,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:29.509254578" + "timestamp": "2024-09-03T09:51:43.072513252" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output": { "content": [ @@ -82,7 +230,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -102,7 +256,90 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:11.468640381" + "timestamp": "2024-09-03T09:50:53.055630152" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:08:37.999924355" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:52:52.512269206" }, "sarscov2 - [vcf, [], []], fai - stub": { "content": [ @@ -117,6 +354,36 @@ }, "timestamp": "2024-05-31T15:16:36.337112514" }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:08:55.434831174" + }, "sarscov2 - [vcf, [], samples], fai": { "content": [ { @@ -130,7 +397,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -150,7 +423,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:54:04.84196388" + "timestamp": "2024-09-03T09:52:12.216002665" }, "sarscov2 - [vcf, header, []], []": { "content": [ @@ -165,7 +438,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -185,6 +464,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:44.311122728" + "timestamp": "2024-09-03T09:51:54.062386022" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config new file mode 100644 index 00000000..1e050ec7 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000..536e4b42 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index=csi --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000..91a80db7 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config @@ -0,0 +1,5 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index=tbi --no-version" + +} diff --git a/modules/nf-core/bcftools/sort/environment.yml b/modules/nf-core/bcftools/sort/environment.yml index 2295ecfd..5c00b116 100644 --- a/modules/nf-core/bcftools/sort/environment.yml +++ b/modules/nf-core/bcftools/sort/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_sort channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/sort/meta.yml b/modules/nf-core/bcftools/sort/meta.yml index dfbddcba..f7a6eff1 100644 --- a/modules/nf-core/bcftools/sort/meta.yml +++ b/modules/nf-core/bcftools/sort/meta.yml @@ -12,38 +12,53 @@ tools: tool_dev_url: https://github.com/samtools/bcftools doi: "10.1093/bioinformatics/btp352" licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: The VCF/BCF file to be sorted - pattern: "*.{vcf.gz,vcf,bcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: The VCF/BCF file to be sorted + pattern: "*.{vcf.gz,vcf,bcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Sorted VCF file - pattern: "*.{vcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: Sorted VCF file + pattern: "*.{vcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@Gwennid" maintainers: diff --git a/modules/nf-core/bcftools/stats/environment.yml b/modules/nf-core/bcftools/stats/environment.yml index 128fe204..93357b41 100644 --- a/modules/nf-core/bcftools/stats/environment.yml +++ b/modules/nf-core/bcftools/stats/environment.yml @@ -1,8 +1,6 @@ -name: bcftools_stats channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 - bioconda::htslib=1.20 diff --git a/modules/nf-core/bcftools/stats/meta.yml b/modules/nf-core/bcftools/stats/meta.yml index 7ea2103e..655a61c5 100644 --- a/modules/nf-core/bcftools/stats/meta.yml +++ b/modules/nf-core/bcftools/stats/meta.yml @@ -13,58 +13,86 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF input file - pattern: "*.{vcf}" - - tbi: - type: file - description: | - The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. - pattern: "*.tbi" - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' - - exons: - type: file - description: | - Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). - e.g. 'exons.tsv.gz' - - fasta: - type: file - description: | - Faidx indexed reference sequence file to determine INDEL context. - e.g. 'reference.fa' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF input file + pattern: "*.{vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. + pattern: "*.tbi" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) + - - meta4: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' + - - meta5: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - exons: + type: file + description: | + Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). + e.g. 'exons.tsv.gz' + - - meta6: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: | + Faidx indexed reference sequence file to determine INDEL context. + e.g. 'reference.fa' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - stats: - type: file - description: Text output file containing stats - pattern: "*_{stats.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*stats.txt": + type: file + description: Text output file containing stats + pattern: "*_{stats.txt}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bcftools/view/environment.yml b/modules/nf-core/bcftools/view/environment.yml index 4b2a21df..5c00b116 100644 --- a/modules/nf-core/bcftools/view/environment.yml +++ b/modules/nf-core/bcftools/view/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_view channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/view/meta.yml b/modules/nf-core/bcftools/view/meta.yml index 5eb1b196..aa7785f1 100644 --- a/modules/nf-core/bcftools/view/meta.yml +++ b/modules/nf-core/bcftools/view/meta.yml @@ -1,5 +1,6 @@ name: bcftools_view -description: View, subset and filter VCF or BCF files by position and filtering expression. Convert between VCF and BCF +description: View, subset and filter VCF or BCF files by position and filtering expression. + Convert between VCF and BCF keywords: - variant calling - view @@ -13,59 +14,74 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be inspected. - e.g. 'file.vcf' - - index: - type: file - description: | - The tab index for the VCF file to be inspected. - e.g. 'file.tbi' - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. - e.g. 'file.vcf' - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) - e.g. 'file.vcf' - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be inspected. + e.g. 'file.vcf' + - index: + type: file + description: | + The tab index for the VCF file to be inspected. + e.g. 'file.tbi' + - - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + e.g. 'file.vcf' + - - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + e.g. 'file.vcf' + - - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: VCF normalized output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: VCF normalized output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" maintainers: diff --git a/modules/nf-core/bedtools/merge/environment.yml b/modules/nf-core/bedtools/merge/environment.yml index 99707878..5683bc05 100644 --- a/modules/nf-core/bedtools/merge/environment.yml +++ b/modules/nf-core/bedtools/merge/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/merge/meta.yml b/modules/nf-core/bedtools/merge/meta.yml index d7463e3d..6da54205 100644 --- a/modules/nf-core/bedtools/merge/meta.yml +++ b/modules/nf-core/bedtools/merge/meta.yml @@ -1,5 +1,6 @@ name: bedtools_merge -description: combines overlapping or “book-ended” features in an interval file into a single feature which spans all of the combined features. +description: combines overlapping or “book-ended” features in an interval file into + a single feature which spans all of the combined features. keywords: - bed - merge @@ -11,30 +12,33 @@ tools: A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/merge.html licence: ["MIT"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bed: - type: file - description: Input BED file - pattern: "*.{bed}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Input BED file + pattern: "*.{bed}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bed: - type: file - description: Overlapped bed file with combined features - pattern: "*.{bed}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bed": + type: file + description: Overlapped bed file with combined features + pattern: "*.{bed}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/merge/tests/main.nf.test b/modules/nf-core/bedtools/merge/tests/main.nf.test index 95dba8e5..2959d6b9 100644 --- a/modules/nf-core/bedtools/merge/tests/main.nf.test +++ b/modules/nf-core/bedtools/merge/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedtools/sort/environment.yml b/modules/nf-core/bedtools/sort/environment.yml index 87b2e425..5683bc05 100644 --- a/modules/nf-core/bedtools/sort/environment.yml +++ b/modules/nf-core/bedtools/sort/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_sort channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/sort/meta.yml b/modules/nf-core/bedtools/sort/meta.yml index 7c915f5f..313698f1 100644 --- a/modules/nf-core/bedtools/sort/meta.yml +++ b/modules/nf-core/bedtools/sort/meta.yml @@ -11,35 +11,38 @@ tools: A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/sort.html licence: ["MIT"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - intervals: - type: file - description: BED/BEDGRAPH - pattern: "*.{bed|bedGraph}" - - genome_file: - type: file - description: | - Optional reference genome 2 column file that defines the expected chromosome order. - pattern: "*.{fai,txt,chromsizes}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - intervals: + type: file + description: BED/BEDGRAPH + pattern: "*.{bed|bedGraph}" + - - genome_file: + type: file + description: | + Optional reference genome 2 column file that defines the expected chromosome order. + pattern: "*.{fai,txt,chromsizes}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - sorted: - type: file - description: Sorted output file - pattern: "*.${extension}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${extension}": + type: file + description: Sorted output file + pattern: "*.${extension}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/cadd/cadd.diff b/modules/nf-core/cadd/cadd.diff index 2ee51723..2243f02d 100644 --- a/modules/nf-core/cadd/cadd.diff +++ b/modules/nf-core/cadd/cadd.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/cadd' +'modules/nf-core/cadd/meta.yml' is unchanged +Changes in 'cadd/main.nf': --- modules/nf-core/cadd/main.nf +++ modules/nf-core/cadd/main.nf @@ -7,13 +7,14 @@ @@ -13,10 +15,12 @@ Changes in module 'nf-core/cadd' input: tuple val(meta), path(vcf) - path(annotation_dir) -+ path(prescored_dir) +- path(annotation_dir) ++ tuple val(meta2), path(annotation_dir) ++ tuple val(meta3), path(prescored_dir) output: tuple val(meta), path("*.tsv.gz"), emit: tsv +'modules/nf-core/cadd/environment.yml' is unchanged ************************************************************ diff --git a/modules/nf-core/cadd/environment.yml b/modules/nf-core/cadd/environment.yml index 26f170e9..4477e16e 100644 --- a/modules/nf-core/cadd/environment.yml +++ b/modules/nf-core/cadd/environment.yml @@ -1,8 +1,6 @@ -name: cadd channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cadd-scripts=1.6.post1 - conda-forge::conda=4.14.0 diff --git a/modules/nf-core/cadd/main.nf b/modules/nf-core/cadd/main.nf index 52490c64..d830ff72 100644 --- a/modules/nf-core/cadd/main.nf +++ b/modules/nf-core/cadd/main.nf @@ -13,8 +13,8 @@ process CADD { input: tuple val(meta), path(vcf) - path(annotation_dir) - path(prescored_dir) + tuple val(meta2), path(annotation_dir) + tuple val(meta3), path(prescored_dir) output: tuple val(meta), path("*.tsv.gz"), emit: tsv diff --git a/modules/nf-core/cadd/meta.yml b/modules/nf-core/cadd/meta.yml index 230ed9c0..751bea45 100644 --- a/modules/nf-core/cadd/meta.yml +++ b/modules/nf-core/cadd/meta.yml @@ -1,5 +1,6 @@ name: "cadd" -description: CADD is a tool for scoring the deleteriousness of single nucleotide variants as well as insertion/deletions variants in the human genome. +description: CADD is a tool for scoring the deleteriousness of single nucleotide variants + as well as insertion/deletions variants in the human genome. keywords: - cadd - annotate @@ -13,36 +14,39 @@ tools: doi: "10.1093/nar/gky1016" licence: - Restricted. Free for non-commercial users. + identifier: biotools:cadd_phred input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: Input file for annotation in vcf or vcf.gz format - pattern: "*.{vcf,vcf.gz}" - - annotation_dir: - type: file - description: | - Path to folder containing the vcf files with precomputed CADD scores. - This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation. - pattern: "*.{vcf,vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: Input file for annotation in vcf or vcf.gz format + pattern: "*.{vcf,vcf.gz}" + - - annotation_dir: + type: file + description: | + Path to folder containing the vcf files with precomputed CADD scores. + This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation. + pattern: "*.{vcf,vcf.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - tsv: - type: file - description: Annotated tsv file - pattern: "*.{tsv,tsv.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tsv.gz": + type: file + description: Annotated tsv file + pattern: "*.{tsv,tsv.gz}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml index 8c69b121..71e04c3d 100644 --- a/modules/nf-core/cat/fastq/environment.yml +++ b/modules/nf-core/cat/fastq/environment.yml @@ -1,7 +1,5 @@ -name: cat_fastq channels: - conda-forge - bioconda - - defaults dependencies: - - conda-forge::coreutils=8.30 + - conda-forge::coreutils=9.5 diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index b68e5f91..4364a389 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -4,8 +4,8 @@ process CAT_FASTQ { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'nf-core/ubuntu:20.04' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c2/c262fc09eca59edb5a724080eeceb00fb06396f510aefb229c2d2c6897e63975/data' : + 'community.wave.seqera.io/library/coreutils:9.5--ae99c88a9b28c264' }" input: tuple val(meta), path(reads, stageAs: "input*/*") diff --git a/modules/nf-core/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml index db4ac3c7..91ff2fb5 100644 --- a/modules/nf-core/cat/fastq/meta.yml +++ b/modules/nf-core/cat/fastq/meta.yml @@ -10,30 +10,33 @@ tools: The cat utility reads files sequentially, writing them to the standard output. documentation: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files to be concatenated. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files to be concatenated. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - reads: - type: file - description: Merged fastq file - pattern: "*.{merged.fastq.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.merged.fastq.gz": + type: file + description: Merged fastq file + pattern: "*.{merged.fastq.gz}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test.snap b/modules/nf-core/cat/fastq/tests/main.nf.test.snap index aec119a9..f8689a1c 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test.snap +++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -24,15 +24,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:30:39.816981" + "timestamp": "2024-10-19T20:02:07.519211144" }, "test_cat_fastq_single_end_same_name": { "content": [ @@ -47,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -59,15 +59,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:32:35.229332" + "timestamp": "2024-10-19T20:02:31.618628921" }, "test_cat_fastq_single_end_single_file": { "content": [ @@ -82,7 +82,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -94,15 +94,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:34:00.058829" + "timestamp": "2024-10-19T20:02:57.904149581" }, "test_cat_fastq_paired_end_same_name": { "content": [ @@ -120,7 +120,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -135,15 +135,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:33:33.031555" + "timestamp": "2024-10-19T20:02:44.577183829" }, "test_cat_fastq_single_end - stub": { "content": [ @@ -158,7 +158,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -170,15 +170,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:28.244999" + "timestamp": "2024-10-19T20:03:10.603734777" }, "test_cat_fastq_paired_end_same_name - stub": { "content": [ @@ -196,7 +196,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -211,15 +211,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:57.070911" + "timestamp": "2024-10-19T20:03:46.041808828" }, "test_cat_fastq_single_end_same_name - stub": { "content": [ @@ -234,7 +234,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -246,15 +246,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:46.796254" + "timestamp": "2024-10-19T20:03:34.13865402" }, "test_cat_fastq_paired_end": { "content": [ @@ -272,7 +272,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -287,15 +287,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-01-17T17:32:02.270935" + "timestamp": "2024-10-19T20:02:19.64383573" }, "test_cat_fastq_paired_end - stub": { "content": [ @@ -313,7 +313,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -328,15 +328,15 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:07:37.807553" + "timestamp": "2024-10-19T20:03:22.597246066" }, "test_cat_fastq_single_end_single_file - stub": { "content": [ @@ -351,7 +351,7 @@ ] ], "1": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ], "reads": [ [ @@ -363,14 +363,14 @@ ] ], "versions": [ - "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + "versions.yml:md5,6ef4fd28546a005865b9454bbedbf81a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-05T12:14:51.861264" + "timestamp": "2024-10-19T20:03:58.44849001" } } \ No newline at end of file diff --git a/modules/nf-core/deepvariant/README.md b/modules/nf-core/deepvariant/README.md deleted file mode 100644 index 9d1ceb34..00000000 --- a/modules/nf-core/deepvariant/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Conda is not supported at the moment - -The [bioconda](https://bioconda.github.io/recipes/deepvariant/README.html) recipe is not fully working as expected. - -See https://github.com/bioconda/bioconda-recipes/issues/30310 and https://github.com/nf-core/modules/issues/1754 for more information. - -Hence, we are using the docker container provided by the authors of the tool: - -- [google/deepvariant](https://hub.docker.com/r/google/deepvariant) - -This image is mirrored on the [nf-core quay.io](https://quay.io/repository/nf-core/deepvariant) for convenience. diff --git a/modules/nf-core/deepvariant/meta.yml b/modules/nf-core/deepvariant/meta.yml deleted file mode 100644 index 2327dd5f..00000000 --- a/modules/nf-core/deepvariant/meta.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: deepvariant -description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data -keywords: - - variant calling - - machine learning - - neural network -tools: - - deepvariant: - description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data - homepage: https://github.com/google/deepvariant - documentation: https://github.com/google/deepvariant - tool_dev_url: https://github.com/google/deepvariant - doi: "10.1038/nbt.4235" - licence: ["BSD-3-clause"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM file - pattern: "*.bam/cram" - - index: - type: file - description: Index of BAM/CRAM file - pattern: "*.bai/crai" - - interval: - type: file - description: Interval file for targeted regions - pattern: "*.bed" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Index of reference fasta file - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - gzi: - type: file - description: GZI index of reference fasta file - pattern: "*.gzi" - - meta5: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - par_bed: - type: file - description: BED file containing PAR regions - pattern: "*.bed" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: Compressed VCF file - pattern: "*.vcf.gz" - - gvcf: - type: file - description: Compressed GVCF file - pattern: "*.g.vcf.gz" - - version: - type: file - description: File containing software version - pattern: "*.{version.txt}" -authors: - - "@abhi18av" - - "@ramprasadn" -maintainers: - - "@abhi18av" - - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/main.nf b/modules/nf-core/deepvariant/rundeepvariant/main.nf similarity index 98% rename from modules/nf-core/deepvariant/main.nf rename to modules/nf-core/deepvariant/rundeepvariant/main.nf index 8d3d0911..7f99c53f 100644 --- a/modules/nf-core/deepvariant/main.nf +++ b/modules/nf-core/deepvariant/rundeepvariant/main.nf @@ -1,4 +1,4 @@ -process DEEPVARIANT { +process DEEPVARIANT_RUNDEEPVARIANT { tag "$meta.id" label 'process_high' diff --git a/modules/nf-core/deepvariant/rundeepvariant/meta.yml b/modules/nf-core/deepvariant/rundeepvariant/meta.yml new file mode 100644 index 00000000..29b45ff9 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/meta.yml @@ -0,0 +1,122 @@ +name: deepvariant_rundeepvariant +description: DeepVariant is an analysis pipeline that uses a deep neural network to + call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network + to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] + identifier: biotools:deepvariant +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file + pattern: "*.bam/cram" + - index: + type: file + description: Index of BAM/CRAM file + pattern: "*.bai/crai" + - intervals: + type: file + description: file containing intervals + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - gzi: + type: file + description: GZI index of reference fasta file + pattern: "*.gzi" + - - meta5: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - par_bed: + type: file + description: BED file containing PAR regions + pattern: "*.bed" +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.vcf.gz: + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" + - vcf_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.vcf.gz.tbi: + type: file + description: Tabix index file of compressed VCF + pattern: "*.vcf.gz.tbi" + - gvcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.g.vcf.gz: + type: file + description: Compressed GVCF file + pattern: "*.g.vcf.gz" + - gvcf_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.g.vcf.gz.tbi: + type: file + description: Tabix index file of compressed GVCF + pattern: "*.g.vcf.gz.tbi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@ramprasadn" +maintainers: + - "@abhi18av" + - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/tests/main.nf.test b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test similarity index 97% rename from modules/nf-core/deepvariant/tests/main.nf.test rename to modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test index 17765233..0790fb81 100644 --- a/modules/nf-core/deepvariant/tests/main.nf.test +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test @@ -1,9 +1,10 @@ nextflow_process { - name "Test Process DEEPVARIANT" + name "Test Process DEEPVARIANT_RUNDEEPVARIANT" script "../main.nf" - process "DEEPVARIANT" + process "DEEPVARIANT_RUNDEEPVARIANT" + tag "deepvariant/rundeepvariant" tag "deepvariant" tag "modules" tag "modules_nfcore" @@ -162,4 +163,4 @@ nextflow_process { } } -} \ No newline at end of file +} diff --git a/modules/nf-core/deepvariant/tests/main.nf.test.snap b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap similarity index 91% rename from modules/nf-core/deepvariant/tests/main.nf.test.snap rename to modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap index 04f87774..1ec351ee 100644 --- a/modules/nf-core/deepvariant/tests/main.nf.test.snap +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap @@ -39,7 +39,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -78,15 +78,15 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-01T12:09:40.987117305" + "timestamp": "2024-08-29T11:36:27.325363" }, "homo_sapiens - [bam, bai] - fasta - fai": { "content": [ @@ -128,7 +128,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -167,15 +167,15 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-01T12:08:47.058887374" + "timestamp": "2024-08-29T11:34:41.779153" }, "homo_sapiens - [cram, crai, genome_bed] - fasta - fai": { "content": [ @@ -217,7 +217,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -256,15 +256,15 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-01T12:09:13.952808655" + "timestamp": "2024-08-29T11:35:16.993129" }, "homo_sapiens - [cram, crai, genome_bed] - fasta - fai - par_bed": { "content": [ @@ -306,7 +306,7 @@ ] ], "4": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ], "gvcf": [ [ @@ -345,14 +345,14 @@ ] ], "versions": [ - "versions.yml:md5,efbdcb1ad96e0209b31bcafedd0017a8" + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-23T14:29:24.939680679" + "timestamp": "2024-08-29T11:35:52.23093" } -} +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/tests/nextflow-intervals.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config similarity index 70% rename from modules/nf-core/deepvariant/tests/nextflow-intervals.config rename to modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config index 6d135f9f..78d8d598 100644 --- a/modules/nf-core/deepvariant/tests/nextflow-intervals.config +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config @@ -1,6 +1,6 @@ process { - withName: DEEPVARIANT { + withName: DEEPVARIANT_RUNDEEPVARIANT { ext.args = '--model_type=WGS ' ext.prefix = { "${meta.id}_out" } } diff --git a/modules/nf-core/deepvariant/tests/nextflow-non-autosomal-calling.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config similarity index 74% rename from modules/nf-core/deepvariant/tests/nextflow-non-autosomal-calling.config rename to modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config index 4be8986b..6d265292 100644 --- a/modules/nf-core/deepvariant/tests/nextflow-non-autosomal-calling.config +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config @@ -1,6 +1,6 @@ process { - withName: DEEPVARIANT { + withName: DEEPVARIANT_RUNDEEPVARIANT { ext.args = '--model_type=WGS --haploid_contigs chr22' ext.prefix = { "${meta.id}_out" } } diff --git a/modules/nf-core/deepvariant/tests/nextflow.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config similarity index 75% rename from modules/nf-core/deepvariant/tests/nextflow.config rename to modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config index d335d30b..77e355ca 100644 --- a/modules/nf-core/deepvariant/tests/nextflow.config +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config @@ -1,6 +1,6 @@ process { - withName: DEEPVARIANT { + withName: DEEPVARIANT_RUNDEEPVARIANT { ext.args = ' --regions=\"chr22:0-40001\" --model_type=WGS ' ext.prefix = { "${meta.id}_out" } } diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml b/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml new file mode 100644 index 00000000..958b8e41 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/rundeepvariant: + - modules/nf-core/deepvariant/rundeepvariant/** diff --git a/modules/nf-core/deepvariant/tests/tags.yml b/modules/nf-core/deepvariant/tests/tags.yml deleted file mode 100644 index 8e838c7b..00000000 --- a/modules/nf-core/deepvariant/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -deepvariant: - - modules/nf-core/deepvariant/** diff --git a/modules/nf-core/deepvariant/vcfstatsreport/main.nf b/modules/nf-core/deepvariant/vcfstatsreport/main.nf new file mode 100644 index 00000000..5bbf06b6 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/main.nf @@ -0,0 +1,59 @@ +process DEEPVARIANT_VCFSTATSREPORT { + tag "$meta.id" + label 'process_single' + + // FIXME Conda is not supported at the moment + // BUG https://github.com/nf-core/modules/issues/1754 + // BUG https://github.com/bioconda/bioconda-recipes/issues/30310 + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(vcf) + + output: + tuple val(meta), path("${prefix}.visual_report.html"), emit: report + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + + """ + /opt/deepvariant/bin/vcf_stats_report \\ + --input_vcf=${vcf} \\ + --outfile_base ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + """ + touch ${prefix}.visual_report.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/vcfstatsreport/meta.yml b/modules/nf-core/deepvariant/vcfstatsreport/meta.yml new file mode 100644 index 00000000..c882a1b1 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/meta.yml @@ -0,0 +1,47 @@ +name: deepvariant_vcfstatsreport +description: DeepVariant is an analysis pipeline that uses a deep neural network to + call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network + to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] + identifier: biotools:deepvariant +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF file + pattern: "{*.vcf,vcf.gz,bcf,bcf.gz}" +output: + - report: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.visual_report.html: + type: file + description: Visual report in HTML format + pattern: "*.html" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test new file mode 100644 index 00000000..bec946ef --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test @@ -0,0 +1,183 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_VCFSTATSREPORT" + script "../main.nf" + process "DEEPVARIANT_VCFSTATSREPORT" + + tag "deepvariant/vcfstatsreport" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("vcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap new file mode 100644 index 00000000..9a9ac3ce --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap @@ -0,0 +1,266 @@ +{ + "bcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:19:35.672028563" + }, + "bcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:47:10.485269156" + }, + "vcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:34:50.411910578" + }, + "vcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:47:00.438649988" + }, + "vcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:44:07.427456921" + }, + "bcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:35:03.341417618" + }, + "bcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:35:13.52398762" + }, + "vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:34:35.977457571" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml b/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml new file mode 100644 index 00000000..3b1f5922 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/vcfstatsreport: + - modules/nf-core/deepvariant/vcfstatsreport/** diff --git a/modules/nf-core/ensemblvep/filtervep/environment.yml b/modules/nf-core/ensemblvep/filtervep/environment.yml new file mode 100644 index 00000000..3d36eb17 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::ensembl-vep=113.0 diff --git a/modules/nf-core/ensemblvep/filtervep/main.nf b/modules/nf-core/ensemblvep/filtervep/main.nf new file mode 100644 index 00000000..69245df0 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/main.nf @@ -0,0 +1,49 @@ +process ENSEMBLVEP_FILTERVEP { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + + input: + tuple val(meta), path(input) + path (feature_file) + + output: + tuple val(meta), path("*.${extension}"), emit: output + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + extension = task.ext.suffix ?: "vcf" + """ + filter_vep \\ + $args \\ + --input_file $input \\ + --output_file ${prefix}.${extension} \\ + --only_matched + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ensemblvep: \$( echo \$(vep --help 2>&1) | sed 's/^.*Versions:.*ensembl-vep : //;s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + extension = task.ext.suffix ?: "vcf" + """ + touch ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ensemblvep: \$( echo \$(vep --help 2>&1) | sed 's/^.*Versions:.*ensembl-vep : //;s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/ensemblvep/filtervep/meta.yml b/modules/nf-core/ensemblvep/filtervep/meta.yml new file mode 100644 index 00000000..a73e3b7a --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/meta.yml @@ -0,0 +1,50 @@ +name: ensemblvep_filtervep +description: Filter variants based on Ensembl Variant Effect Predictor (VEP) annotations. +keywords: + - annotation + - vcf + - tab + - filter +tools: + - ensemblvep: + description: | + VEP determines the effect of your variants (SNPs, insertions, deletions, CNVs + or structural variants) on genes, transcripts, and protein sequence, as well as regulatory regions. + homepage: https://www.ensembl.org/info/docs/tools/vep/index.html + documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html + licence: ["Apache-2.0"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - input: + type: file + description: VCF/TAB file annotated with vep + pattern: "*.{vcf,tab,tsv,txt}" + - - feature_file: + type: file + description: File containing features on separate lines. To be used with --filter + option. +output: + - output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.${extension}": + type: file + description: VCF/TAB file + pattern: "*.{vcf,tab,txt,tsv}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@ramprasadn" +maintainers: + - "@ramprasadn" diff --git a/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test new file mode 100644 index 00000000..7147792f --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test @@ -0,0 +1,136 @@ +nextflow_process { + + name "Test Process ENSEMBLVEP_FILTERVEP" + script "../main.nf" + process "ENSEMBLVEP_FILTERVEP" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "ensemblvep" + tag "ensemblvep/vep" + tag "ensemblvep/filtervep" + tag "ensemblvep/download" + + // Test for filtering VCF file + test("test_ensemblvep_filtervep_vcf") { + config "./vcf.config" + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../download/main.nf" + + process { + """ + input[0] = Channel.of([ + [id:"113_WBcel235"], + params.vep_genome, + params.vep_species, + params.vep_cache_version + ]) + """ + } + } + run("ENSEMBLVEP_VEP") { + script "../../vep/main.nf" + + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] + ]) + input[1] = params.vep_genome + input[2] = params.vep_species + input[3] = params.vep_cache_version + input[4] = ENSEMBLVEP_DOWNLOAD.out.cache.map{ meta, cache -> [cache] } + input[5] = Channel.value([ + [id:"fasta"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[6] = [] + """ + } + } + } + + when { + process { + """ + input[0] = ENSEMBLVEP_VEP.out.vcf + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.output.get(0).get(1)).readLines().first().contains("##fileformat=VCFv4.2") } + ) + } + } + + // Test for filtering TAB file + test("test_ensemblvep_filtervep_tab_gz") { + config "./tab.gz.config" + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../download/main.nf" + + process { + """ + input[0] = Channel.of([ + [id:"113_WBcel235"], + params.vep_genome, + params.vep_species, + params.vep_cache_version + ]) + """ + } + } + run("ENSEMBLVEP_VEP") { + script "../../vep/main.nf" + + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] + ]) + input[1] = params.vep_genome + input[2] = params.vep_species + input[3] = params.vep_cache_version + input[4] = ENSEMBLVEP_DOWNLOAD.out.cache.map{ meta, cache -> [cache] } + input[5] = Channel.value([ + [id:"fasta"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[6] = [] + """ + } + } + } + + when { + process { + """ + input[0] = ENSEMBLVEP_VEP.out.tab + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.output.get(0).get(1)).readLines().first().contains("## ENSEMBL VARIANT EFFECT PREDICTOR v113.0") } + ) + } + } +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap new file mode 100644 index 00000000..065d747b --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap @@ -0,0 +1,26 @@ +{ + "test_ensemblvep_filtervep_vcf": { + "content": [ + [ + "versions.yml:md5,1e8906572b04dd21d8c6973efac773c6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-21T09:10:47.874831491" + }, + "test_ensemblvep_filtervep_tab_gz": { + "content": [ + [ + "versions.yml:md5,1e8906572b04dd21d8c6973efac773c6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-21T09:11:18.765461163" + } +} \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config b/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config new file mode 100644 index 00000000..40b3a3bd --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config @@ -0,0 +1,10 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ +params { + vep_cache_version = "113" + vep_genome = "WBcel235" + vep_species = "caenorhabditis_elegans" +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config b/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config new file mode 100644 index 00000000..cdad2d94 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config @@ -0,0 +1,24 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + + withName: ENSEMBLVEP_VEP { + ext.args = '--tab' + ext.prefix = { "${meta.id}_vep" } + } + + withName: ENSEMBLVEP_FILTERVEP { + ext.args = '--filter "Feature_type is Transcript"' + ext.suffix = "tab" + } +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/tags.yml b/modules/nf-core/ensemblvep/filtervep/tests/tags.yml new file mode 100644 index 00000000..b43bf40d --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/tags.yml @@ -0,0 +1,2 @@ +ensemblvep/filtervep: + - "modules/nf-core/ensemblvep/filtervep/**" diff --git a/modules/nf-core/ensemblvep/filtervep/tests/vcf.config b/modules/nf-core/ensemblvep/filtervep/tests/vcf.config new file mode 100644 index 00000000..ee2aef57 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/vcf.config @@ -0,0 +1,23 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + + withName: ENSEMBLVEP_VEP { + ext.args = '--vcf' + ext.prefix = { "${meta.id}_vep" } + } + + withName: ENSEMBLVEP_FILTERVEP { + ext.args = '--filter "Feature_type is Transcript"' + } +} diff --git a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff index 8626a663..00a03673 100644 --- a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff +++ b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff @@ -1,25 +1,34 @@ Changes in module 'nf-core/ensemblvep/vep' +'modules/nf-core/ensemblvep/vep/meta.yml' is unchanged +Changes in 'ensemblvep/vep/main.nf': --- modules/nf-core/ensemblvep/vep/main.nf +++ modules/nf-core/ensemblvep/vep/main.nf @@ -4,8 +4,8 @@ conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/ensembl-vep:111.0--pl5321h2a3209d_0' : -- 'biocontainers/ensembl-vep:111.0--pl5321h2a3209d_0' }" +- 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : +- 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:110.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:110.0--pl5321h2a3209d_0' }" input: tuple val(meta), path(vcf), path(custom_extra_files) +Changes in 'ensemblvep/vep/environment.yml': --- modules/nf-core/ensemblvep/vep/environment.yml +++ modules/nf-core/ensemblvep/vep/environment.yml -@@ -4,4 +4,4 @@ +@@ -2,4 +2,4 @@ + - conda-forge - bioconda - - defaults dependencies: -- - bioconda::ensembl-vep=111.0 +- - bioconda::ensembl-vep=113.0 + - bioconda::ensembl-vep=110.0 +'modules/nf-core/ensemblvep/vep/tests/tags.yml' is unchanged +'modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap' is unchanged +'modules/nf-core/ensemblvep/vep/tests/nextflow.config' is unchanged +'modules/nf-core/ensemblvep/vep/tests/tab.gz.config' is unchanged +'modules/nf-core/ensemblvep/vep/tests/main.nf.test' is unchanged +'modules/nf-core/ensemblvep/vep/tests/vcf.config' is unchanged ************************************************************ diff --git a/modules/nf-core/ensemblvep/vep/environment.yml b/modules/nf-core/ensemblvep/vep/environment.yml index 7a127746..bf25a4da 100644 --- a/modules/nf-core/ensemblvep/vep/environment.yml +++ b/modules/nf-core/ensemblvep/vep/environment.yml @@ -1,7 +1,5 @@ -name: ensemblvep_vep channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ensembl-vep=110.0 diff --git a/modules/nf-core/ensemblvep/vep/meta.yml b/modules/nf-core/ensemblvep/vep/meta.yml index d8ff8d14..9288a938 100644 --- a/modules/nf-core/ensemblvep/vep/meta.yml +++ b/modules/nf-core/ensemblvep/vep/meta.yml @@ -1,5 +1,6 @@ name: ensemblvep_vep -description: Ensembl Variant Effect Predictor (VEP). The output-file-format is controlled through `task.ext.args`. +description: Ensembl Variant Effect Predictor (VEP). The output-file-format is controlled + through `task.ext.args`. keywords: - annotation - vcf @@ -13,75 +14,96 @@ tools: homepage: https://www.ensembl.org/info/docs/tools/vep/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - vcf to annotate - - custom_extra_files: - type: file - description: | - extra sample-specific files to be used with the `--custom` flag to be configured with ext.args - (optional) - - genome: - type: string - description: | - which genome to annotate with - - species: - type: string - description: | - which species to annotate with - - cache_version: - type: integer - description: | - which version of the cache to annotate with - - cache: - type: file - description: | - path to VEP cache (optional) - - meta2: - type: map - description: | - Groovy Map containing fasta reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: | - reference FASTA file (optional) - pattern: "*.{fasta,fa}" - - extra_files: - type: file - description: | - path to file(s) needed for plugins (optional) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + vcf to annotate + - custom_extra_files: + type: file + description: | + extra sample-specific files to be used with the `--custom` flag to be configured with ext.args + (optional) + - - genome: + type: string + description: | + which genome to annotate with + - - species: + type: string + description: | + which species to annotate with + - - cache_version: + type: integer + description: | + which version of the cache to annotate with + - - cache: + type: file + description: | + path to VEP cache (optional) + - - meta2: + type: map + description: | + Groovy Map containing fasta reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: | + reference FASTA file (optional) + pattern: "*.{fasta,fa}" + - - extra_files: + type: file + description: | + path to file(s) needed for plugins (optional) output: - vcf: - type: file - description: | - annotated vcf (optional) - pattern: "*.ann.vcf.gz" + - meta: + type: file + description: | + annotated vcf (optional) + pattern: "*.ann.vcf.gz" + - "*.vcf.gz": + type: file + description: | + annotated vcf (optional) + pattern: "*.ann.vcf.gz" - tab: - type: file - description: | - tab file with annotated variants (optional) - pattern: "*.ann.tab.gz" + - meta: + type: file + description: | + tab file with annotated variants (optional) + pattern: "*.ann.tab.gz" + - "*.tab.gz": + type: file + description: | + tab file with annotated variants (optional) + pattern: "*.ann.tab.gz" - json: - type: file - description: | - json file with annotated variants (optional) - pattern: "*.ann.json.gz" + - meta: + type: file + description: | + json file with annotated variants (optional) + pattern: "*.ann.json.gz" + - "*.json.gz": + type: file + description: | + json file with annotated variants (optional) + pattern: "*.ann.json.gz" - report: - type: file - description: VEP report file - pattern: "*.html" + - "*.html": + type: file + description: VEP report file + pattern: "*.html" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@matthdsm" diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test b/modules/nf-core/ensemblvep/vep/tests/main.nf.test index 4aff84a3..3e8c0b53 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"113_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -72,7 +72,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"113_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -107,7 +107,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out.versions).match() }, - { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v111.0") } + { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v113.0") } ) } } diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap index f937b299..1df94276 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap @@ -2,25 +2,25 @@ "test_ensemblvep_vep_fasta_tab_gz": { "content": [ [ - "versions.yml:md5,bd2ba1b4741a7d0a224160b50859f4ba" + "versions.yml:md5,4fbfeb73f0d4b4aa039f17be8ba9e1f2" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:35:20.694114" + "timestamp": "2024-10-21T09:12:23.474703494" }, "test_ensemblvep_vep_fasta_vcf": { "content": [ [ - "versions.yml:md5,bd2ba1b4741a7d0a224160b50859f4ba" + "versions.yml:md5,4fbfeb73f0d4b4aa039f17be8ba9e1f2" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:34:41.093843" + "timestamp": "2024-10-21T09:11:54.343590485" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/vep/tests/nextflow.config b/modules/nf-core/ensemblvep/vep/tests/nextflow.config index 882bce41..0a4ae1a6 100644 --- a/modules/nf-core/ensemblvep/vep/tests/nextflow.config +++ b/modules/nf-core/ensemblvep/vep/tests/nextflow.config @@ -1,5 +1,5 @@ params { - vep_cache_version = "111" + vep_cache_version = "113" vep_genome = "WBcel235" vep_species = "caenorhabditis_elegans" } diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml index 1787b38a..691d4c76 100644 --- a/modules/nf-core/fastqc/environment.yml +++ b/modules/nf-core/fastqc/environment.yml @@ -1,7 +1,5 @@ -name: fastqc channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index d79f1c86..d8989f48 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -26,7 +26,10 @@ process FASTQC { def rename_to = old_new_pairs*.join(' ').join(' ') def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ') - def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') + // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) + // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 + // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label + def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') / task.cpus // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index ee5507e0..4827da7a 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -16,35 +16,44 @@ tools: homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ licence: ["GPL-2.0-only"] + identifier: biotools:fastqc input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - html: - type: file - description: FastQC report - pattern: "*_{fastqc.html}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.html": + type: file + description: FastQC report + pattern: "*_{fastqc.html}" - zip: - type: file - description: FastQC report archive - pattern: "*_{fastqc.zip}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.zip": + type: file + description: FastQC report archive + pattern: "*_{fastqc.zip}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@grst" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 70edae4d..e9d79a07 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -23,17 +23,14 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. - // looks like this:
    Mon 2 Oct 2023
    test.gz
    - // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_single") } + { assert process.success }, + // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. + // looks like this:
    Mon 2 Oct 2023
    test.gz
    + // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -54,16 +51,14 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_paired") } + { assert process.success }, + { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, + { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, + { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, + { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, + { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -83,13 +78,11 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_interleaved") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -109,13 +102,11 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_bam") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -138,22 +129,20 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, - { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, - { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_multiple") } + { assert process.success }, + { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, + { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, + { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, + { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, + { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, + { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, + { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, + { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, + { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -173,21 +162,18 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_custom_prefix") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } test("sarscov2 single-end [fastq] - stub") { - options "-stub" - + options "-stub" when { process { """ @@ -201,12 +187,123 @@ nextflow_process { then { assertAll ( - { assert process.success }, - { assert snapshot(process.out.html.collect { file(it[1]).getName() } + - process.out.zip.collect { file(it[1]).getName() } + - process.out.versions ).match("fastqc_stub") } + { assert process.success }, + { assert snapshot(process.out).match() } ) } } + test("sarscov2 paired-end [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 interleaved [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 multiple [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 custom_prefix - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'mysample', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index 86f7c311..d5db3092 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,88 +1,392 @@ { - "fastqc_versions_interleaved": { + "sarscov2 custom_prefix": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:07.293713" + "timestamp": "2024-07-22T11:02:16.374038" }, - "fastqc_stub": { + "sarscov2 single-end [fastq] - stub": { "content": [ - [ - "test.html", - "test.zip", - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:24.993809" + }, + "sarscov2 custom_prefix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:31:01.425198" + "timestamp": "2024-07-22T11:03:10.93942" }, - "fastqc_versions_multiple": { + "sarscov2 interleaved [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:55.797907" + "timestamp": "2024-07-22T11:01:42.355718" }, - "fastqc_versions_bam": { + "sarscov2 paired-end [bam]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:26.795862" + "timestamp": "2024-07-22T11:01:53.276274" }, - "fastqc_versions_single": { + "sarscov2 multiple [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:27.043675" + "timestamp": "2024-07-22T11:02:05.527626" }, - "fastqc_versions_paired": { + "sarscov2 paired-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:31.188871" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:34.273566" + }, + "sarscov2 multiple [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:47.584191" + "timestamp": "2024-07-22T11:03:02.304411" }, - "fastqc_versions_custom_prefix": { + "sarscov2 single-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:19.095607" + }, + "sarscov2 interleaved [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:44.640184" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:41:14.576531" + "timestamp": "2024-07-22T11:02:53.550742" } } \ No newline at end of file diff --git a/modules/nf-core/gawk/environment.yml b/modules/nf-core/gawk/environment.yml index 3d98a08b..315f6dc6 100644 --- a/modules/nf-core/gawk/environment.yml +++ b/modules/nf-core/gawk/environment.yml @@ -1,7 +1,5 @@ -name: gawk channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::gawk=5.3.0 diff --git a/modules/nf-core/gawk/main.nf b/modules/nf-core/gawk/main.nf index ca468929..7514246e 100644 --- a/modules/nf-core/gawk/main.nf +++ b/modules/nf-core/gawk/main.nf @@ -8,7 +8,7 @@ process GAWK { 'biocontainers/gawk:5.3.0' }" input: - tuple val(meta), path(input) + tuple val(meta), path(input, arity: '0..*') path(program_file) output: @@ -22,15 +22,19 @@ process GAWK { def args = task.ext.args ?: '' // args is used for the main arguments of the tool def args2 = task.ext.args2 ?: '' // args2 is used to specify a program when no program file has been given prefix = task.ext.prefix ?: "${meta.id}" - suffix = task.ext.suffix ?: "${input.getExtension()}" + suffix = task.ext.suffix ?: "${input.collect{ it.getExtension()}.get(0)}" // use the first extension of the input files - program = program_file ? "-f ${program_file}" : "${args2}" + program = program_file ? "-f ${program_file}" : "${args2}" + lst_gz = input.collect{ it.getExtension().endsWith("gz") } + unzip = lst_gz.contains(false) ? "" : "find ${input} -exec zcat {} \\; | \\" + input_cmd = unzip ? "" : "${input}" """ + ${unzip} awk \\ ${args} \\ ${program} \\ - ${input} \\ + ${input_cmd} \\ > ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/gawk/meta.yml b/modules/nf-core/gawk/meta.yml index 2b6033b0..2da41405 100644 --- a/modules/nf-core/gawk/meta.yml +++ b/modules/nf-core/gawk/meta.yml @@ -16,34 +16,41 @@ tools: documentation: "https://www.gnu.org/software/gawk/manual/" tool_dev_url: "https://www.gnu.org/prep/ftp.html" licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: The input file - Specify the logic that needs to be executed on this file on the `ext.args2` or in the program file - pattern: "*" - - program_file: - type: file - description: Optional file containing logic for awk to execute. If you don't wish to use a file, you can use `ext.args2` to specify the logic. - pattern: "*" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: The input file - Specify the logic that needs to be executed on + this file on the `ext.args2` or in the program file. + If the files have a `.gz` extension, they will be unzipped using `zcat`. + pattern: "*" + - - program_file: + type: file + description: Optional file containing logic for awk to execute. If you don't + wish to use a file, you can use `ext.args2` to specify the logic. + pattern: "*" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - output: - type: file - description: The output file - specify the name of this file using `ext.prefix` and the extension using `ext.suffix` - pattern: "*" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${suffix}: + type: file + description: The output file - specify the name of this file using `ext.prefix` + and the extension using `ext.suffix` + pattern: "*" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/gawk/tests/main.nf.test b/modules/nf-core/gawk/tests/main.nf.test index fce82ca9..5952e9a2 100644 --- a/modules/nf-core/gawk/tests/main.nf.test +++ b/modules/nf-core/gawk/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "modules_nfcore" tag "gawk" - test("convert fasta to bed") { + test("Convert fasta to bed") { config "./nextflow.config" when { @@ -31,7 +31,7 @@ nextflow_process { } } - test("convert fasta to bed with program file") { + test("Convert fasta to bed with program file") { config "./nextflow_with_program_file.config" when { @@ -53,4 +53,52 @@ nextflow_process { ) } } + + test("Extract first column from multiple files") { + config "./nextflow_with_program_file.config" + tag "test" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'generic/txt/hello.txt', checkIfExists: true), + file(params.modules_testdata_base_path + 'generic/txt/species_names.txt', checkIfExists: true)] + ] + input[1] = Channel.of('BEGIN {FS=" "}; {print \$1}').collectFile(name:"program.txt") + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("Unzip files before processing") { + config "./nextflow_with_program_file.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA12878_chrM.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true)] + ] + input[1] = Channel.of('/^#CHROM/ { print \$1, \$10 }').collectFile(name:"column_header.txt") + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } \ No newline at end of file diff --git a/modules/nf-core/gawk/tests/main.nf.test.snap b/modules/nf-core/gawk/tests/main.nf.test.snap index 4f3a759c..d396f738 100644 --- a/modules/nf-core/gawk/tests/main.nf.test.snap +++ b/modules/nf-core/gawk/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "convert fasta to bed with program file": { + "Convert fasta to bed": { "content": [ { "0": [ @@ -28,11 +28,11 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-05-17T15:20:02.495430346" + "timestamp": "2024-10-19T13:14:02.347809811" }, - "convert fasta to bed": { + "Convert fasta to bed with program file": { "content": [ { "0": [ @@ -61,8 +61,74 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-05-17T15:19:53.291809648" + "timestamp": "2024-10-19T13:14:11.894616209" + }, + "Extract first column from multiple files": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,566c51674bd643227bb2d83e0963376d" + ] + ], + "1": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ], + "output": [ + [ + { + "id": "test" + }, + "test.bed:md5,566c51674bd643227bb2d83e0963376d" + ] + ], + "versions": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-19T22:04:47.729300129" + }, + "Unzip files before processing": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,1e31ebd4a060aab5433bbbd9ab24e403" + ] + ], + "1": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ], + "output": [ + [ + { + "id": "test" + }, + "test.bed:md5,1e31ebd4a060aab5433bbbd9ab24e403" + ] + ], + "versions": [ + "versions.yml:md5,842acc9870dc8ac280954047cb2aa23a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-19T22:08:19.533527657" } -} \ No newline at end of file +} diff --git a/modules/nf-core/genmod/annotate/environment.yml b/modules/nf-core/genmod/annotate/environment.yml index ac8140fd..227ee892 100644 --- a/modules/nf-core/genmod/annotate/environment.yml +++ b/modules/nf-core/genmod/annotate/environment.yml @@ -1,7 +1,5 @@ -name: genmod_annotate channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/annotate/main.nf b/modules/nf-core/genmod/annotate/main.nf index eb161187..0b8b232d 100644 --- a/modules/nf-core/genmod/annotate/main.nf +++ b/modules/nf-core/genmod/annotate/main.nf @@ -4,15 +4,15 @@ process GENMOD_ANNOTATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) output: tuple val(meta), path("*_annotate.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/annotate/meta.yml b/modules/nf-core/genmod/annotate/meta.yml index 3c876ac5..bb4afb6b 100644 --- a/modules/nf-core/genmod/annotate/meta.yml +++ b/modules/nf-core/genmod/annotate/meta.yml @@ -11,30 +11,33 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: VCF file - pattern: "*.{vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: VCF file + pattern: "*.{vcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Annotated VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_annotate.vcf": + type: file + description: Annotated VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/annotate/tests/main.nf.test b/modules/nf-core/genmod/annotate/tests/main.nf.test index d17ebc9e..a4b3fccb 100644 --- a/modules/nf-core/genmod/annotate/tests/main.nf.test +++ b/modules/nf-core/genmod/annotate/tests/main.nf.test @@ -24,8 +24,35 @@ nextflow_process { then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + + } + + test("genmod_annotate - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/genmod.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/genmod/annotate/tests/main.nf.test.snap b/modules/nf-core/genmod/annotate/tests/main.nf.test.snap new file mode 100644 index 00000000..402b5c01 --- /dev/null +++ b/modules/nf-core/genmod/annotate/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_annotate": { + "content": [ + [ + "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + ], + "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:44:57.176895794" + }, + "genmod_annotate - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_annotate.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_annotate.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:16.409331019" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmod/compound/environment.yml b/modules/nf-core/genmod/compound/environment.yml index 1e2561fd..227ee892 100644 --- a/modules/nf-core/genmod/compound/environment.yml +++ b/modules/nf-core/genmod/compound/environment.yml @@ -1,7 +1,5 @@ -name: genmod_compound channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/compound/main.nf b/modules/nf-core/genmod/compound/main.nf index 1731b722..ca6a22a1 100644 --- a/modules/nf-core/genmod/compound/main.nf +++ b/modules/nf-core/genmod/compound/main.nf @@ -4,15 +4,15 @@ process GENMOD_COMPOUND { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: tuple val(meta), path(input_vcf) output: tuple val(meta), path("*_compound.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/compound/meta.yml b/modules/nf-core/genmod/compound/meta.yml index aa5f7da5..ebd6a110 100644 --- a/modules/nf-core/genmod/compound/meta.yml +++ b/modules/nf-core/genmod/compound/meta.yml @@ -11,30 +11,33 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: VCF file - pattern: "*.{vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: VCF file + pattern: "*.{vcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] # - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Output VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] # + - "*_compound.vcf": + type: file + description: Output VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/compound/tests/main.nf.test b/modules/nf-core/genmod/compound/tests/main.nf.test index 43ed9f0d..4c667c17 100644 --- a/modules/nf-core/genmod/compound/tests/main.nf.test +++ b/modules/nf-core/genmod/compound/tests/main.nf.test @@ -23,8 +23,35 @@ nextflow_process { then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + + } + + test("genmod_compound - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/genmod_compound.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/genmod/compound/tests/main.nf.test.snap b/modules/nf-core/genmod/compound/tests/main.nf.test.snap new file mode 100644 index 00000000..b114cc33 --- /dev/null +++ b/modules/nf-core/genmod/compound/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_compound": { + "content": [ + [ + "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + ], + "VcfFile [chromosomes=[MT], sampleCount=3, variantCount=22, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:41.417545149" + }, + "genmod_compound - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_compound.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_compound.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:48.678803012" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmod/models/environment.yml b/modules/nf-core/genmod/models/environment.yml index 62a746c7..227ee892 100644 --- a/modules/nf-core/genmod/models/environment.yml +++ b/modules/nf-core/genmod/models/environment.yml @@ -1,7 +1,5 @@ -name: genmod_models channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/models/main.nf b/modules/nf-core/genmod/models/main.nf index 0504574a..a869221e 100644 --- a/modules/nf-core/genmod/models/main.nf +++ b/modules/nf-core/genmod/models/main.nf @@ -4,17 +4,16 @@ process GENMOD_MODELS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: - tuple val(meta), path(input_vcf) - path (fam) + tuple val(meta), path(input_vcf), path (fam) path (reduced_penetrance) output: tuple val(meta), path("*_models.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/models/meta.yml b/modules/nf-core/genmod/models/meta.yml index dd9001e0..a6249114 100644 --- a/modules/nf-core/genmod/models/meta.yml +++ b/modules/nf-core/genmod/models/meta.yml @@ -11,38 +11,40 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: vcf file - pattern: "*.{vcf}" - - reduced_penetrance: - type: file - description: file with gene ids that have reduced penetrance - pattern: "*.{tsv}" - - family_file: - type: file - description: ped file - pattern: "*.{ped}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: vcf file + pattern: "*.{vcf}" + - fam: + type: file + description: PED file with family information + - - reduced_penetrance: + type: file + description: file with gene ids that have reduced penetrance + pattern: "*.{tsv}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Output VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_models.vcf": + type: file + description: Output VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/models/tests/main.nf.test b/modules/nf-core/genmod/models/tests/main.nf.test index 9eba8dd5..0b9a3ebd 100644 --- a/modules/nf-core/genmod/models/tests/main.nf.test +++ b/modules/nf-core/genmod/models/tests/main.nf.test @@ -15,21 +15,49 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - input[2] = [] + input[1] = [] """ } } then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } ) } } + test("genmod_models - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } } diff --git a/modules/nf-core/genmod/models/tests/main.nf.test.snap b/modules/nf-core/genmod/models/tests/main.nf.test.snap new file mode 100644 index 00000000..7484a7fd --- /dev/null +++ b/modules/nf-core/genmod/models/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_models - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_models.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,10442b1602069000967f51837d7b5b63" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_models.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,10442b1602069000967f51837d7b5b63" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:51:04.841425679" + }, + "genmod_models": { + "content": [ + [ + "versions.yml:md5,10442b1602069000967f51837d7b5b63" + ], + "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:49:56.642318737" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmod/score/environment.yml b/modules/nf-core/genmod/score/environment.yml index bacc4cec..227ee892 100644 --- a/modules/nf-core/genmod/score/environment.yml +++ b/modules/nf-core/genmod/score/environment.yml @@ -1,7 +1,5 @@ -name: genmod_score channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::genmod=3.8.2 + - bioconda::genmod=3.9 diff --git a/modules/nf-core/genmod/score/main.nf b/modules/nf-core/genmod/score/main.nf index 15be5f74..756fc731 100644 --- a/modules/nf-core/genmod/score/main.nf +++ b/modules/nf-core/genmod/score/main.nf @@ -4,17 +4,16 @@ process GENMOD_SCORE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.8.2--pyhdfd78af_0': - 'biocontainers/genmod:3.8.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': + 'biocontainers/genmod:3.9--pyhdfd78af_0' }" input: - tuple val(meta), path(input_vcf) - path (fam) + tuple val(meta), path(input_vcf), path (fam) path (score_config) output: tuple val(meta), path("*_score.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/genmod/score/meta.yml b/modules/nf-core/genmod/score/meta.yml index 8998b00c..c5fe2e2a 100644 --- a/modules/nf-core/genmod/score/meta.yml +++ b/modules/nf-core/genmod/score/meta.yml @@ -11,38 +11,40 @@ tools: documentation: "https://github.com/Clinical-Genomics/genmod" tool_dev_url: "https://github.com/moonso" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_vcf: - type: file - description: vcf file - pattern: "*.{vcf}" - - family_file: - type: file - description: ped file - pattern: "*.{ped}" - - score_config: - type: file - description: rank model config file - pattern: "*.{ini}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_vcf: + type: file + description: vcf file + pattern: "*.{vcf}" + - fam: + type: file + description: PED file with family information + - - score_config: + type: file + description: rank model config file + pattern: "*.{ini}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Output VCF file - pattern: "*.{vcf}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_score.vcf": + type: file + description: Output VCF file + pattern: "*.{vcf}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/genmod/score/tests/main.nf.test b/modules/nf-core/genmod/score/tests/main.nf.test index 030ef6ba..6181f63a 100644 --- a/modules/nf-core/genmod/score/tests/main.nf.test +++ b/modules/nf-core/genmod/score/tests/main.nf.test @@ -15,18 +15,47 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) """ } } then { assertAll( - {assert process.success}, - {assert path(process.out.vcf.get(0).get(1)).readLines().contains("##fileformat=VCFv4.2")} + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + + } + + test("genmod_score - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_models.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/genmod/svrank_model_-v1.8-.ini', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/genmod/score/tests/main.nf.test.snap b/modules/nf-core/genmod/score/tests/main.nf.test.snap new file mode 100644 index 00000000..b484b8e1 --- /dev/null +++ b/modules/nf-core/genmod/score/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "genmod_score": { + "content": [ + [ + "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + ], + "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:50:12.03483811" + }, + "genmod_score - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_score.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_score.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-25T11:50:19.675962486" + } +} \ No newline at end of file diff --git a/modules/nf-core/gfastats/environment.yml b/modules/nf-core/gfastats/environment.yml index 1c875ce0..b47bbdbb 100644 --- a/modules/nf-core/gfastats/environment.yml +++ b/modules/nf-core/gfastats/environment.yml @@ -1,7 +1,5 @@ -name: gfastats channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::gfastats=1.3.6 diff --git a/modules/nf-core/gfastats/meta.yml b/modules/nf-core/gfastats/meta.yml index d0e97a8f..a6213433 100644 --- a/modules/nf-core/gfastats/meta.yml +++ b/modules/nf-core/gfastats/meta.yml @@ -16,56 +16,67 @@ tools: documentation: "https://github.com/vgl-hub/gfastats/tree/main/instructions" tool_dev_url: "https://github.com/vgl-hub/gfastats" doi: "10.1093/bioinformatics/btac460" - licence: "['MIT']" + licence: ["MIT"] + identifier: biotools:gfastats input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - assembly: - type: file - description: Draft assembly file - pattern: "*.{fasta,fastq,gfa}(.gz)?" - - out_fmt: - type: string - description: Output format (fasta, fastq, gfa) - - genome_size: - type: integer - description: estimated genome size (bp) for NG* statistics (optional). - - target: - type: string - description: target specific sequence by header, optionally with coordinates (optional). - - agpfile: - type: file - description: converts input agp to path and replaces existing paths. - - include_bed: - type: file - description: generates output on a subset list of headers or coordinates in 0-based bed format. - - exclude_bed: - type: file - description: opposite of --include-bed. They can be combined (no coordinates). - - instructions: - type: file - description: set of instructions provided as an ordered list. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - assembly: + type: file + description: Draft assembly file + pattern: "*.{fasta,fastq,gfa}(.gz)?" + - - out_fmt: + type: string + description: Output format (fasta, fastq, gfa) + - - genome_size: + type: integer + description: estimated genome size (bp) for NG* statistics (optional). + - - target: + type: string + description: target specific sequence by header, optionally with coordinates + (optional). + - - agpfile: + type: file + description: converts input agp to path and replaces existing paths. + - - include_bed: + type: file + description: generates output on a subset list of headers or coordinates in + 0-based bed format. + - - exclude_bed: + type: file + description: opposite of --include-bed. They can be combined (no coordinates). + - - instructions: + type: file + description: set of instructions provided as an ordered list. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - assembly_summary: - type: file - description: Assembly summary statistics file - pattern: "*.assembly_summary" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.assembly_summary": + type: file + description: Assembly summary statistics file + pattern: "*.assembly_summary" - assembly: - type: file - description: The assembly as modified by gfastats - pattern: "*.{fasta,fastq,gfa}.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${out_fmt}.gz": + type: file + description: The assembly as modified by gfastats + pattern: "*.{fasta,fastq,gfa}.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@mahesh-panchal" maintainers: diff --git a/modules/nf-core/glnexus/environment.yml b/modules/nf-core/glnexus/environment.yml index 922214e8..9190508a 100644 --- a/modules/nf-core/glnexus/environment.yml +++ b/modules/nf-core/glnexus/environment.yml @@ -1,7 +1,5 @@ -name: glnexus channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::glnexus=1.4.1 diff --git a/modules/nf-core/glnexus/glnexus.diff b/modules/nf-core/glnexus/glnexus.diff index c5bc3382..8684c709 100644 --- a/modules/nf-core/glnexus/glnexus.diff +++ b/modules/nf-core/glnexus/glnexus.diff @@ -1,39 +1,21 @@ Changes in module 'nf-core/glnexus' +'modules/nf-core/glnexus/meta.yml' is unchanged +Changes in 'glnexus/main.nf': --- modules/nf-core/glnexus/main.nf +++ modules/nf-core/glnexus/main.nf -@@ -1,14 +1,13 @@ - process GLNEXUS { - tag "$meta.id" -- label 'process_medium' -+ label 'process_high' +@@ -3,9 +3,7 @@ + label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/glnexus:1.4.1--h40d77a6_0' : - 'biocontainers/glnexus:1.4.1--h40d77a6_0' }" -+ container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc ++ container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc input: tuple val(meta), path(gvcfs) -+ tuple val(meta2), path(bed) - - output: - tuple val(meta), path("*.bcf"), emit: bcf -@@ -20,6 +19,7 @@ - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" -+ def regions = bed ? "--bed ${bed}" : "" - - // Make list of GVCFs to merge - def input = gvcfs.collect { it.toString() } -@@ -33,6 +33,7 @@ - glnexus_cli \\ - --threads $task.cpus \\ - --mem-gbytes $avail_mem \\ -+ $regions \\ - $args \\ - ${input.join(' ')} \\ - > ${prefix}.bcf +'modules/nf-core/glnexus/environment.yml' is unchanged +'modules/nf-core/glnexus/tests/main.nf.test.snap' is unchanged +'modules/nf-core/glnexus/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/glnexus/main.nf b/modules/nf-core/glnexus/main.nf index 6147d71d..59857115 100644 --- a/modules/nf-core/glnexus/main.nf +++ b/modules/nf-core/glnexus/main.nf @@ -3,7 +3,7 @@ process GLNEXUS { label 'process_high' conda "${moduleDir}/environment.yml" - container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc + container "pacbio/glnexus:v1.4.3" // Biocontainers version does not have jemalloc input: tuple val(meta), path(gvcfs) diff --git a/modules/nf-core/glnexus/meta.yml b/modules/nf-core/glnexus/meta.yml index 4944ebde..8f18bf3f 100644 --- a/modules/nf-core/glnexus/meta.yml +++ b/modules/nf-core/glnexus/meta.yml @@ -3,32 +3,50 @@ description: merge gVCF files and perform joint variant calling keywords: - merge - gvcf + - joint-variant-calling tools: - glnexus: - description: scalable gVCF merging and joint variant calling for population sequencing projects. + description: scalable gVCF merging and joint variant calling for population sequencing + projects. homepage: https://github.com/dnanexus-rnd/GLnexus documentation: https://github.com/dnanexus-rnd/GLnexus/wiki/Getting-Started doi: 10.1101/343970 licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - gvcfs: - type: list - description: Input genomic vcf files - pattern: "*.{gvcf,gvcf.gz,g.vcf,g.vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - gvcfs: + type: list + description: Input genomic vcf files + pattern: "*.{gvcf,gvcf.gz,g.vcf,g.vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing regions information + e.g. [ id:'test' ] + - bed: + type: list + description: Input BED file + pattern: "*.bed" output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bcf: - type: file - description: merged BCF file - pattern: "*.bcf" + - meta: + type: file + description: merged BCF file + pattern: "*.bcf" + - "*.bcf": + type: file + description: merged BCF file + pattern: "*.bcf" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/glnexus/tests/main.nf.test b/modules/nf-core/glnexus/tests/main.nf.test new file mode 100644 index 00000000..79f7adc8 --- /dev/null +++ b/modules/nf-core/glnexus/tests/main.nf.test @@ -0,0 +1,97 @@ +nextflow_process { + + name "Test Process GLNEXUS" + script "../main.nf" + process "GLNEXUS" + + tag "modules" + tag "modules_nfcore" + tag "glnexus" + + test("vcfs, []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true), + ] + ]) + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("vcfs, bed") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true), + ] + ]) + input[1] = [ + [ id:'region' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("vcfs, bed - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true), + ] + ]) + input[1] = [ + [ id:'region' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/glnexus/tests/main.nf.test.snap b/modules/nf-core/glnexus/tests/main.nf.test.snap new file mode 100644 index 00000000..3d2e13f0 --- /dev/null +++ b/modules/nf-core/glnexus/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "vcfs, bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ], + "bcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T12:17:01.253378301" + }, + "vcfs, bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "1": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ], + "bcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "versions": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T12:16:53.859544065" + }, + "vcfs, []": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "1": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ], + "bcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,62b2cea9c1b92ac63645cb031eea46fc" + ] + ], + "versions": [ + "versions.yml:md5,dfeeb7f12f37cbef54a798614b83ffb0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-29T12:13:03.068397129" + } +} \ No newline at end of file diff --git a/modules/nf-core/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml index dfc02a7b..c7794856 100644 --- a/modules/nf-core/gunzip/environment.yml +++ b/modules/nf-core/gunzip/environment.yml @@ -1,8 +1,6 @@ -name: gunzip channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::grep=3.11 - conda-forge::sed=4.8 diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index f32973a0..9066c035 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -10,25 +10,32 @@ tools: gzip is a file format and a software application used for file compression and decompression. documentation: https://www.gnu.org/software/gzip/manual/gzip.html licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Optional groovy Map containing meta information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be compressed/uncompressed - pattern: "*.*" + - - meta: + type: map + description: | + Optional groovy Map containing meta information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be compressed/uncompressed + pattern: "*.*" output: - gunzip: - type: file - description: Compressed/uncompressed file - pattern: "*.*" + - meta: + type: file + description: Compressed/uncompressed file + pattern: "*.*" + - $gunzip: + type: file + description: Compressed/uncompressed file + pattern: "*.*" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/hifiasm/environment.yml b/modules/nf-core/hifiasm/environment.yml index ede93247..f50b420e 100644 --- a/modules/nf-core/hifiasm/environment.yml +++ b/modules/nf-core/hifiasm/environment.yml @@ -1,7 +1,5 @@ -name: hifiasm channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::hifiasm=0.19.8 + - bioconda::hifiasm=0.20.0 diff --git a/modules/nf-core/hifiasm/hifiasm.diff b/modules/nf-core/hifiasm/hifiasm.diff index 03790816..0d5e8ef7 100644 --- a/modules/nf-core/hifiasm/hifiasm.diff +++ b/modules/nf-core/hifiasm/hifiasm.diff @@ -1,16 +1,24 @@ Changes in module 'nf-core/hifiasm' +'modules/nf-core/hifiasm/meta.yml' is unchanged +'modules/nf-core/hifiasm/environment.yml' is unchanged +Changes in 'hifiasm/main.nf': --- modules/nf-core/hifiasm/main.nf +++ modules/nf-core/hifiasm/main.nf -@@ -8,9 +8,7 @@ - 'biocontainers/hifiasm:0.19.8--h43eeafb_0' }" +@@ -8,9 +8,9 @@ + 'biocontainers/hifiasm:0.20.0--h43eeafb_0' }" input: -- tuple val(meta), path(reads) -- path paternal_kmer_dump -- path maternal_kmer_dump -+ tuple val(meta), path(reads, stageAs: "?/*"), path(paternal_kmer_dump), path(maternal_kmer_dump) - path hic_read1 - path hic_read2 +- tuple val(meta) , path(reads) +- tuple val(meta1), path(paternal_kmer_dump), path(maternal_kmer_dump) +- tuple val(meta2), path(hic_read1) , path(hic_read2) ++ tuple val(meta) , path(reads, stageAs: "?/*") ++ tuple val(meta1), path(paternal_kmer_dump) , path(maternal_kmer_dump) ++ tuple val(meta2), path(hic_read1) , path(hic_read2) + output: + tuple val(meta), path("*.r_utg.gfa") , emit: raw_unitigs +'modules/nf-core/hifiasm/tests/main.nf.test' is unchanged +'modules/nf-core/hifiasm/tests/main.nf.test.snap' is unchanged +'modules/nf-core/hifiasm/tests/nextflow.config' is unchanged ************************************************************ diff --git a/modules/nf-core/hifiasm/main.nf b/modules/nf-core/hifiasm/main.nf index a1bf30a0..409f7704 100644 --- a/modules/nf-core/hifiasm/main.nf +++ b/modules/nf-core/hifiasm/main.nf @@ -4,13 +4,13 @@ process HIFIASM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/hifiasm:0.19.8--h43eeafb_0' : - 'biocontainers/hifiasm:0.19.8--h43eeafb_0' }" + 'https://depot.galaxyproject.org/singularity/hifiasm:0.20.0--h43eeafb_0' : + 'biocontainers/hifiasm:0.20.0--h43eeafb_0' }" input: - tuple val(meta), path(reads, stageAs: "?/*"), path(paternal_kmer_dump), path(maternal_kmer_dump) - path hic_read1 - path hic_read2 + tuple val(meta) , path(reads, stageAs: "?/*") + tuple val(meta1), path(paternal_kmer_dump) , path(maternal_kmer_dump) + tuple val(meta2), path(hic_read1) , path(hic_read2) output: tuple val(meta), path("*.r_utg.gfa") , emit: raw_unitigs diff --git a/modules/nf-core/hifiasm/meta.yml b/modules/nf-core/hifiasm/meta.yml index d07c0828..343ef182 100644 --- a/modules/nf-core/hifiasm/meta.yml +++ b/modules/nf-core/hifiasm/meta.yml @@ -15,85 +15,160 @@ tools: tool_dev_url: https://github.com/chhylp123/hifiasm doi: "10.1038/s41592-020-01056-5" licence: ["MIT"] + identifier: biotools:hifiasm input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: FASTQ file with PacBio HiFi reads - pattern: "*.{fastq}" - - paternal_kmer_dump: - type: file - description: Yak kmer dump file for paternal reads (can be used for haplotype resolution). It can have an arbitrary extension. - - maternal_kmer_dump: - type: file - description: Yak kmer dump file for maternal reads (can be used for haplotype resolution). It can have an arbitrary extension. - - use_parental_kmers: - type: boolean - description: A flag (true or false) signalling if the module should use the paternal and maternal kmer dumps. - - hic_read1: - type: file - description: Hi-C data Forward reads. - - hic_read2: - type: file - description: Hi-C data Reverse reads. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: FASTQ file with PacBio HiFi reads + pattern: "*.{fastq}" + - - meta1: + type: map + description: | + Groovy Map containing information about parental kmers. + - paternal_kmer_dump: + type: file + description: Yak kmer dump file for paternal reads (can be used for haplotype + resolution). It can have an arbitrary extension. + - maternal_kmer_dump: + type: file + description: Yak kmer dump file for maternal reads (can be used for haplotype + resolution). It can have an arbitrary extension. + - - meta2: + type: map + description: | + Groovy Map containing information about Hi-C reads + - hic_read1: + type: file + description: Hi-C data Forward reads. + - hic_read2: + type: file + description: Hi-C data Reverse reads. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - raw_unitigs: - type: file - description: Raw unitigs - pattern: "*.r_utg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.r_utg.gfa": + type: file + description: Raw unitigs + pattern: "*.r_utg.gfa" + - corrected_reads: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.ec.bin": + type: file + description: Corrected reads + pattern: "*.ec.bin" + - source_overlaps: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.ovlp.source.bin": + type: file + description: Source overlaps + pattern: "*.ovlp.source.bin" + - reverse_overlaps: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.ovlp.reverse.bin": + type: file + description: Reverse overlaps + pattern: "*.ovlp.reverse.bin" + - processed_contigs: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bp.p_ctg.gfa": + type: file + description: Processed contigs + pattern: "*.bp.p_ctg.gfa" - processed_unitigs: - type: file - description: Processed unitigs - pattern: "*.p_utg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.p_utg.gfa": + type: file + description: Processed unitigs + pattern: "*.p_utg.gfa" - primary_contigs: - type: file - description: Primary contigs - pattern: "*.asm.p_ctg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.asm.p_ctg.gfa": + type: file + description: Primary contigs + pattern: "*.asm.p_ctg.gfa" - alternate_contigs: - type: file - description: Alternative contigs - pattern: "*.asm.a_ctg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.asm.a_ctg.gfa": + type: file + description: Alternative contigs + pattern: "*.asm.a_ctg.gfa" - paternal_contigs: - type: file - description: Paternal contigs - pattern: "*.hap1.p_ctg.gfa" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.hap1.p_ctg.gfa": + type: file + description: Paternal contigs + pattern: "*.hap1.p_ctg.gfa" - maternal_contigs: - type: file - description: Maternal contigs - pattern: "*.hap2.p_ctg.gfa" - - corrected_reads: - type: file - description: Corrected reads - pattern: "*.ec.bin" - - source_overlaps: - type: file - description: Source overlaps - pattern: "*.ovlp.source.bin" - - reverse_overlaps: - type: file - description: Reverse overlaps - pattern: "*.ovlp.reverse.bin" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.hap2.p_ctg.gfa": + type: file + description: Maternal contigs + pattern: "*.hap2.p_ctg.gfa" - log: - type: file - description: Stderr log - pattern: "*.log" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.log": + type: file + description: Stderr log + pattern: "*.log" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@sidorov-si" - "@scorreard" - "@mbeavitt" + - "@schmytzi" maintainers: - "@sidorov-si" - "@scorreard" diff --git a/modules/nf-core/hifiasm/tests/main.nf.test b/modules/nf-core/hifiasm/tests/main.nf.test new file mode 100644 index 00000000..5258890a --- /dev/null +++ b/modules/nf-core/hifiasm/tests/main.nf.test @@ -0,0 +1,229 @@ +nextflow_process { + + name "Test Process HifiAsm" + script "../main.nf" + process "HIFIASM" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "hifiasm" + + test("homo_sapiens pacbio hifi [fastq, [,], [,] ]") { + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [], + [], + [] + ] + input[2] = [ + [], + [], + [] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert file(process.out.corrected_reads.get(0).get(1)).exists() }, + { assert file(process.out.source_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.reverse_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.log.get(0).get(1)).exists() }, + { assert snapshot( + process.out.raw_unitigs, + process.out.processed_contigs, + process.out.processed_unitigs, + process.out.paternal_contigs, + process.out.maternal_contigs, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [yak, yak], [,] ]") { + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test.yak', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test2.yak', checkIfExists: true) + ] + input[2] = [ + [ id : 'test' ], + [], + [] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert file(process.out.corrected_reads.get(0).get(1)).exists() }, + { assert file(process.out.source_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.reverse_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.log.get(0).get(1)).exists() }, + { assert file(process.out.maternal_contigs.get(0).get(1)).length() == 0}, + { assert snapshot( + process.out.raw_unitigs, + process.out.processed_unitigs, + process.out.paternal_contigs, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [,], [fastq, fastq] ]") { + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test' ], + [], + [] + ] + input[2] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert file(process.out.corrected_reads.get(0).get(1)).exists() }, + { assert file(process.out.source_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.reverse_overlaps.get(0).get(1)).exists() }, + { assert file(process.out.log.get(0).get(1)).exists() }, + { assert file(process.out.maternal_contigs.get(0).get(1)).length() == 0}, + { assert snapshot( + process.out.raw_unitigs, + process.out.processed_unitigs, + process.out.paternal_contigs, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [yak, yak], [fastq, fastq] ]") { + when { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test.yak', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test2.yak', checkIfExists: true) + ] + input[2] = [ + [ id : 'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz, checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz, checkIfExists: true) + ] + """ + } + then { + assertAll( + { assert !process.success} + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [yak, ], [,] ]") { + when { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/yak/test.yak', checkIfExists: true), + [] + ] + input[2] = [] + """ + } + then { + assertAll( + { assert !process.success} + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [,], [, fastq] ]") { + when { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [] + input[2] = [ + [ id : 'test'], + [], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + """ + } + then { + assertAll( + { assert !process.success} + ) + } + } + + test("homo_sapiens pacbio hifi [fastq, [,], [,] ] - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id : 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/fastq/test_hifi.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [], + [], + [] + ] + input[2] = [ + [], + [], + [] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match()} + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/hifiasm/tests/main.nf.test.snap b/modules/nf-core/hifiasm/tests/main.nf.test.snap new file mode 100644 index 00000000..8ad9589e --- /dev/null +++ b/modules/nf-core/hifiasm/tests/main.nf.test.snap @@ -0,0 +1,319 @@ +{ + "homo_sapiens pacbio hifi [fastq, [,], [,] ]": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.asm.bp.r_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.p_ctg.gfa:md5,c3225425a73a8d6d46536dab72380650" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.p_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.hap1.p_ctg.gfa:md5,78a86b6d5741a680e22a427ca9faa74a" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.bp.hap2.p_ctg.gfa:md5,ac2116fd2f22c67d4c304cbf9b9f7793" + ] + ], + [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T14:01:04.528764919" + }, + "homo_sapiens pacbio hifi [fastq, [,], [fastq, fastq] ]": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.asm.hic.r_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.hic.p_utg.gfa:md5,6a200e4bcb5d8d8fa6ed75874d26edc6" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.hic.hap1.p_ctg.gfa:md5,f67a8fdfa756961360732c79d189054d" + ] + ], + [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T14:08:48.081396092" + }, + "homo_sapiens pacbio hifi [fastq, [,], [,] ] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.asm.r_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.asm.ec.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "test.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ], + "2": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.source.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.reverse.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.asm.bp.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.asm.p_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.asm.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.asm.a_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.asm.hap1.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.asm.hap2.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "alternate_contigs": [ + [ + { + "id": "test" + }, + "test.asm.a_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "corrected_reads": [ + [ + { + "id": "test" + }, + "test.asm.ec.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "maternal_contigs": [ + [ + { + "id": "test" + }, + "test.asm.hap2.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "paternal_contigs": [ + [ + { + "id": "test" + }, + "test.asm.hap1.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "primary_contigs": [ + [ + { + "id": "test" + }, + "test.asm.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "processed_contigs": [ + [ + { + "id": "test" + }, + "test.asm.bp.p_ctg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "processed_unitigs": [ + [ + { + "id": "test" + }, + "test.asm.p_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "raw_unitigs": [ + [ + { + "id": "test" + }, + "test.asm.r_utg.gfa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reverse_overlaps": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.reverse.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "source_overlaps": [ + [ + { + "id": "test" + }, + "test.asm.ovlp.source.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T14:09:13.475508542" + }, + "homo_sapiens pacbio hifi [fastq, [yak, yak], [,] ]": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.asm.dip.r_utg.gfa:md5,68361ac3e8babd51f3891d1637ca0fdc" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.dip.p_utg.gfa:md5,68361ac3e8babd51f3891d1637ca0fdc" + ] + ], + [ + [ + { + "id": "test" + }, + "test.asm.dip.hap1.p_ctg.gfa:md5,eed5da5f3dd415dbb711edb61a09802f" + ] + ], + [ + "versions.yml:md5,6a23f7ea8bae71905c537cd521cffcb8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-23T13:33:47.765243676" + } +} \ No newline at end of file diff --git a/modules/nf-core/hifiasm/tests/nextflow.config b/modules/nf-core/hifiasm/tests/nextflow.config new file mode 100644 index 00000000..8dc2ae48 --- /dev/null +++ b/modules/nf-core/hifiasm/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "-f0" +} diff --git a/modules/nf-core/longphase/haplotag/environment.yml b/modules/nf-core/longphase/haplotag/environment.yml new file mode 100644 index 00000000..06445a93 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::longphase=1.7.3" diff --git a/modules/nf-core/longphase/haplotag/main.nf b/modules/nf-core/longphase/haplotag/main.nf new file mode 100644 index 00000000..86ba0592 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/main.nf @@ -0,0 +1,66 @@ +process LONGPHASE_HAPLOTAG { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/longphase:1.7.3--hf5e1c6e_0': + 'biocontainers/longphase:1.7.3--hf5e1c6e_0' }" + + input: + tuple val(meta), path(bam), path(bai), path(snps), path(svs), path(mods) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + + + output: + tuple val(meta), path("*.{bam,cram}"), emit: bam + tuple val(meta), path("*.log") , emit: log , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def sv_file = svs ? "--sv-file ${svs}" : "" + def mod_file = mods ? "--mod-file ${mods}" : "" + + """ + longphase \\ + haplotag \\ + $args \\ + --threads $task.cpus \\ + -o ${prefix} \\ + --reference ${fasta} \\ + --snp-file ${snps} \\ + --bam ${bam} \\ + ${sv_file} \\ + ${mod_file} + + if [ -f "${prefix}.out" ]; then + mv ${prefix}.out ${prefix}.log + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains('--cram') ? "cram" : "bam" + def log = args.contains('--log') ? "touch ${prefix}.log" : '' + """ + touch ${prefix}.${suffix} + ${log} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/longphase/haplotag/meta.yml b/modules/nf-core/longphase/haplotag/meta.yml new file mode 100644 index 00000000..d2f2ec8d --- /dev/null +++ b/modules/nf-core/longphase/haplotag/meta.yml @@ -0,0 +1,94 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "longphase_haplotag" +description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, + small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. +keywords: + - haplotag + - long-read + - genomics +tools: + - "longphase": + description: "LongPhase is an ultra-fast program for simultaneously co-phasing + SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio + platforms." + homepage: "https://github.com/twolinin/longphase" + documentation: "https://github.com/twolinin/longphase" + tool_dev_url: "https://github.com/twolinin/longphase" + doi: "10.1093/bioinformatics/btac058" + licence: ["GPL v3"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index of sorted BAM/CRAM file + pattern: "*.{bai,crai,csi}" + - snps: + type: file + description: VCF file with SNPs (and INDELs) + pattern: "*.{vcf,vcf.gz}" + - svs: + type: file + description: VCF file with SVs + pattern: "*.{vcf,vcf.gz}" + - mods: + type: file + description: modcall-generated VCF with modifications + pattern: "*.{vcf,vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fai: + type: file + description: Reference fai index + pattern: "*.fai" +output: + - bam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.{bam,cram}": + type: file + description: BAM file with haplotagged reads + pattern: "*.bam" + - log: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.log": + type: file + description: Log file + pattern: "*.log" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/longphase/haplotag/tests/main.nf.test b/modules/nf-core/longphase/haplotag/tests/main.nf.test new file mode 100644 index 00000000..c80133c6 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/main.nf.test @@ -0,0 +1,202 @@ +nextflow_process { + + name "Test Process LONGPHASE_HAPLOTAG" + script "../main.nf" + process "LONGPHASE_HAPLOTAG" + + tag "modules" + tag "modules_nfcore" + tag "longphase" + tag "longphase/haplotag" + + test("[ bam, bai, snps, [], [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + bam(process.out.bam.get(0).get(1), stringency: 'silent').getHeader(), + bam(process.out.bam.get(0).get(1), stringency: 'silent').getReadsMD5(), + ).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai - log & cram") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.log, + bam(process.out.bam.get(0).get(1), 'https://github.com/nf-core/test-datasets/raw/modules/data/genomics/homo_sapiens/genome/genome.fasta', stringency: 'silent').getHeader()[2..5], + bam(process.out.bam.get(0).get(1), 'https://github.com/nf-core/test-datasets/raw/modules/data/genomics/homo_sapiens/genome/genome.fasta', stringency: 'silent').getReadsMD5(), + ).match() } + ) + } + + } + + test("[ bam, bai, snps, svs, [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + bam(process.out.bam.get(0).get(1), stringency: 'silent').getHeader(), + bam(process.out.bam.get(0).get(1), stringency: 'silent').getReadsMD5(), + ).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai - log & cram -stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} \ No newline at end of file diff --git a/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap b/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap new file mode 100644 index 00000000..3cf35dc3 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/main.nf.test.snap @@ -0,0 +1,159 @@ +{ + "[ bam, bai, snps, [], [] ], fasta, fai - log & cram -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-09T09:40:30.738831707" + }, + "[ bam, bai, snps, [], [] ], fasta, fai": { + "content": [ + [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + [ + "@HD\tVN:1.6\tSO:coordinate", + "@SQ\tSN:chr22\tLN:40001", + "@RG\tID:test\tSM:test", + "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam " + ], + "721264eb2824a3146b331f2532d10180" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-25T09:12:34.848038423" + }, + "[ bam, bai, snps, [], [] ], fasta, fai -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + + ], + "versions": [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-09T09:40:20.836809553" + }, + "[ bam, bai, snps, svs, [] ], fasta, fai": { + "content": [ + [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + [ + "@HD\tVN:1.6\tSO:coordinate", + "@SQ\tSN:chr22\tLN:40001", + "@RG\tID:test\tSM:test", + "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam --sv-file NA24385_sv.vcf.gz " + ], + "721264eb2824a3146b331f2532d10180" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-04T13:39:33.50395694" + }, + "[ bam, bai, snps, [], [] ], fasta, fai - log & cram": { + "content": [ + [ + "versions.yml:md5,3c169b598f6e15332b6d7ec1d6d96810" + ], + [ + [ + { + "id": "test" + }, + "test.log:md5,6203f10696f4b0909f0d327c021df773" + ] + ], + [ + "@RG\tID:test\tSM:test", + "@PG\tID:minimap2\tPN:minimap2\tVN:2.28-r1209\tCL:minimap2 -y -x map-ont --secondary=no -R @RG\\tID:test\\tSM:test -t 30 -a genome.mmi test.bam_other.fastq.gz", + "@PG\tID:samtools\tPN:samtools\tPP:minimap2\tVN:1.19.2\tCL:samtools sort -@ 29 -o test.bam_other.fastq.gz.bam --write-index", + "@PG\tID:longphase\tPN:longphase\tPP:samtools\tVN:1.7.3\tCL:longphase haplotag --log --cram --threads 2 -o test --reference genome.fasta --snp-file test.genome.vcf.gz --bam test.sorted.bam " + ], + "721264eb2824a3146b331f2532d10180" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-25T09:45:54.254102844" + } +} \ No newline at end of file diff --git a/modules/nf-core/longphase/haplotag/tests/nextflow.config b/modules/nf-core/longphase/haplotag/tests/nextflow.config new file mode 100644 index 00000000..d50498b2 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'LONGPHASE_HAPLOTAG' { + ext.args = '--log --cram' + } +} diff --git a/modules/nf-core/longphase/haplotag/tests/tags.yml b/modules/nf-core/longphase/haplotag/tests/tags.yml new file mode 100644 index 00000000..117e16a5 --- /dev/null +++ b/modules/nf-core/longphase/haplotag/tests/tags.yml @@ -0,0 +1,2 @@ +longphase/haplotag: + - "modules/nf-core/longphase/haplotag/**" diff --git a/modules/nf-core/longphase/phase/environment.yml b/modules/nf-core/longphase/phase/environment.yml new file mode 100644 index 00000000..bb2d0eee --- /dev/null +++ b/modules/nf-core/longphase/phase/environment.yml @@ -0,0 +1,7 @@ +channels: + - conda-forge + - bioconda + +dependencies: + - bioconda::htslib=1.20 + - bioconda::longphase=1.7.3 diff --git a/modules/nf-core/longphase/phase/main.nf b/modules/nf-core/longphase/phase/main.nf new file mode 100644 index 00000000..f121f4b6 --- /dev/null +++ b/modules/nf-core/longphase/phase/main.nf @@ -0,0 +1,69 @@ +process LONGPHASE_PHASE { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-d626bb8ec5a659accfbd8490bc1ac4a940722258:682e8c0cc0ceebf9bd38371a58249aabce93b1b3-0': + 'biocontainers/mulled-v2-d626bb8ec5a659accfbd8490bc1ac4a940722258:682e8c0cc0ceebf9bd38371a58249aabce93b1b3-0' }" + + input: + tuple val(meta), path(bam), path(bai), path(snps), path(svs), path(mods) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + + + output: + tuple val(meta), path("*.vcf.gz"), emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def sv_file = svs ? "--sv-file ${svs}" : "" + def mod_file = mods ? "--mod-file ${mods}" : "" + + def bamList = [] + for (file in bam) { + bamList.add("-b") + bamList.add(file) + } + """ + longphase \\ + phase \\ + $args \\ + --threads $task.cpus \\ + -o ${prefix} \\ + --reference ${fasta} \\ + --snp-file ${snps} \\ + ${bamList.join(" ")} \\ + ${sv_file} \\ + ${mod_file} \\ + + bgzip \\ + --threads $task.cpus \\ + $args2 \\ + ${prefix}.vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | bgzip -c > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + longphase: \$(longphase --version | head -n 1 | sed 's/Version: //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/longphase/phase/meta.yml b/modules/nf-core/longphase/phase/meta.yml new file mode 100644 index 00000000..823645d4 --- /dev/null +++ b/modules/nf-core/longphase/phase/meta.yml @@ -0,0 +1,84 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "longphase_phase" +description: LongPhase is an ultra-fast program for simultaneously co-phasing SNPs, + small indels, large SVs, and (5mC) modifications for Nanopore and PacBio platforms. +keywords: + - phase + - long-read + - genomics +tools: + - "longphase": + description: "LongPhase is an ultra-fast program for simultaneously co-phasing + SNPs, small indels, large SVs, and (5mC) modifications for Nanopore and PacBio + platforms." + homepage: "https://github.com/twolinin/longphase" + documentation: "https://github.com/twolinin/longphase" + tool_dev_url: "https://github.com/twolinin/longphase" + doi: "10.1093/bioinformatics/btac058" + licence: ["GPL v3"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file(s) + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index of sorted BAM/CRAM file(s) + pattern: "*.{bai,crai,csi}" + - snps: + type: file + description: VCF file with SNPs (and INDELs) + pattern: "*.{vcf,vcf.gz}" + - svs: + type: file + description: VCF file with SVs + pattern: "*.{vcf,vcf.gz}" + - mods: + type: file + description: modcall-generated VCF with modifications + pattern: "*.{vcf,vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fai: + type: file + description: Reference fai index + pattern: "*.fai" +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.vcf.gz": + type: file + description: Compressed VCF file with phased variants + pattern: "*.vcf.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/longphase/phase/tests/main.nf.test b/modules/nf-core/longphase/phase/tests/main.nf.test new file mode 100644 index 00000000..3e303312 --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/main.nf.test @@ -0,0 +1,157 @@ +nextflow_process { + + name "Test Process LONGPHASE_PHASE" + script "../main.nf" + process "LONGPHASE_PHASE" + + tag "modules" + tag "modules_nfcore" + tag "longphase" + tag "longphase/phase" + config "./nextflow.config" + + test("[ bam, bai, snps, [], [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +test("[ bam, bai, snps, svs, [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +test("[ bam x2, bai x2, snps, svs, [] ], fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true) + ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/NA24385_sv.vcf.gz', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("[ bam, bai, snps, [], [] ], fasta, fai - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'reference' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/longphase/phase/tests/main.nf.test.snap b/modules/nf-core/longphase/phase/tests/main.nf.test.snap new file mode 100644 index 00000000..8a38c1ca --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "[ bam, bai, snps, [], [] ], fasta, fai": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,fd2d21056b2de4722f12d5e883d9cb0a" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-22T12:14:04.269956432" + }, + "[ bam, bai, snps, svs, [] ], fasta, fai": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,b0a3effd6e076edbe7e2f1f7cfff547c" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,b0a3effd6e076edbe7e2f1f7cfff547c" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-04T13:37:16.921910004" + }, + "[ bam x2, bai x2, snps, svs, [] ], fasta, fai": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,04905b6042998e592c9f3b887ae9e09c" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,04905b6042998e592c9f3b887ae9e09c" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-04T13:37:23.41768963" + }, + "[ bam, bai, snps, [], [] ], fasta, fai - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,8d8d82510dd1fbe01a91c575c472897f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-22T12:15:40.296227382" + } +} \ No newline at end of file diff --git a/modules/nf-core/longphase/phase/tests/nextflow.config b/modules/nf-core/longphase/phase/tests/nextflow.config new file mode 100644 index 00000000..317f040a --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'LONGPHASE_PHASE' { + ext.args = '--ont' + } +} diff --git a/modules/nf-core/longphase/phase/tests/tags.yml b/modules/nf-core/longphase/phase/tests/tags.yml new file mode 100644 index 00000000..260a0d08 --- /dev/null +++ b/modules/nf-core/longphase/phase/tests/tags.yml @@ -0,0 +1,2 @@ +longphase/phase: + - "modules/nf-core/longphase/phase/**" diff --git a/modules/nf-core/minimap2/align/environment.yml b/modules/nf-core/minimap2/align/environment.yml index 41e8fe9f..dc6476b7 100644 --- a/modules/nf-core/minimap2/align/environment.yml +++ b/modules/nf-core/minimap2/align/environment.yml @@ -1,9 +1,6 @@ -name: minimap2_align - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::htslib=1.20 diff --git a/modules/nf-core/minimap2/align/meta.yml b/modules/nf-core/minimap2/align/meta.yml index 8996f881..a4cfc891 100644 --- a/modules/nf-core/minimap2/align/meta.yml +++ b/modules/nf-core/minimap2/align/meta.yml @@ -14,62 +14,77 @@ tools: homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FASTA or FASTQ files of size 1 and 2 for single-end - and paired-end data, respectively. - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test_ref'] - - reference: - type: file - description: | - Reference database in FASTA format. - - bam_format: - type: boolean - description: Specify that output should be in BAM format - - bam_index_extension: - type: string - description: BAM alignment index extension (e.g. "bai") - - cigar_paf_format: - type: boolean - description: Specify that output CIGAR should be in PAF format - - cigar_bam: - type: boolean - description: | - Write CIGAR with >65535 ops at the CG tag. This is recommended when - doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FASTA or FASTQ files of size 1 and 2 for single-end + and paired-end data, respectively. + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test_ref'] + - reference: + type: file + description: | + Reference database in FASTA format. + - - bam_format: + type: boolean + description: Specify that output should be in BAM format + - - bam_index_extension: + type: string + description: BAM alignment index extension (e.g. "bai") + - - cigar_paf_format: + type: boolean + description: Specify that output CIGAR should be in PAF format + - - cigar_bam: + type: boolean + description: | + Write CIGAR with >65535 ops at the CG tag. This is recommended when + doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - paf: - type: file - description: Alignment in PAF format - pattern: "*.paf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.paf": + type: file + description: Alignment in PAF format + pattern: "*.paf" - bam: - type: file - description: Alignment in BAM format - pattern: "*.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: Alignment in BAM format + pattern: "*.bam" - index: - type: file - description: BAM alignment index - pattern: "*.bam.*" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam.${bam_index_extension}": + type: file + description: BAM alignment index + pattern: "*.bam.*" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@heuermh" - "@sofstam" diff --git a/modules/nf-core/minimap2/index/environment.yml b/modules/nf-core/minimap2/index/environment.yml index 8a912a12..d1c1b471 100644 --- a/modules/nf-core/minimap2/index/environment.yml +++ b/modules/nf-core/minimap2/index/environment.yml @@ -1,7 +1,5 @@ -name: minimap2_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::minimap2=2.28 diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml index 1d29e3f2..57c80e29 100644 --- a/modules/nf-core/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -11,30 +11,33 @@ tools: homepage: https://github.com/lh3/minimap2 documentation: https://github.com/lh3/minimap2#uguide licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: | - Reference database in FASTA format. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: | + Reference database in FASTA format. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - index: - type: file - description: Minimap2 fasta index. - pattern: "*.mmi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.mmi": + type: file + description: Minimap2 fasta index. + pattern: "*.mmi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@yuukiiwa" - "@drpatelh" diff --git a/modules/nf-core/modkit/pileup/environment.yml b/modules/nf-core/modkit/pileup/environment.yml index 95074539..1343a05b 100644 --- a/modules/nf-core/modkit/pileup/environment.yml +++ b/modules/nf-core/modkit/pileup/environment.yml @@ -1,7 +1,5 @@ -name: modkit_pileup channels: - conda-forge - bioconda - - defaults dependencies: - ont-modkit=0.3.0 diff --git a/modules/nf-core/modkit/pileup/meta.yml b/modules/nf-core/modkit/pileup/meta.yml index eb2875f4..2f274d0c 100644 --- a/modules/nf-core/modkit/pileup/meta.yml +++ b/modules/nf-core/modkit/pileup/meta.yml @@ -6,67 +6,83 @@ keywords: - long-read tools: - "modkit": - description: A bioinformatics tool for working with modified bases in Oxford Nanopore sequencing data + description: A bioinformatics tool for working with modified bases in Oxford Nanopore + sequencing data homepage: https://github.com/nanoporetech/modkit documentation: https://github.com/nanoporetech/modkit tool_dev_url: https://github.com/nanoporetech/modkit licence: ["Oxford Nanopore Technologies PLC. Public License Version 1.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - bam: - type: file - description: Sorted BAM/CRAM file - pattern: "*.{bam,cram}" - - bai: - type: file - description: Associated index file for BAM - pattern: "*.bai" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. `[ id:'hg38' ]` - - fasta: - type: file - description: Reference sequence in FASTA format. Required for motif (e.g. CpG) filtering - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing BED file information - e.g. `[ id:'regions' ]` - - bed: - type: file - description: - BED file that will restrict threshold estimation and pileup results to positions overlapping intervals in the - file - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - bam: + type: file + description: Sorted BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Associated index file for BAM + pattern: "*.bai" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'hg38' ]` + - fasta: + type: file + description: Reference sequence in FASTA format. Required for motif (e.g. CpG) + filtering + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing BED file information + e.g. `[ id:'regions' ]` + - bed: + type: file + description: BED file that will restrict threshold estimation and pileup results + to positions overlapping intervals in the file + pattern: "*.bed" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bed: - type: file - description: bedMethyl output file(s) - pattern: "*.bed" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.bed": + type: file + description: bedMethyl output file(s) + pattern: "*.bed" - bedgraph: - type: file - description: bedgraph output files - pattern: "*.bedgraph" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.bedgraph": + type: file + description: bedgraph output files + pattern: "*.bedgraph" - log: - type: file - description: File for debug logs to be written to - pattern: "*.log" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.log": + type: file + description: File for debug logs to be written to + pattern: "*.log" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@Michal-Babins" - "@fellen31" diff --git a/modules/nf-core/mosdepth/environment.yml b/modules/nf-core/mosdepth/environment.yml index bcb9d64a..e9379873 100644 --- a/modules/nf-core/mosdepth/environment.yml +++ b/modules/nf-core/mosdepth/environment.yml @@ -1,8 +1,6 @@ -name: mosdepth channels: - conda-forge - bioconda - - defaults dependencies: # renovate: datasource=conda depName=bioconda/mosdepth - mosdepth=0.3.8 diff --git a/modules/nf-core/mosdepth/meta.yml b/modules/nf-core/mosdepth/meta.yml index 9caaf2cd..dc783c90 100644 --- a/modules/nf-core/mosdepth/meta.yml +++ b/modules/nf-core/mosdepth/meta.yml @@ -12,91 +12,161 @@ tools: documentation: https://github.com/brentp/mosdepth doi: 10.1093/bioinformatics/btx699 licence: ["MIT"] + identifier: biotools:mosdepth input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: Input BAM/CRAM file - pattern: "*.{bam,cram}" - - bai: - type: file - description: Index for BAM/CRAM file - pattern: "*.{bai,crai}" - - bed: - type: file - description: BED file with intersected intervals - pattern: "*.{bed}" - - meta2: - type: map - description: | - Groovy Map containing bed information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Input BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index for BAM/CRAM file + pattern: "*.{bai,crai}" + - bed: + type: file + description: BED file with intersected intervals + pattern: "*.{bed}" + - - meta2: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'test' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - global_txt: - type: file - description: Text file with global cumulative coverage distribution - pattern: "*.{global.dist.txt}" - - regions_txt: - type: file - description: Text file with region cumulative coverage distribution - pattern: "*.{region.dist.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.global.dist.txt": + type: file + description: Text file with global cumulative coverage distribution + pattern: "*.{global.dist.txt}" - summary_txt: - type: file - description: Text file with summary mean depths per chromosome and regions - pattern: "*.{summary.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.summary.txt": + type: file + description: Text file with summary mean depths per chromosome and regions + pattern: "*.{summary.txt}" + - regions_txt: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.region.dist.txt": + type: file + description: Text file with region cumulative coverage distribution + pattern: "*.{region.dist.txt}" + - per_base_d4: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.d4": + type: file + description: D4 file with per-base coverage + pattern: "*.{per-base.d4}" - per_base_bed: - type: file - description: BED file with per-base coverage - pattern: "*.{per-base.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.bed.gz": + type: file + description: BED file with per-base coverage + pattern: "*.{per-base.bed.gz}" - per_base_csi: - type: file - description: Index file for BED file with per-base coverage - pattern: "*.{per-base.bed.gz.csi}" - - per_base_d4: - type: file - description: D4 file with per-base coverage - pattern: "*.{per-base.d4}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.bed.gz.csi": + type: file + description: Index file for BED file with per-base coverage + pattern: "*.{per-base.bed.gz.csi}" - regions_bed: - type: file - description: BED file with per-region coverage - pattern: "*.{regions.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.regions.bed.gz": + type: file + description: BED file with per-region coverage + pattern: "*.{regions.bed.gz}" - regions_csi: - type: file - description: Index file for BED file with per-region coverage - pattern: "*.{regions.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.regions.bed.gz.csi": + type: file + description: Index file for BED file with per-region coverage + pattern: "*.{regions.bed.gz.csi}" - quantized_bed: - type: file - description: BED file with binned coverage - pattern: "*.{quantized.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.quantized.bed.gz": + type: file + description: BED file with binned coverage + pattern: "*.{quantized.bed.gz}" - quantized_csi: - type: file - description: Index file for BED file with binned coverage - pattern: "*.{quantized.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.quantized.bed.gz.csi": + type: file + description: Index file for BED file with binned coverage + pattern: "*.{quantized.bed.gz.csi}" - thresholds_bed: - type: file - description: BED file with the number of bases in each region that are covered at or above each threshold - pattern: "*.{thresholds.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.thresholds.bed.gz": + type: file + description: BED file with the number of bases in each region that are covered + at or above each threshold + pattern: "*.{thresholds.bed.gz}" - thresholds_csi: - type: file - description: Index file for BED file with threshold coverage - pattern: "*.{thresholds.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.thresholds.bed.gz.csi": + type: file + description: Index file for BED file with threshold coverage + pattern: "*.{thresholds.bed.gz.csi}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/mosdepth/tests/main.nf.test b/modules/nf-core/mosdepth/tests/main.nf.test index 21eebc1f..0b3c860d 100644 --- a/modules/nf-core/mosdepth/tests/main.nf.test +++ b/modules/nf-core/mosdepth/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] ] input[1] = [[],[]] @@ -40,9 +40,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -65,13 +65,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), [] ] input[1] = [ [ id:'test' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] """ } @@ -93,13 +93,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [ [ id:'test' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] """ } @@ -122,8 +122,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] ] input[1] = [[],[]] @@ -148,8 +148,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] ] input[1] = [[],[]] @@ -174,9 +174,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -200,9 +200,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -225,9 +225,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] input[1] = [[],[]] """ diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index ca39fb67..6f5b867b 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -1,7 +1,5 @@ -name: multiqc channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::multiqc=1.21 + - bioconda::multiqc=1.25.1 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 47ac352f..cc0643e1 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,14 +3,16 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' : - 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' : + 'biocontainers/multiqc:1.25.1--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" path(multiqc_config) path(extra_multiqc_config) path(multiqc_logo) + path(replace_names) + path(sample_names) output: path "*multiqc_report.html", emit: report @@ -23,16 +25,22 @@ process MULTIQC { script: def args = task.ext.args ?: '' + def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' def config = multiqc_config ? "--config $multiqc_config" : '' def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' - def logo = multiqc_logo ? /--cl-config 'custom_logo: "${multiqc_logo}"'/ : '' + def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' + def replace = replace_names ? "--replace-names ${replace_names}" : '' + def samples = sample_names ? "--sample-names ${sample_names}" : '' """ multiqc \\ --force \\ $args \\ $config \\ + $prefix \\ $extra_config \\ $logo \\ + $replace \\ + $samples \\ . cat <<-END_VERSIONS > versions.yml @@ -44,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/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 45a9bc35..b16c1879 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,5 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples into a single report +description: Aggregate results from bioinformatics analyses across many samples into + a single report keywords: - QC - bioinformatics tools @@ -12,40 +13,59 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] + identifier: biotools:multiqc input: - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections in multiqc_config. - pattern: "*.{yml,yaml}" - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" + - - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + - - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + - - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections + in multiqc_config. + pattern: "*.{yml,yaml}" + - - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + - - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + - - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" output: - report: - type: file - description: MultiQC report file - pattern: "multiqc_report.html" + - "*multiqc_report.html": + type: file + description: MultiQC report file + pattern: "multiqc_report.html" - data: - type: directory - description: MultiQC data dir - pattern: "multiqc_data" + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" - plots: - type: file - description: Plots created by MultiQC - pattern: "*_data" + - "*_plots": + type: file + description: Plots created by MultiQC + pattern: "*_data" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@bunop" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index f1c4242e..33316a7d 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -8,6 +8,8 @@ nextflow_process { tag "modules_nfcore" tag "multiqc" + config "./nextflow.config" + test("sarscov2 single-end [fastqc]") { when { @@ -17,6 +19,8 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } @@ -41,6 +45,8 @@ nextflow_process { input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } @@ -66,6 +72,8 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index bfebd802..2fcbb5ff 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:48:55.657331" + "timestamp": "2024-10-02T17:51:46.317523" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:49:49.071937" + "timestamp": "2024-10-02T17:52:20.680978" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:49:25.457567" + "timestamp": "2024-10-02T17:52:09.185842" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config new file mode 100644 index 00000000..c537a6a3 --- /dev/null +++ b/modules/nf-core/multiqc/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = null + } +} diff --git a/modules/nf-core/paraphase/environment.yml b/modules/nf-core/paraphase/environment.yml index 3c9f5526..3722ded7 100644 --- a/modules/nf-core/paraphase/environment.yml +++ b/modules/nf-core/paraphase/environment.yml @@ -1,9 +1,6 @@ -name: paraphase - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::minimap2=2.28 diff --git a/modules/nf-core/paraphase/main.nf b/modules/nf-core/paraphase/main.nf index ddaa33ec..8474427e 100644 --- a/modules/nf-core/paraphase/main.nf +++ b/modules/nf-core/paraphase/main.nf @@ -14,17 +14,20 @@ process PARAPHASE { tuple val(meta3), path(config) output: - tuple val(meta), path("*.paraphase.json") , emit: json - tuple val(meta), path("*.paraphase.bam") , emit: bam - tuple val(meta), path("*.paraphase.bam.bai") , emit: bai - tuple val(meta), path("${prefix}_paraphase_vcfs/*.vcf"), emit: vcf, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.paraphase.json") , emit: json + tuple val(meta), path("*.paraphase.bam") , emit: bam + tuple val(meta), path("*.paraphase.bam.bai") , emit: bai + tuple val(meta), path("${prefix}_paraphase_vcfs/*.vcf.gz") , emit: vcf , optional: true + tuple val(meta), path("${prefix}_paraphase_vcfs/*.vcf.gz.{csi,tbi}"), emit: vcf_index, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def args3 = task.ext.args3 ?: '' prefix = task.ext.prefix ?: "${meta.id}" def config_file = config ? "--config $config" : "" """ @@ -37,6 +40,18 @@ process PARAPHASE { $config_file \\ --out . + for vcf in ${prefix}_paraphase_vcfs/*.vcf; + do + bgzip \\ + $args2 \\ + --threads $task.cpus \\ + \$vcf; + tabix \\ + $args3 \\ + --threads $task.cpus \\ + \$vcf.gz; + done + cat <<-END_VERSIONS > versions.yml "${task.process}": minimap2: \$(minimap2 --version 2>&1) @@ -46,15 +61,18 @@ process PARAPHASE { """ stub: - def args = task.ext.args ?: '' + def args3 = task.ext.args3 ?: '' prefix = task.ext.prefix ?: "${meta.id}" + + def index = args3.contains('--csi') ? 'csi' : 'tbi' """ mkdir ${prefix}_paraphase_vcfs touch ${prefix}.paraphase.json touch ${prefix}.paraphase.bam touch ${prefix}.paraphase.bam.bai - touch ${prefix}_paraphase_vcfs/${prefix}_stub.vcf + echo '' | gzip > ${prefix}_paraphase_vcfs/${prefix}_stub.vcf.gz + touch ${prefix}_paraphase_vcfs/${prefix}_stub.vcf.gz.${index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/paraphase/meta.yml b/modules/nf-core/paraphase/meta.yml index 4dae0dd8..50c3c9e0 100644 --- a/modules/nf-core/paraphase/meta.yml +++ b/modules/nf-core/paraphase/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "paraphase" description: "HiFi-based caller for highly homologous genes" @@ -14,69 +13,96 @@ tools: tool_dev_url: "https://github.com/PacificBiosciences/paraphase" doi: "10.1016/j.ajhg.2023.01.001" licence: ["BSD-3-clause-Clear"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:true ]` - - - bam: - type: file - description: Sorted BAM file - pattern: "*.bam" - - - bai: - type: file - description: Index of BAM file - pattern: "*.bai" - - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing config information - e.g. [ id:'config' ] - - config: - type: file - description: Config file - pattern: "*.yaml" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - bam: + type: file + description: Sorted BAM file + pattern: "*.bam" + - bai: + type: file + description: Index of BAM file + pattern: "*.bai" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing config information + e.g. [ id:'config' ] + - config: + type: file + description: Config file + pattern: "*.yaml" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:true ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - json: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - "*.paraphase.json": + type: file + description: Summary of haplotype and variant calls + pattern: "*.paraphase.json" - bam: - type: file - description: (re)aligned BAM file - pattern: "*.paraphase.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - "*.paraphase.bam": + type: file + description: (re)aligned BAM file + pattern: "*.paraphase.bam" - bai: - type: file - description: Index of (re)aligned BAM file - pattern: "*.paraphase.bam.bai" - - json: - type: file - description: Summary of haplotype and variant calls - pattern: "*.paraphase.json" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - "*.paraphase.bam.bai": + type: file + description: Index of (re)aligned BAM file + pattern: "*.paraphase.bam.bai" - vcf: - type: file - description: VCF file(s) per gene - pattern: "*.vcf" - + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - ${prefix}_paraphase_vcfs/*.vcf.gz: + type: file + description: compressed VCF file(s) per gene + pattern: "*.vcf.gz" + - vcf_index: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - ${prefix}_paraphase_vcfs/*.vcf.gz.{csi,tbi}: + type: file + description: compressed VCF file index + pattern: "*.vcf.gz.{tbi,csi}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/paraphase/tests/main.nf.test b/modules/nf-core/paraphase/tests/main.nf.test index ff35588f..e34d6699 100644 --- a/modules/nf-core/paraphase/tests/main.nf.test +++ b/modules/nf-core/paraphase/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process PARAPHASE" script "../main.nf" process "PARAPHASE" - config "./nextflow.config" tag "modules" tag "modules_nfcore" @@ -25,6 +24,9 @@ nextflow_process { } test("homo_sapiens - [ bam, bai ], []") { + + config "./nextflow.config" + when { process { """ @@ -45,16 +47,16 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert process.out.vcf_index.get(0).get(1).endsWith("tbi") }, { assert snapshot( file(process.out.json.get(0).get(1)).readLines()[0..39], - process.out.versions, - file(process.out.vcf.get(0).get(1)).readLines()[0..962], - process.out.bam ==~ "test.paraphase.bam", - process.out.bai ==~ "test.paraphase.bam.bai", + path(process.out.vcf.get(0).get(1)).linesGzip[10], + bam(process.out.bam.get(0).get(1)).getReadsMD5(), + file(process.out.bai.get(0).get(1)).name, + file(process.out.vcf_index.get(0).get(1)).name, + process.out.versions ).match() - }, - { assert process.out.bam.get(0).get(1) =~ "test.paraphase.bam" }, - { assert process.out.bai.get(0).get(1) =~ "test.paraphase.bam.bai" }, + } ) } @@ -62,6 +64,46 @@ nextflow_process { test("homo_sapiens - [ bam, bai ], config") { + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + ] + input[1] = TABIX_BGZIP.out.output + input[2] = [ + [ id:'test_config' ], + file(params.modules_testdata_base_path + 'generic/config/paraphase_config.yaml', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf_index.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + file(process.out.json.get(0).get(1)).readLines()[0..39], + path(process.out.vcf.get(0).get(1)).linesGzip[10], + bam(process.out.bam.get(0).get(1)).getReadsMD5(), + file(process.out.bai.get(0).get(1)).name, + file(process.out.vcf_index.get(0).get(1)).name, + process.out.versions + ).match() + } + ) + } + } + + test("homo_sapiens - [ bam, bai ], config - csi_index") { + + config "./nextflow.csi_index.config" + when { process { """ @@ -82,16 +124,16 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert process.out.vcf_index.get(0).get(1).endsWith("csi") }, { assert snapshot( file(process.out.json.get(0).get(1)).readLines()[0..39], - process.out.versions, - file(process.out.vcf.get(0).get(1)).readLines()[0..962], - process.out.bam ==~ "test.paraphase.bam", - process.out.bai ==~ "test.paraphase.bam.bai", + path(process.out.vcf.get(0).get(1)).linesGzip[10], + bam(process.out.bam.get(0).get(1)).getReadsMD5(), + file(process.out.bai.get(0).get(1)).name, + file(process.out.vcf_index.get(0).get(1)).name, + process.out.versions ).match() - }, - { assert process.out.bam.get(0).get(1) =~ "test.paraphase.bam" }, - { assert process.out.bai.get(0).get(1) =~ "test.paraphase.bam.bai" }, + } ) } } @@ -99,6 +141,7 @@ nextflow_process { test("homo_sapiens - [ bam, bai ], [] - stub") { options "-stub" + config "./nextflow.config" when { process { @@ -128,6 +171,37 @@ nextflow_process { test("homo_sapiens - [ bam, bai ], config - stub") { options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + ] + input[1] = TABIX_BGZIP.out.output + input[2] = [ + [ id:'test_config' ], + file(params.modules_testdata_base_path + 'generic/config/paraphase_config.yaml', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - [ bam, bai ], config - stub - csi_index") { + + options "-stub" + config "./nextflow.csi_index.config" when { process { diff --git a/modules/nf-core/paraphase/tests/main.nf.test.snap b/modules/nf-core/paraphase/tests/main.nf.test.snap index 32242c1c..b80a3443 100644 --- a/modules/nf-core/paraphase/tests/main.nf.test.snap +++ b/modules/nf-core/paraphase/tests/main.nf.test.snap @@ -43,982 +43,19 @@ " \"unique_supporting_reads\": {", " \"12222212222111211221\": [" ], + "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", + "add24d02bf7f37b3ca30771c44ab4ee2", + "test.paraphase.bam.bai", + "test_PRODH.vcf.gz.tbi", [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" - ], - [ - "##fileformat=VCFv4.2", - "##FILTER=", - "##INFO=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##contig=", - "##paraphase_version=3.1.1", - "##paraphase_command=paraphase --gene PRODH --threads 2 --bam test.sorted.bam --reference test_ref.fa --prefix test --out .", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tPRODH_hap1\tPRODH_hap2", - "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", - "chr22\t18912285\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912286\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912287\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912288\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912289\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912290\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912291\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912292\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912293\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912294\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:6:0,6", - "chr22\t18912295\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:3:0,3", - "chr22\t18912296\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912297\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912298\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912299\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:5:0,5\t.:3:0,1", - "chr22\t18912300\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912301\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912302\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912303\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:7:0,7", - "chr22\t18912304\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912305\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912306\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912307\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912308\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912309\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912310\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,9\t1:7:0,7", - "chr22\t18912311\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,7\t.:3:0,3", - "chr22\t18912312\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912313\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912314\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912315\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912316\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:6:0,4", - "chr22\t18912317\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912318\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912319\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912320\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912321\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912322\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912323\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912324\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912325\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912326\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912327\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912328\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912329\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912330\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912331\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912332\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912333\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912334\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912335\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912336\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912337\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912338\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912339\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912340\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912341\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912342\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912343\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912344\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912345\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912346\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912347\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:4:0,3", - "chr22\t18912348\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912349\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912350\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912351\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912352\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912353\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:2:0,2", - "chr22\t18912354\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912355\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912356\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912357\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912358\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912359\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912360\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912361\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912362\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912363\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912364\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912365\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912366\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912367\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912368\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912369\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912370\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912371\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912372\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912373\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912374\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912375\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912376\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912377\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912378\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912379\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912380\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,4", - "chr22\t18912381\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912382\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912383\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912384\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912385\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912386\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912387\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912388\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912389\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912390\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912391\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912392\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912393\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912394\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912395\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912396\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912397\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912398\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912399\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912400\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912401\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912402\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912403\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912404\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912405\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912406\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912407\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912408\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912409\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912410\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912411\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912412\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912413\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912414\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912415\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912416\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912417\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912418\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912419\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912420\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912421\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912422\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912423\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912424\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912425\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912426\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912427\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912428\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912429\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912430\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912431\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912432\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912433\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912434\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912435\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912436\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912437\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912438\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912439\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912440\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912441\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912442\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912443\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912444\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912445\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912446\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912447\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912448\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912449\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912450\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912451\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912452\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912453\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912454\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912455\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912456\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912457\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912458\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18912459\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912460\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912461\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912462\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912463\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912464\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912465\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912466\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912467\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912468\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912469\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912470\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912471\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912472\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912473\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912474\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912475\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912476\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912477\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912478\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912479\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912480\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912481\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912482\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912483\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912484\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912485\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912486\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912487\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912488\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912489\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912490\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912491\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912492\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912493\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912494\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912495\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912496\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912497\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912498\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912499\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912500\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912501\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912502\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912503\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912504\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912505\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912506\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912507\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912508\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912509\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912510\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912511\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912512\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912513\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912514\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912515\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912516\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912517\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912518\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912519\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912520\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912521\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912522\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912523\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912524\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912525\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912526\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912527\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912528\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,4", - "chr22\t18912529\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912530\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912531\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912532\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912533\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912534\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912535\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912536\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912537\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912538\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912539\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912540\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912541\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912542\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912543\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912544\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912545\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912546\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912547\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912548\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912549\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912550\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912551\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912552\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912553\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912554\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912555\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912556\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912557\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912558\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,5", - "chr22\t18912559\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t.:4:0,2", - "chr22\t18912560\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912561\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912562\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912563\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912564\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912565\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912566\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912567\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912568\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912569\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912570\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912571\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912572\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912573\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912574\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912575\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912576\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912577\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912578\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912579\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912580\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912581\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912582\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912583\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912584\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912585\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912586\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912587\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912588\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912589\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912590\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912591\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912592\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912593\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912594\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912595\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912596\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912597\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912598\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912599\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912600\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912601\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912602\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912603\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912604\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912605\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912606\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912607\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912608\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912609\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912610\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912611\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912612\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912613\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912614\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912615\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912616\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:2:0,2", - "chr22\t18912617\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912618\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912619\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912620\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:6:0,6", - "chr22\t18912621\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912622\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912623\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912624\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912625\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912626\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912627\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912628\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912629\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912630\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912631\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912632\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912633\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912634\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912635\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912636\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912637\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912638\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912639\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912640\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912641\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912642\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912643\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912644\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912645\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912646\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912647\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912648\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912649\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912650\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912651\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912652\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912653\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912654\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912655\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912656\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912657\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912658\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912659\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912660\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,6", - "chr22\t18912661\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18912662\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912663\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912664\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912665\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912666\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912667\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912668\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912669\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912670\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912671\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912672\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912673\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912674\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912675\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912676\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912677\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912678\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912679\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912680\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912681\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912682\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912683\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912684\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912685\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912686\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912687\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912688\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912689\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912690\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912691\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912692\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912693\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912694\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912695\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18912696\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912697\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912698\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912699\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912700\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912701\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912702\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912703\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912704\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912705\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912706\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912707\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912708\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912709\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912710\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912711\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912712\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912713\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912714\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,6", - "chr22\t18912715\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912716\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912717\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912718\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912719\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912720\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912721\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912722\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912723\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912724\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912725\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912726\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912727\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912728\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912729\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912730\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,3", - "chr22\t18912731\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912732\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912733\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912734\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912735\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912736\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912737\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912738\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912739\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912740\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912741\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912742\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912743\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912744\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912745\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912746\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912747\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912748\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912749\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912750\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912751\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912752\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912753\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912754\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912755\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912756\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912757\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912758\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912759\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912760\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912761\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912762\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912763\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:4:0,4", - "chr22\t18912764\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912765\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912766\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912767\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912768\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912769\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912770\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18912771\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912772\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912773\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912774\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912775\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912776\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912777\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912778\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912779\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912780\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912781\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912782\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912783\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912784\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912785\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912786\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912787\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912788\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912789\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912790\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912791\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912792\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912793\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912794\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912795\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912796\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912797\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912798\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912799\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912800\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912801\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912802\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912803\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912804\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912805\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912806\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912807\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912808\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912809\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912810\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912811\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912812\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912813\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912814\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912815\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t1:4:0,4", - "chr22\t18912816\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912817\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912818\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912819\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912820\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912821\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912822\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912823\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912824\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912825\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912826\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912827\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912828\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912829\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912830\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912831\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912832\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912833\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912834\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,3", - "chr22\t18912835\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912836\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912837\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912838\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912839\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912840\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,2", - "chr22\t18912841\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912842\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912843\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912844\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912845\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912846\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912847\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912848\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912849\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912850\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912851\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912852\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912853\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912854\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912855\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912856\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912857\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912858\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912859\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912860\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912861\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912862\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912863\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912864\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912865\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912866\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912867\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912868\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912869\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912870\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912871\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912872\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912873\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912874\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912875\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912876\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912877\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912878\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912879\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912880\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912881\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912882\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912883\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912884\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912885\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912886\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912887\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912888\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912889\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912890\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912891\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912892\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912893\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912894\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912895\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912896\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912897\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912898\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912899\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912900\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912901\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912902\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912903\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,2", - "chr22\t18912904\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912905\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912906\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912907\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912908\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912909\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912910\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912911\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912912\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912913\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912914\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912915\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912916\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912917\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912918\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t.:2:0,2", - "chr22\t18912919\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912920\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912921\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912922\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912923\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912924\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912925\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912926\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912927\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912928\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912929\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912930\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,3", - "chr22\t18912931\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912932\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912933\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912934\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912935\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912936\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912937\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912938\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912939\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912940\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912941\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912942\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912943\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912944\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912945\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912946\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912947\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912948\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912949\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912950\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912951\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912952\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912953\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:6:0,6", - "chr22\t18912954\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:4:0,4", - "chr22\t18912955\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912956\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912957\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912958\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912959\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912960\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912961\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912962\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912963\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912964\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912965\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912966\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912967\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912968\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912969\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912970\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912971\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912972\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912973\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912974\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912975\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912976\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912977\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912978\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912979\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912980\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912981\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912982\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912983\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912984\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912985\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912986\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912987\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912988\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912989\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912990\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912991\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912992\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912993\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912994\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912995\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912996\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912997\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912998\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912999\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913000\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913001\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913002\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913003\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913004\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913005\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913006\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913007\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913008\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913009\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18913010\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913011\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913012\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913013\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913014\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913015\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913016\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913017\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913018\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913019\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913020\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913021\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913022\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913023\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913024\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913025\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913026\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913027\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913028\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913029\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913030\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913031\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913032\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913033\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913034\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913035\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913036\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913037\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913038\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913039\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913040\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913041\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913042\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913043\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913044\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913045\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913046\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913047\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913048\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913049\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913050\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913051\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913052\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913053\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913054\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913055\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913056\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913057\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913058\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913059\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913060\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913061\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913062\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913063\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913064\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913065\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913066\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913067\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913068\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913069\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18913070\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913071\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913072\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913073\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18913074\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913075\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913076\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913077\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913078\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913079\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913080\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913081\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913082\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913083\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913084\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913085\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913086\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913087\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913088\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913089\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913090\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913091\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913092\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913093\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913094\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913095\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913096\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913097\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913098\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913099\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913100\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18913101\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913102\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913103\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913104\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913105\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913106\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913107\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913108\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913109\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913110\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913111\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913112\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913113\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913114\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913115\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913116\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913117\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913118\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913119\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913120\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913121\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913122\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913123\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913124\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913125\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913126\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913127\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913128\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913129\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913130\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913131\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913132\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18913133\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:3:0,2", - "chr22\t18913134\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913135\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913136\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913137\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913138\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,5", - "chr22\t18913139\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,1", - "chr22\t18913140\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913141\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913142\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913143\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913144\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913145\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913146\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913147\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913148\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913149\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913150\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913151\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913152\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913153\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913154\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913155\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913156\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913157\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913158\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:2:0,2", - "chr22\t18913159\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913160\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18913161\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913162\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913163\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913164\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913165\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913166\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913167\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913168\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913169\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913170\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913171\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913172\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913173\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913174\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913175\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913176\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913177\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913178\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913179\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913180\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913181\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913182\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913183\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913184\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913185\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913186\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913187\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913188\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913189\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913190\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913191\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913192\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913193\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913194\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913195\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913196\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913197\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913198\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913199\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913200\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913201\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913202\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913203\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18913204\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18913205\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913206\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913207\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18913208\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913209\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913210\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913211\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913212\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913213\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913214\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913215\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913216\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913217\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913218\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913219\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913220\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913221\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913222\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913223\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913224\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913225\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913226\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913227\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913228\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913229\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913230\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913231\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913232\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913233\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913234\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913235\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913236\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5" - ], - false, - false + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-29T15:14:21.054789211" + "timestamp": "2024-09-06T06:20:55.135067843" }, "homo_sapiens - [ bam, bai ], config - stub": { "content": [ @@ -1056,10 +93,19 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" ], "bai": [ @@ -1095,7 +141,16 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_index": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -1105,9 +160,67 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T17:44:03.275093922" + "timestamp": "2024-09-03T12:04:30.019868621" + }, + "homo_sapiens - [ bam, bai ], config - csi_index": { + "content": [ + [ + "{", + " \"PRODH\": {", + " \"total_cn\": 2,", + " \"gene_cn\": null,", + " \"final_haplotypes\": {", + " \"12222212222111211221\": \"PRODH_hap1\",", + " \"21111121111222122112\": \"PRODH_hap2\"", + " },", + " \"two_copy_haplotypes\": [],", + " \"alleles_final\": [],", + " \"hap_links\": {},", + " \"highest_total_cn\": 2,", + " \"assembled_haplotypes\": [", + " \"12222212222111211221\",", + " \"21111121111222122112\"", + " ],", + " \"sites_for_phasing\": [", + " \"18913237_G_A\",", + " \"18917224_G_A\",", + " \"18917246_A_C\",", + " \"18917262_G_A\",", + " \"18917266_T_C\",", + " \"18917362_C_A\",", + " \"18918010_C_T\",", + " \"18918465_G_A\",", + " \"18918847_T_C\",", + " \"18919892_G_T\",", + " \"18920342_G_A\",", + " \"18920484_C_T\",", + " \"18921128_C_T\",", + " \"18921213_T_C\",", + " \"18921638_T_G\",", + " \"18921763_T_C\",", + " \"18922744_C_T\",", + " \"18923032_C_T\",", + " \"18923315_T_G\",", + " \"18923644_G_A\"", + " ],", + " \"unique_supporting_reads\": {", + " \"12222212222111211221\": [" + ], + "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", + "add24d02bf7f37b3ca30771c44ab4ee2", + "test.paraphase.bam.bai", + "test_PRODH.vcf.gz.csi", + [ + "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T06:24:48.142490096" }, "homo_sapiens - [ bam, bai ], [] - stub": { "content": [ @@ -1145,10 +258,19 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" ], "bai": [ @@ -1184,7 +306,16 @@ "id": "test", "single_end": true }, - "test_stub.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_index": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -1194,9 +325,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T17:43:56.008820548" + "timestamp": "2024-09-03T12:04:14.370756094" }, "homo_sapiens - [ bam, bai ], config": { "content": [ @@ -1242,981 +373,125 @@ " \"unique_supporting_reads\": {", " \"12222212222111211221\": [" ], + "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", + "add24d02bf7f37b3ca30771c44ab4ee2", + "test.paraphase.bam.bai", + "test_PRODH.vcf.gz.tbi", [ "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" - ], - [ - "##fileformat=VCFv4.2", - "##FILTER=", - "##INFO=", - "##FORMAT=", - "##FORMAT=", - "##FORMAT=", - "##contig=", - "##paraphase_version=3.1.1", - "##paraphase_command=paraphase --gene PRODH --threads 2 --bam test.sorted.bam --reference test_ref.fa --prefix test --config paraphase_config.yaml --out .", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tPRODH_hap1\tPRODH_hap2", - "chr22\t18912284\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:5:0,5", - "chr22\t18912285\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912286\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912287\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912288\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912289\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912290\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912291\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912292\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912293\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912294\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:6:0,6", - "chr22\t18912295\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:3:0,3", - "chr22\t18912296\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912297\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912298\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912299\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:5:0,5\t.:3:0,1", - "chr22\t18912300\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912301\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912302\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912303\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:7:0,7", - "chr22\t18912304\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912305\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912306\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912307\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912308\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912309\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912310\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,9\t1:7:0,7", - "chr22\t18912311\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,7\t.:3:0,3", - "chr22\t18912312\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912313\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912314\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912315\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912316\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:6:0,4", - "chr22\t18912317\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912318\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912319\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912320\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912321\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912322\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912323\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912324\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912325\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912326\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912327\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912328\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912329\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912330\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912331\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912332\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912333\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912334\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912335\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912336\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912337\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912338\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912339\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912340\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912341\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912342\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912343\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912344\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912345\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912346\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912347\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:4:0,3", - "chr22\t18912348\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912349\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912350\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912351\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912352\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912353\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:2:0,2", - "chr22\t18912354\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912355\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912356\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912357\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912358\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912359\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912360\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912361\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912362\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912363\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912364\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912365\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912366\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912367\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912368\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912369\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912370\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912371\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912372\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912373\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912374\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912375\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912376\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912377\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912378\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912379\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912380\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,4", - "chr22\t18912381\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912382\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912383\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912384\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912385\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912386\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912387\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912388\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912389\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912390\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912391\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912392\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912393\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912394\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912395\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912396\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912397\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912398\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912399\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912400\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912401\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912402\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912403\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912404\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912405\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912406\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912407\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912408\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912409\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912410\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912411\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912412\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912413\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912414\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912415\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912416\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912417\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912418\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912419\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912420\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912421\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912422\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912423\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912424\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912425\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912426\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912427\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912428\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912429\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912430\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912431\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912432\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912433\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912434\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912435\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912436\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912437\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912438\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912439\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912440\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912441\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912442\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912443\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912444\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912445\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912446\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912447\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912448\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912449\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912450\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912451\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912452\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912453\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912454\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912455\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912456\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912457\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912458\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18912459\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912460\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912461\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912462\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912463\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912464\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912465\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912466\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912467\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912468\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912469\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912470\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912471\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912472\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912473\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912474\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912475\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912476\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912477\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912478\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912479\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912480\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912481\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912482\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912483\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912484\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912485\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912486\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912487\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912488\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912489\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912490\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912491\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912492\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912493\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912494\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912495\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912496\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912497\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912498\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912499\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912500\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912501\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912502\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912503\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912504\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912505\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912506\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912507\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912508\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912509\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912510\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912511\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912512\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912513\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912514\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912515\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912516\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912517\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912518\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912519\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912520\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912521\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912522\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912523\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912524\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912525\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912526\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912527\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912528\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,4", - "chr22\t18912529\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:2:0,2", - "chr22\t18912530\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912531\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912532\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912533\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912534\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912535\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912536\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912537\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912538\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912539\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912540\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912541\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912542\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912543\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912544\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912545\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912546\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912547\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912548\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912549\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912550\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912551\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912552\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912553\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912554\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912555\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912556\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912557\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912558\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,5", - "chr22\t18912559\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t.:4:0,2", - "chr22\t18912560\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912561\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912562\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912563\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912564\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912565\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912566\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912567\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912568\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912569\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912570\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912571\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912572\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912573\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912574\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912575\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912576\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,4", - "chr22\t18912577\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912578\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912579\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912580\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912581\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912582\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912583\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912584\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912585\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912586\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912587\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912588\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912589\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912590\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912591\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912592\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912593\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912594\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912595\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912596\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912597\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912598\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912599\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912600\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912601\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912602\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912603\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912604\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912605\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912606\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912607\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912608\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912609\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912610\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912611\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912612\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912613\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912614\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912615\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912616\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:2:0,2", - "chr22\t18912617\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912618\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912619\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912620\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t1:6:0,6", - "chr22\t18912621\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912622\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912623\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912624\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912625\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912626\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912627\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912628\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912629\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912630\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912631\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912632\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912633\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912634\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912635\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912636\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912637\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912638\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912639\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912640\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912641\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912642\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912643\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912644\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912645\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912646\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912647\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912648\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912649\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912650\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912651\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912652\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912653\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,3", - "chr22\t18912654\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912655\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912656\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912657\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912658\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912659\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912660\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,6", - "chr22\t18912661\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18912662\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912663\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912664\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912665\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912666\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912667\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912668\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912669\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912670\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912671\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912672\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912673\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912674\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912675\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912676\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912677\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912678\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912679\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912680\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912681\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912682\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912683\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912684\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912685\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912686\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912687\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912688\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912689\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912690\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912691\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912692\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912693\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18912694\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912695\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18912696\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912697\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912698\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912699\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912700\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912701\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912702\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912703\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912704\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912705\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912706\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912707\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912708\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912709\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912710\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912711\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912712\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912713\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912714\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,6", - "chr22\t18912715\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912716\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912717\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912718\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912719\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912720\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912721\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912722\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912723\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912724\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912725\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912726\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912727\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912728\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912729\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912730\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,3", - "chr22\t18912731\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912732\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912733\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912734\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912735\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912736\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912737\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912738\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912739\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912740\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912741\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912742\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912743\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912744\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912745\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912746\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912747\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912748\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912749\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912750\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912751\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912752\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912753\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912754\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912755\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912756\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912757\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912758\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912759\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912760\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912761\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912762\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912763\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:4:0,4", - "chr22\t18912764\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912765\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912766\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912767\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912768\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912769\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912770\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18912771\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912772\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912773\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912774\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912775\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912776\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912777\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912778\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912779\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912780\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912781\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912782\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912783\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912784\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912785\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912786\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912787\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912788\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912789\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912790\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912791\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912792\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912793\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912794\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912795\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18912796\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912797\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912798\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912799\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912800\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912801\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912802\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912803\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912804\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912805\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912806\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912807\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912808\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912809\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912810\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912811\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912812\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912813\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912814\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18912815\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t1:4:0,4", - "chr22\t18912816\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912817\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912818\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912819\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912820\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912821\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912822\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912823\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912824\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912825\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912826\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912827\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912828\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912829\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912830\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912831\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912832\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912833\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912834\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,3", - "chr22\t18912835\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912836\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912837\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912838\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,10\t1:7:0,7", - "chr22\t18912839\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912840\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t.:3:0,2", - "chr22\t18912841\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912842\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912843\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912844\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912845\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912846\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,5", - "chr22\t18912847\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912848\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912849\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912850\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912851\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912852\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912853\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912854\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912855\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912856\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912857\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912858\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912859\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912860\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912861\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912862\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912863\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912864\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912865\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912866\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912867\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t.:3:0,3", - "chr22\t18912868\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912869\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912870\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912871\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912872\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912873\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912874\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912875\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912876\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912877\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912878\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912879\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912880\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,6", - "chr22\t18912881\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:4:0,4", - "chr22\t18912882\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912883\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912884\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912885\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912886\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912887\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912888\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912889\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912890\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912891\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912892\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912893\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:4:0,4", - "chr22\t18912894\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912895\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912896\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18912897\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,5", - "chr22\t18912898\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912899\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912900\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912901\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912902\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18912903\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,2", - "chr22\t18912904\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912905\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912906\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912907\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912908\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912909\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912910\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912911\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912912\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912913\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912914\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912915\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912916\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912917\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,10\t1:7:0,7", - "chr22\t18912918\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,6\t.:2:0,2", - "chr22\t18912919\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912920\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912921\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912922\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:6:0,6", - "chr22\t18912923\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912924\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912925\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912926\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912927\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18912928\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912929\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912930\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,3", - "chr22\t18912931\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912932\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:6:0,6", - "chr22\t18912933\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912934\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912935\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912936\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912937\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18912938\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18912939\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912940\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912941\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912942\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912943\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912944\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912945\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912946\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912947\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912948\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912949\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912950\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912951\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18912952\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912953\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:6:0,6", - "chr22\t18912954\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,8\t1:4:0,4", - "chr22\t18912955\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912956\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912957\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912958\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912959\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912960\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912961\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912962\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912963\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912964\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912965\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912966\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18912967\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912968\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912969\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912970\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912971\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912972\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912973\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18912974\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912975\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912976\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912977\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18912978\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912979\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912980\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912981\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912982\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912983\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912984\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912985\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18912986\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912987\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912988\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18912989\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912990\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912991\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912992\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18912993\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18912994\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18912995\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:4:0,4", - "chr22\t18912996\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912997\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18912998\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18912999\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913000\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913001\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913002\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913003\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913004\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913005\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913006\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913007\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913008\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913009\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t.:3:0,3", - "chr22\t18913010\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913011\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913012\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913013\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913014\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913015\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913016\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913017\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913018\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913019\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913020\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913021\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913022\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913023\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913024\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913025\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913026\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913027\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913028\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913029\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913030\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913031\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913032\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913033\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:4:0,4", - "chr22\t18913034\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913035\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913036\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913037\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913038\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913039\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913040\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913041\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913042\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913043\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913044\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913045\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913046\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913047\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913048\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913049\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913050\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913051\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913052\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913053\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913054\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913055\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913056\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913057\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913058\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913059\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913060\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913061\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913062\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913063\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913064\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913065\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913066\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913067\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913068\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,7", - "chr22\t18913069\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,7\t.:2:0,2", - "chr22\t18913070\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913071\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913072\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913073\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,6", - "chr22\t18913074\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913075\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913076\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913077\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913078\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913079\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913080\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913081\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913082\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913083\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913084\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913085\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913086\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913087\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913088\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913089\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913090\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913091\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913092\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913093\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913094\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913095\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913096\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913097\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913098\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913099\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913100\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:3:0,3", - "chr22\t18913101\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913102\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913103\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913104\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t1:5:0,5", - "chr22\t18913105\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913106\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913107\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913108\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913109\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913110\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913111\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913112\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913113\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913114\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913115\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913116\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913117\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913118\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:5:0,5", - "chr22\t18913119\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913120\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913121\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913122\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913123\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913124\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913125\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913126\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913127\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913128\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913129\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913130\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913131\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913132\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:7:0,6", - "chr22\t18913133\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:6:0,5\t.:3:0,2", - "chr22\t18913134\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913135\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913136\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913137\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913138\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,5", - "chr22\t18913139\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:7:0,7\t.:3:0,1", - "chr22\t18913140\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913141\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913142\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913143\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913144\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913145\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913146\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913147\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913148\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913149\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913150\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913151\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913152\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913153\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913154\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913155\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913156\t.\ta\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913157\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913158\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:8:0,8\t.:2:0,2", - "chr22\t18913159\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913160\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:7:0,7", - "chr22\t18913161\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913162\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913163\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913164\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913165\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913166\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913167\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913168\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913169\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913170\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913171\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913172\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:5:0,5", - "chr22\t18913173\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913174\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913175\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913176\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913177\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913178\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913179\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913180\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913181\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913182\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:9:0,9\t1:4:0,4", - "chr22\t18913183\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913184\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913185\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913186\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913187\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913188\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913189\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913190\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913191\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913192\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913193\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913194\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,11\t1:6:0,6", - "chr22\t18913195\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913196\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913197\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913198\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913199\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913200\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913201\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:6:0,6", - "chr22\t18913202\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913203\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,6", - "chr22\t18913204\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,5", - "chr22\t18913205\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913206\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913207\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t.:3:0,3", - "chr22\t18913208\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913209\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913210\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913211\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5", - "chr22\t18913212\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913213\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913214\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913215\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913216\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913217\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913218\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:6:0,6", - "chr22\t18913219\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913220\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:6:0,6", - "chr22\t18913221\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913222\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913223\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913224\t.\tt\tT\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913225\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:5:0,5", - "chr22\t18913226\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913227\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913228\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913229\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913230\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913231\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:10:0,10\t1:7:0,7", - "chr22\t18913232\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:11:0,11\t1:7:0,7", - "chr22\t18913233\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913234\t.\tg\tG\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913235\t.\tc\tC\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:7:0,7", - "chr22\t18913236\t.\ta\tA\t.\tPASS\tHPBOUND=18912283-18936792,18912283-18936792\tGT:DP:AD\t1:12:0,12\t1:5:0,5" - ], - false, - false + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T06:24:34.443854854" + }, + "homo_sapiens - [ bam, bai ], config - stub - csi_index": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" + ], + "bai": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.paraphase.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_index": [ + [ + { + "id": "test", + "single_end": true + }, + "test_stub.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,9162c83cfe9e915e8743a1c9d64d64eb" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T15:14:33.451355236" + "timestamp": "2024-09-03T12:10:23.256066977" } } \ No newline at end of file diff --git a/modules/nf-core/paraphase/tests/nextflow.csi_index.config b/modules/nf-core/paraphase/tests/nextflow.csi_index.config new file mode 100644 index 00000000..df8ee6c3 --- /dev/null +++ b/modules/nf-core/paraphase/tests/nextflow.csi_index.config @@ -0,0 +1,6 @@ +process { + withName: 'PARAPHASE' { + ext.args = '--gene PRODH' + ext.args3 = '--csi' + } +} diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml index f8450fa5..62054fc9 100644 --- a/modules/nf-core/samtools/faidx/environment.yml +++ b/modules/nf-core/samtools/faidx/environment.yml @@ -1,10 +1,8 @@ -name: samtools_faidx - +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults - dependencies: - - bioconda::htslib=1.20 - - bioconda::samtools=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf index bdcdbc95..28c0a81c 100644 --- a/modules/nf-core/samtools/faidx/main.nf +++ b/modules/nf-core/samtools/faidx/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml index f3c25de2..6721b2cb 100644 --- a/modules/nf-core/samtools/faidx/meta.yml +++ b/modules/nf-core/samtools/faidx/meta.yml @@ -14,47 +14,62 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: FASTA file - pattern: "*.{fa,fasta}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: FASTA file + pattern: "*.{fa,fasta}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fai: + type: file + description: FASTA index file + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - fa: - type: file - description: FASTA file - pattern: "*.{fa}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{fa,fasta}": + type: file + description: FASTA file + pattern: "*.{fa}" - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fai": + type: file + description: FASTA index file + pattern: "*.{fai}" - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gzi": + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap index 3223b72b..1bbb3ec2 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -36,15 +36,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:14.779784761" + "timestamp": "2024-09-16T07:57:47.450887871" }, "test_samtools_faidx_bgzip": { "content": [ @@ -71,7 +71,7 @@ ] ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -95,15 +95,15 @@ ] ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:20.256633877" + "timestamp": "2024-09-16T07:58:04.804905659" }, "test_samtools_faidx_fasta": { "content": [ @@ -124,7 +124,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ [ @@ -142,15 +142,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:25.632577273" + "timestamp": "2024-09-16T07:58:23.831268154" }, "test_samtools_faidx_stub_fasta": { "content": [ @@ -171,7 +171,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ [ @@ -189,15 +189,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:31.058424849" + "timestamp": "2024-09-16T07:58:35.600243706" }, "test_samtools_faidx_stub_fai": { "content": [ @@ -218,7 +218,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -236,14 +236,14 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:36.479929617" + "timestamp": "2024-09-16T07:58:54.705460167" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/fastq/environment.yml b/modules/nf-core/samtools/fastq/environment.yml index 4455904e..62054fc9 100644 --- a/modules/nf-core/samtools/fastq/environment.yml +++ b/modules/nf-core/samtools/fastq/environment.yml @@ -1,8 +1,8 @@ -name: samtools_fastq +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/fastq/main.nf b/modules/nf-core/samtools/fastq/main.nf index 6796c02b..136744d5 100644 --- a/modules/nf-core/samtools/fastq/main.nf +++ b/modules/nf-core/samtools/fastq/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FASTQ { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/fastq/meta.yml b/modules/nf-core/samtools/fastq/meta.yml index c4002a45..c15a0b6f 100644 --- a/modules/nf-core/samtools/fastq/meta.yml +++ b/modules/nf-core/samtools/fastq/meta.yml @@ -15,45 +15,69 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - interleave: - type: boolean - description: Set true for interleaved fastq file + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - - interleave: + type: boolean + description: Set true for interleaved fastq file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - fastq: - type: file - description: Compressed FASTQ file(s) with reads with either the READ1 or READ2 flag set in separate files. - pattern: "*_{1,2}.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_{1,2}.fastq.gz": + type: file + description: Compressed FASTQ file(s) with reads with either the READ1 or READ2 + flag set in separate files. + pattern: "*_{1,2}.fastq.gz" - interleaved: - type: file - description: Compressed FASTQ file with reads with either the READ1 or READ2 flag set in a combined file. Needs collated input file. - pattern: "*_interleaved.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_interleaved.fastq": + type: file + description: Compressed FASTQ file with reads with either the READ1 or READ2 + flag set in a combined file. Needs collated input file. + pattern: "*_interleaved.fastq.gz" - singleton: - type: file - description: Compressed FASTQ file with singleton reads - pattern: "*_singleton.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_singleton.fastq.gz": + type: file + description: Compressed FASTQ file with singleton reads + pattern: "*_singleton.fastq.gz" - other: - type: file - description: Compressed FASTQ file with reads with either both READ1 and READ2 flags set or unset - pattern: "*_other.fastq.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_other.fastq.gz": + type: file + description: Compressed FASTQ file with reads with either both READ1 and READ2 + flags set or unset + pattern: "*_other.fastq.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@priyanka-surana" - "@suzannejin" diff --git a/modules/nf-core/samtools/fastq/tests/main.nf.test.snap b/modules/nf-core/samtools/fastq/tests/main.nf.test.snap index 1ba09d3a..10e5cd3d 100644 --- a/modules/nf-core/samtools/fastq/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/fastq/tests/main.nf.test.snap @@ -93,26 +93,26 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,3a8725ed574091b661fbc64754bfcef1" + "versions.yml:md5,11e074d69900de5a7dfdbe1fb4e789fd" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:40.362380302" + "timestamp": "2024-09-16T08:00:41.44921616" }, "bam_verinterleave_sions": { "content": [ [ - "versions.yml:md5,3a8725ed574091b661fbc64754bfcef1" + "versions.yml:md5,11e074d69900de5a7dfdbe1fb4e789fd" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:45.632731997" + "timestamp": "2024-09-16T08:00:56.47781168" }, "bam_singleton": { "content": [ diff --git a/modules/nf-core/samtools/import/environment.yml b/modules/nf-core/samtools/import/environment.yml index 38f1ebab..62054fc9 100644 --- a/modules/nf-core/samtools/import/environment.yml +++ b/modules/nf-core/samtools/import/environment.yml @@ -1,8 +1,8 @@ -name: samtools_import +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/import/main.nf b/modules/nf-core/samtools/import/main.nf index 954a8052..e0a51c03 100644 --- a/modules/nf-core/samtools/import/main.nf +++ b/modules/nf-core/samtools/import/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IMPORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0': - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0': + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/samtools/import/meta.yml b/modules/nf-core/samtools/import/meta.yml index 9002e092..5c98b8be 100644 --- a/modules/nf-core/samtools/import/meta.yml +++ b/modules/nf-core/samtools/import/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json name: "samtools_import" description: converts FASTQ files to unmapped SAM/BAM/CRAM @@ -18,38 +17,53 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - reads: - type: file - description: fastq data to be converted to SAM/BAM/CRAM - pattern: "*.{fastq,fq,fastq.gz,fq.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - reads: + type: file + description: fastq data to be converted to SAM/BAM/CRAM + pattern: "*.{fastq,fq,fastq.gz,fq.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'test', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - sam: - type: file - description: SAM file - pattern: "*.sam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.sam": + type: file + description: SAM file + pattern: "*.sam" - bam: - type: file - description: Unaligned BAM file - pattern: "*.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.bam": + type: file + description: Unaligned BAM file + pattern: "*.bam" - cram: - type: file - description: Unaligned CRAM file - pattern: "*.cram" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.cram": + type: file + description: Unaligned CRAM file + pattern: "*.cram" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@matthdsm" maintainers: diff --git a/modules/nf-core/samtools/import/tests/main.nf.test b/modules/nf-core/samtools/import/tests/main.nf.test index d029ca70..9c7ce5d9 100644 --- a/modules/nf-core/samtools/import/tests/main.nf.test +++ b/modules/nf-core/samtools/import/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]) """ } @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ]) """ } @@ -67,7 +67,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ]) """ } diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index 260d516b..62054fc9 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -1,8 +1,8 @@ -name: samtools_index +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index e002585b..31175610 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 01a4ee03..db8df0d5 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -15,38 +15,52 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: input file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - crai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" - csi: - type: file - description: CSI index file - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: CSI index file + pattern: "*.{csi}" + - crai: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap index 799d199c..72d65e81 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -36,15 +36,15 @@ ] ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:53.9057" + "timestamp": "2024-09-16T08:21:25.261127166" }, "crai - stub": { "content": [ @@ -65,7 +65,7 @@ ] ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -83,15 +83,15 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:45.931558" + "timestamp": "2024-09-16T08:21:12.653194876" }, "bai - stub": { "content": [ @@ -112,7 +112,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ [ @@ -130,28 +130,28 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:34.807525" + "timestamp": "2024-09-16T08:21:01.854932651" }, "csi": { "content": [ "test.paired_end.sorted.bam.csi", [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:52:55.688799" + "timestamp": "2024-09-16T08:20:51.485364222" }, "crai": { "content": [ @@ -172,7 +172,7 @@ ] ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -190,15 +190,15 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:17.609533" + "timestamp": "2024-09-16T08:20:40.518873972" }, "bai": { "content": [ @@ -219,7 +219,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ [ @@ -237,14 +237,14 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:04.16585" + "timestamp": "2024-09-16T08:20:21.184050361" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/merge/environment.yml b/modules/nf-core/samtools/merge/environment.yml index 0800e05e..62054fc9 100644 --- a/modules/nf-core/samtools/merge/environment.yml +++ b/modules/nf-core/samtools/merge/environment.yml @@ -1,10 +1,8 @@ -name: samtools_merge - +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults - dependencies: - - bioconda::htslib=1.20 - - bioconda::samtools=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf index c60147ed..b08fc5f6 100644 --- a/modules/nf-core/samtools/merge/main.nf +++ b/modules/nf-core/samtools/merge/main.nf @@ -4,21 +4,21 @@ process SAMTOOLS_MERGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: - tuple val(meta), path(input_files, stageAs: "?/*") + tuple val(meta), path(input_files) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - val(index_type) - + output: - tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam - tuple val(meta), path("${prefix}.cram") , optional:true, emit: cram - tuple val(meta), path("*.${index_type}"), optional:true, emit: index - tuple val(meta), path("*.crai") , optional:true, emit: crai - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam + tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram + tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.crai") , optional:true, emit: crai + path "versions.yml" , emit: versions + when: task.ext.when == null || task.ext.when @@ -27,6 +27,7 @@ process SAMTOOLS_MERGE { def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() + def input = (input_files.collect().size() > 1) ? input_files.sort { it.name } : input_files def reference = fasta ? "--reference ${fasta}" : "" """ samtools \\ @@ -34,8 +35,8 @@ process SAMTOOLS_MERGE { --threads ${task.cpus-1} \\ $args \\ ${reference} \\ - ${prefix}.${file_type}##idx##${prefix}.${file_type}.${index_type} \\ - $input_files + ${prefix}.${file_type}##idx##${prefix}.${file_type}.bai \\ + $input cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -47,9 +48,10 @@ process SAMTOOLS_MERGE { def args = task.ext.args ?: '' prefix = task.ext.suffix ? "${meta.id}${task.ext.suffix}" : "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() - def index = args.contains("--write-index") ? "touch ${prefix}.${file_type}.${index_type}" : "" + def index_type = "bai" + def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : "" """ - touch ${prefix}.${file_type}.${index_type} + touch ${prefix}.${file_type} ${index} cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/samtools/merge/meta.yml b/modules/nf-core/samtools/merge/meta.yml index 2e8f3dbb..235aa219 100644 --- a/modules/nf-core/samtools/merge/meta.yml +++ b/modules/nf-core/samtools/merge/meta.yml @@ -15,60 +15,81 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_files: - type: file - description: BAM/CRAM file - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Index of the reference file the CRAM was created with (optional) - pattern: "*.fai" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_files: + type: file + description: BAM/CRAM file + pattern: "*.{bam,cram,sam}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference file the CRAM was created with (optional) + pattern: "*.{fasta,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of the reference file the CRAM was created with (optional) + pattern: "*.fai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.bam: + type: file + description: BAM file + pattern: "*.{bam}" - cram: - type: file - description: CRAM file - pattern: "*.{cram}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.cram: + type: file + description: CRAM file + pattern: "*.{cram}" - csi: - type: file - description: BAM index file (optional) - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: BAM index file (optional) + pattern: "*.csi" - crai: - type: file - description: CRAM index file (optional) - pattern: "*.crai" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: CRAM index file (optional) + pattern: "*.crai" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@yuukiiwa " diff --git a/modules/nf-core/samtools/merge/samtools-merge.diff b/modules/nf-core/samtools/merge/samtools-merge.diff index d252e1bd..e4e6434d 100644 --- a/modules/nf-core/samtools/merge/samtools-merge.diff +++ b/modules/nf-core/samtools/merge/samtools-merge.diff @@ -1,64 +1,57 @@ Changes in module 'nf-core/samtools/merge' +'modules/nf-core/samtools/merge/meta.yml' is unchanged +Changes in 'samtools/merge/main.nf': --- modules/nf-core/samtools/merge/main.nf +++ modules/nf-core/samtools/merge/main.nf -@@ -11,14 +11,14 @@ - tuple val(meta), path(input_files, stageAs: "?/*") +@@ -8,14 +8,14 @@ + 'biocontainers/samtools:1.21--h50ea8bc_0' }" + + input: +- tuple val(meta), path(input_files, stageAs: "?/*") ++ tuple val(meta), path(input_files) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) -- -+ val(index_type) -+ + output: -- tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam -- tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram + tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam + tuple val(meta), path("${prefix}.cram"), optional:true, emit: cram - tuple val(meta), path("*.csi") , optional:true, emit: csi -- tuple val(meta), path("*.crai") , optional:true, emit: crai -- path "versions.yml" , emit: versions -- -+ tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam -+ tuple val(meta), path("${prefix}.cram") , optional:true, emit: cram -+ tuple val(meta), path("*.${index_type}"), optional:true, emit: index -+ tuple val(meta), path("*.crai") , optional:true, emit: crai -+ path "versions.yml" , emit: versions ++ tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.crai") , optional:true, emit: crai + path "versions.yml" , emit: versions - when: - task.ext.when == null || task.ext.when -@@ -34,7 +34,7 @@ +@@ -27,6 +27,7 @@ + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() ++ def input = (input_files.collect().size() > 1) ? input_files.sort { it.name } : input_files + def reference = fasta ? "--reference ${fasta}" : "" + """ + samtools \\ +@@ -34,8 +35,8 @@ --threads ${task.cpus-1} \\ $args \\ ${reference} \\ - ${prefix}.${file_type} \\ -+ ${prefix}.${file_type}##idx##${prefix}.${file_type}.${index_type} \\ - $input_files +- $input_files ++ ${prefix}.${file_type}##idx##${prefix}.${file_type}.bai \\ ++ $input cat <<-END_VERSIONS > versions.yml -@@ -47,10 +47,9 @@ + "${task.process}": +@@ -47,7 +48,7 @@ def args = task.ext.args ?: '' prefix = task.ext.suffix ? "${meta.id}${task.ext.suffix}" : "${meta.id}" def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() - def index_type = file_type == "bam" ? "csi" : "crai" -- def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : "" -+ def index = args.contains("--write-index") ? "touch ${prefix}.${file_type}.${index_type}" : "" ++ def index_type = "bai" + def index = args.contains("--write-index") ? "touch ${prefix}.${index_type}" : "" """ -- touch ${prefix}.${file_type} -+ touch ${prefix}.${file_type}.${index_type} - ${index} - - cat <<-END_VERSIONS > versions.yml - ---- modules/nf-core/samtools/merge/environment.yml -+++ modules/nf-core/samtools/merge/environment.yml -@@ -1,8 +1,10 @@ - name: samtools_merge -+ - channels: - - conda-forge - - bioconda - - defaults -+ - dependencies: -+ - bioconda::htslib=1.20 - - bioconda::samtools=1.20 -- - bioconda::htslib=1.20 + touch ${prefix}.${file_type} +'modules/nf-core/samtools/merge/environment.yml' is unchanged +'modules/nf-core/samtools/merge/tests/tags.yml' is unchanged +'modules/nf-core/samtools/merge/tests/index.config' is unchanged +'modules/nf-core/samtools/merge/tests/main.nf.test.snap' is unchanged +'modules/nf-core/samtools/merge/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test.snap b/modules/nf-core/samtools/merge/tests/main.nf.test.snap index 17bc846f..0a41e01a 100644 --- a/modules/nf-core/samtools/merge/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/merge/tests/main.nf.test.snap @@ -80,14 +80,14 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:35.851936597" + "timestamp": "2024-09-16T09:16:30.476887194" }, "bams_csi": { "content": [ @@ -124,14 +124,14 @@ "bams_stub_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:41.405707643" + "timestamp": "2024-09-16T09:16:52.203823961" }, "bam_cram": { "content": [ @@ -158,14 +158,14 @@ "bams_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:51.695689923" + "timestamp": "2024-09-16T08:29:57.524363148" }, "crams_bam": { "content": [ @@ -182,14 +182,14 @@ "crams_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:30.185392319" + "timestamp": "2024-09-16T09:16:06.977096207" }, "bam_csi": { "content": [ diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index 36a12eab..62054fc9 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -1,8 +1,8 @@ -name: samtools_sort +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 8e019099..caf3c61a 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,19 +4,19 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta) , path(bam) tuple val(meta2), path(fasta) output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - tuple val(meta), path("*.crai"), emit: crai, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -32,7 +32,6 @@ process SAMTOOLS_SORT { """ samtools cat \\ - --threads $task.cpus \\ ${bam} \\ | \\ samtools sort \\ diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 341a7d0e..a9dbec5a 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -15,52 +15,73 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file(s) - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta,fna}" - optional: true + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file(s) + pattern: "*.{bam,cram,sam}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta,fna}" + optional: true output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: Sorted BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: Sorted BAM file + pattern: "*.{bam}" - cram: - type: file - description: Sorted CRAM file - pattern: "*.{cram}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.cram": + type: file + description: Sorted CRAM file + pattern: "*.{cram}" - crai: - type: file - description: CRAM index file (optional) - pattern: "*.crai" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: CRAM index file (optional) + pattern: "*.crai" - csi: - type: file - description: BAM index file (optional) - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: BAM index file (optional) + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/sort/samtools-sort.diff b/modules/nf-core/samtools/sort/samtools-sort.diff new file mode 100644 index 00000000..1a6d1649 --- /dev/null +++ b/modules/nf-core/samtools/sort/samtools-sort.diff @@ -0,0 +1,22 @@ +Changes in module 'nf-core/samtools/sort' +'modules/nf-core/samtools/sort/meta.yml' is unchanged +'modules/nf-core/samtools/sort/main.nf' is unchanged +Changes in 'samtools/sort/environment.yml': +--- modules/nf-core/samtools/sort/environment.yml ++++ modules/nf-core/samtools/sort/environment.yml +@@ -1,6 +1,8 @@ ++name: samtools_sort + channels: + - conda-forge + - bioconda ++ - defaults + dependencies: + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 + +'modules/nf-core/samtools/sort/tests/tags.yml' is unchanged +'modules/nf-core/samtools/sort/tests/nextflow_cram.config' is unchanged +'modules/nf-core/samtools/sort/tests/main.nf.test.snap' is unchanged +'modules/nf-core/samtools/sort/tests/nextflow.config' is unchanged +'modules/nf-core/samtools/sort/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index c2ea9c72..b05e6691 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -39,6 +39,40 @@ nextflow_process { } } + test("multiple bam") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match()} + ) + } + } + test("cram") { config "./nextflow_cram.config" @@ -98,6 +132,36 @@ nextflow_process { } } + test("multiple bam - stub") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("cram - stub") { options "-stub" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index da38d5d1..469891fe 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -20,14 +20,14 @@ ] ], [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T17:19:37.196205" + "timestamp": "2024-09-16T08:49:58.207549273" }, "bam - stub": { "content": [ @@ -57,7 +57,7 @@ ] ], "4": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ], "bam": [ [ @@ -84,15 +84,15 @@ ] ], "versions": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T15:54:46.580756" + "timestamp": "2024-09-16T08:50:08.630951018" }, "cram - stub": { "content": [ @@ -122,7 +122,7 @@ ], "4": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ], "bam": [ @@ -149,15 +149,110 @@ ], "versions": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T15:57:30.505698" + "timestamp": "2024-09-16T08:50:19.061912443" + }, + "multiple bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi" + ] + ], + [ + "versions.yml:md5,2659b187d681241451539d4c53500b9f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.0" + }, + "timestamp": "2024-10-08T11:59:55.479443" + }, + "multiple bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" + ] + ], + "4": [ + "versions.yml:md5,2659b187d681241451539d4c53500b9f" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,8a16ba90c7d294cbb4c33ac0f7127a12" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d185916eaff9afeb4d0aeab3310371f9" + ] + ], + "versions": [ + "versions.yml:md5,2659b187d681241451539d4c53500b9f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.0" + }, + "timestamp": "2024-10-08T11:36:13.781404" }, "bam": { "content": [ @@ -167,7 +262,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" + "test.sorted.bam:md5,34aa85e86abefe637f7a4a9887f016fc" ] ], [ @@ -180,13 +275,13 @@ ] ], [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + "versions.yml:md5,2659b187d681241451539d4c53500b9f" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.09.0" }, - "timestamp": "2024-07-22T15:54:25.872954" + "timestamp": "2024-10-08T11:59:46.372244" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/view/environment.yml b/modules/nf-core/samtools/view/environment.yml index 150c3777..62054fc9 100644 --- a/modules/nf-core/samtools/view/environment.yml +++ b/modules/nf-core/samtools/view/environment.yml @@ -1,8 +1,8 @@ -name: samtools_view +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf index dc611448..37e05cec 100644 --- a/modules/nf-core/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_VIEW { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input), path(index) diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml index 27be60d0..caa7b015 100644 --- a/modules/nf-core/samtools/view/meta.yml +++ b/modules/nf-core/samtools/view/meta.yml @@ -15,77 +15,120 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - index: - type: file - description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional) - pattern: "*.{.bai,.csi,.crai}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" - - qname: - type: file - description: Optional file with read names to output only select alignments - pattern: "*.{txt,list}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - index: + type: file + description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional) + pattern: "*.{.bai,.csi,.crai}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: Reference file the CRAM was created with (optional) + pattern: "*.{fasta,fa}" + - - qname: + type: file + description: Optional file with read names to output only select alignments + pattern: "*.{txt,list}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: optional filtered/converted BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.bam: + type: file + description: optional filtered/converted BAM file + pattern: "*.{bam}" - cram: - type: file - description: optional filtered/converted CRAM file - pattern: "*.{cram}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.cram: + type: file + description: optional filtered/converted CRAM file + pattern: "*.{cram}" - sam: - type: file - description: optional filtered/converted SAM file - pattern: "*.{sam}" - # bai, csi, and crai are created with `--write-index` + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.sam: + type: file + description: optional filtered/converted SAM file + pattern: "*.{sam}" - bai: - type: file - description: optional BAM file index - pattern: "*.{bai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${file_type}.bai: + type: file + description: optional BAM file index + pattern: "*.{bai}" - csi: - type: file - description: optional tabix BAM file index - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${file_type}.csi: + type: file + description: optional tabix BAM file index + pattern: "*.{csi}" - crai: - type: file - description: optional CRAM file index - pattern: "*.{crai}" - # unselected and unselected_index are created when passing a qname + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${file_type}.crai: + type: file + description: optional CRAM file index + pattern: "*.{crai}" - unselected: - type: file - description: optional file with unselected alignments - pattern: "*.unselected.{bam,cram,sam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.unselected.${file_type}: + type: file + description: optional file with unselected alignments + pattern: "*.unselected.{bam,cram,sam}" - unselected_index: - type: file - description: index for the "unselected" file - pattern: "*.unselected.{bai,csi,crai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.unselected.${file_type}.{bai,csi,crsi}: + type: file + description: index for the "unselected" file + pattern: "*.unselected.{bai,csi,crai}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@joseespinosa" diff --git a/modules/nf-core/samtools/view/tests/main.nf.test.snap b/modules/nf-core/samtools/view/tests/main.nf.test.snap index 6bcce9fe..63849b03 100644 --- a/modules/nf-core/samtools/view/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/view/tests/main.nf.test.snap @@ -56,14 +56,14 @@ "bam_stub_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:20.390692583" + "timestamp": "2024-09-16T09:26:24.461775464" }, "cram_to_bam_index_cram": { "content": [ @@ -169,6 +169,16 @@ }, "timestamp": "2024-02-12T19:37:56.490286" }, + "cram_to_bam_index_qname_unselected_csi": { + "content": [ + "test.unselected.bam.csi" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:38:23.328458" + }, "bam_csi": { "content": [ [ @@ -208,14 +218,14 @@ "cram_to_bam_index_qname_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:15.007493874" + "timestamp": "2024-09-16T09:25:51.953436682" }, "cram_to_bam_bam": { "content": [ @@ -240,14 +250,14 @@ "cram_to_bam_index_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:09.472376824" + "timestamp": "2024-09-16T09:25:14.475388399" }, "cram_to_bam_bai": { "content": [ @@ -264,14 +274,14 @@ "cram_to_bam_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:43:04.080050906" + "timestamp": "2024-09-16T09:24:49.673441798" }, "cram_bam": { "content": [ @@ -378,14 +388,14 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:52.978954857" + "timestamp": "2024-09-16T09:23:27.151650338" }, "cram_to_bam_index_qname_cram": { "content": [ @@ -450,14 +460,24 @@ "cram_versions": { "content": [ [ - "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838" + "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07" ] ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-16T09:24:12.95416913" + }, + "cram_to_bam_index_qname_unselected": { + "content": [ + "test.unselected.bam" + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "23.04.3" }, - "timestamp": "2024-05-28T15:42:58.400776109" + "timestamp": "2024-02-12T19:38:23.322874" }, "bam_sam": { "content": [ diff --git a/modules/nf-core/severus/environment.yml b/modules/nf-core/severus/environment.yml new file mode 100644 index 00000000..49e4fbc2 --- /dev/null +++ b/modules/nf-core/severus/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::severus=1.1" diff --git a/modules/nf-core/severus/main.nf b/modules/nf-core/severus/main.nf new file mode 100644 index 00000000..e0cc2736 --- /dev/null +++ b/modules/nf-core/severus/main.nf @@ -0,0 +1,89 @@ +process SEVERUS { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/severus:1.1--pyhdfd78af_0': + 'biocontainers/severus:1.1--pyhdfd78af_0' }" + + input: + tuple val(meta), path(target_input), path(target_index), path(control_input), path(control_index), path(vcf) + tuple val(meta2), path(bed) + + output: + tuple val(meta), path("${prefix}/severus.log") , emit: log + tuple val(meta), path("${prefix}/read_qual.txt") , emit: read_qual + tuple val(meta), path("${prefix}/breakpoints_double.csv") , emit: breakpoints_double + tuple val(meta), path("${prefix}/read_alignments") , emit: read_alignments , optional: true + tuple val(meta), path("${prefix}/read_ids.csv") , emit: read_ids , optional: true + tuple val(meta), path("${prefix}/severus_collaped_dup.bed") , emit: collapsed_dup , optional: true + tuple val(meta), path("${prefix}/severus_LOH.bed") , emit: loh , optional: true + tuple val(meta), path("${prefix}/all_SVs/severus_all.vcf") , emit: all_vcf , optional: true + tuple val(meta), path("${prefix}/all_SVs/breakpoints_clusters_list.tsv") , emit: all_breakpoints_clusters_list , optional: true + tuple val(meta), path("${prefix}/all_SVs/breakpoints_clusters.tsv") , emit: all_breakpoints_clusters , optional: true + tuple val(meta), path("${prefix}/all_SVs/plots/severus_*.html") , emit: all_plots , optional: true + tuple val(meta), path("${prefix}/somatic_SVs/severus_all.vcf") , emit: somatic_vcf , optional: true + tuple val(meta), path("${prefix}/somatic_SVs/breakpoints_clusters_list.tsv"), emit: somatic_breakpoints_clusters_list, optional: true + tuple val(meta), path("${prefix}/somatic_SVs/breakpoints_clusters.tsv") , emit: somatic_breakpoints_clusters , optional: true + tuple val(meta), path("${prefix}/somatic_SVs/plots/severus_*.html") , emit: somatic_plots , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + def control = control_input ? "--control-bam ${control_input}" : "" + def vntr_bed = bed ? "--vntr-bed ${bed}" : "" + def phasing_vcf = vcf ? "--phasing-vcf ${vcf}" : "" + """ + severus \\ + $args \\ + --threads $task.cpus \\ + --target-bam $target_input \\ + $vntr_bed \\ + $control \\ + $phasing_vcf \\ + --out-dir ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + severus: \$(severus --version) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + """ + mkdir -p ${prefix}/all_SVs/plots + mkdir -p ${prefix}/somatic_SVs/plots + + touch ${prefix}/severus_collaped_dup.bed + touch ${prefix}/severus.log + touch ${prefix}/severus_LOH.bed + touch ${prefix}/read_alignments + touch ${prefix}/read_ids.csv + touch ${prefix}/read_qual.txt + touch ${prefix}/breakpoints_double.csv + touch ${prefix}/all_SVs/severus_all.vcf + touch ${prefix}/all_SVs/breakpoints_clusters_list.tsv + touch ${prefix}/all_SVs/breakpoints_clusters.tsv + touch ${prefix}/all_SVs/plots/severus_0.html + touch ${prefix}/all_SVs/plots/severus_1.html + touch ${prefix}/somatic_SVs/severus_somatic.vcf + touch ${prefix}/somatic_SVs/breakpoints_clusters_list.tsv + touch ${prefix}/somatic_SVs/breakpoints_clusters.tsv + touch ${prefix}/somatic_SVs/plots/severus_0.html + touch ${prefix}/somatic_SVs/plots/severus_1.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + severus: \$(severus --version) + END_VERSIONS + """ +} diff --git a/modules/nf-core/severus/meta.yml b/modules/nf-core/severus/meta.yml new file mode 100644 index 00000000..8ada3548 --- /dev/null +++ b/modules/nf-core/severus/meta.yml @@ -0,0 +1,217 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "severus" +description: Severus is a somatic structural variation (SV) caller for long reads + (both PacBio and ONT) +keywords: + - structural + - variation + - somatic + - germline + - long-read +tools: + - "severus": + description: "A tool for somatic structural variant calling using long reads" + homepage: "https://github.com/KolmogorovLab/Severus" + documentation: "https://github.com/KolmogorovLab/Severus" + tool_dev_url: "https://github.com/KolmogorovLab/Severus" + doi: "10.1101/2024.03.22.24304756" + licence: ["BSD-3-clause"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - target_input: + type: file + description: path to one or multiple target BAM/CRAM files (e.g. tumor, must + be indexed) + pattern: "*.{bam,cram}" + - target_index: + type: file + description: path to one or multiple target BAM/CRAM index files + pattern: "*.{bai,crai,csi}" + - control_input: + type: file + description: path to the control BAM/CRAM file (e.g. normal, must be indexed) + pattern: "*.{bam,cram}" + - control_index: + type: file + description: path to the control BAM/CRAM file index + pattern: "*.{bai,crai,csi}" + - vcf: + type: file + description: path to vcf file used for phasing (if using haplotype specific + SV calling + pattern: "*.{vcf,vcf.gz}" + - - meta2: + type: map + description: | + Groovy Map containing tandem repeat regions information + e.g. `[ id:'hg38']` + - bed: + type: file + description: path to bed file for tandem repeat regions (must be ordered) + pattern: "*.bed" +output: + - log: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/severus.log: + type: file + description: Severus log file + pattern: "${prefix}/severus.log" + - read_qual: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/read_qual.txt: + type: file + description: Severus read_qual file + pattern: "${prefix}/read_qual.txt" + - breakpoints_double: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/breakpoints_double.csv: + type: file + description: Severus breakpoints_double file + pattern: "${prefix}/breakpoints_double.csv" + - read_alignments: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/read_alignments: + type: file + description: read alignments file + pattern: "${prefix}/read_alignments" + - read_ids: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/read_ids.csv: + type: file + description: read IDs for support reads + pattern: "${prefix}/read_ids" + - collapsed_dup: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/severus_collaped_dup.bed: + type: file + description: a bed file with identified collapsed duplication regions + pattern: "${prefix}/severus_collaped_dup" + - loh: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/severus_LOH.bed: + type: file + description: a bed file with predicted LOH regions + pattern: "${prefix}/severus_LOH.bed" + - all_vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/severus_all.vcf: + type: file + description: VCF file with all SVs (somatic + germline) + pattern: "${prefix}/all_SVs/severus_all.vcf" + - all_breakpoints_clusters_list: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/breakpoints_clusters_list.tsv: + type: file + description: Severus breakpoints clusters list file + pattern: "${prefix}/all_SVs/breakpoints_clusters_list.tsv" + - all_breakpoints_clusters: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/breakpoints_clusters.tsv: + type: file + description: Severus breakpoints clusters file + pattern: "${prefix}/all_SVs/breakpoints_clusters.tsv" + - all_plots: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/all_SVs/plots/severus_*.html: + type: file + description: Severus plots + pattern: "${prefix}/all_SVs/plots/*.html" + - somatic_vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/severus_all.vcf: + type: file + description: VCF file with somatic SVs + pattern: "${prefix}/somatic_SVs/severus_all.vcf" + - somatic_breakpoints_clusters_list: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/breakpoints_clusters_list.tsv: + type: file + description: Severus somatic breakpoints clusters list file + pattern: "${prefix}/somatic_SVs/breakpoints_clusters_list.tsv" + - somatic_breakpoints_clusters: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/breakpoints_clusters.tsv: + type: file + description: Severus somatic breakpoints clusters file + pattern: "${prefix}/somatic_SVs/breakpoints_clusters.tsv" + - somatic_plots: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}/somatic_SVs/plots/severus_*.html: + type: file + description: Severus somatic plots + pattern: "${prefix}/somatic_SVs/plots/*.html" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/severus/tests/main.nf.test b/modules/nf-core/severus/tests/main.nf.test new file mode 100644 index 00000000..ab700a4c --- /dev/null +++ b/modules/nf-core/severus/tests/main.nf.test @@ -0,0 +1,208 @@ +nextflow_process { + + name "Test Process SEVERUS" + script "../main.nf" + process "SEVERUS" + + tag "modules" + tag "modules_nfcore" + tag "severus" + + test("homo_sapiens - [ bam, bai, [], [], [] ], [[],[]]") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + [], + [], + [] + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, bam, bai, [] ], [[],[]]") { + + config "./nextflow.config" + + when { + process { + + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + [] + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.somatic_vcf, + process.out.somatic_breakpoints_clusters_list, + process.out.somatic_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, bam, bai, vcf ], [[],[]]") { + + config "./nextflow.config" + + when { + process { + + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.somatic_vcf, + process.out.somatic_breakpoints_clusters_list, + process.out.somatic_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, bam, bai, vcf ], [ bed ]") { + + config "./nextflow.config" + + when { + process { + + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test2.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + ] + input[1] = [ + [ id:'bed'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.blacklist_intervals.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log.get(0).get(1)).readLines().last().contains("Writing VCF"), + process.out.read_qual, + process.out.breakpoints_double, + file(process.out.all_vcf.get(0).get(1)).readLines()[0..2], // Line 3 contains date + file(process.out.all_vcf.get(0).get(1)).readLines()[4..39], + process.out.all_breakpoints_clusters_list, + process.out.all_breakpoints_clusters, + process.out.somatic_vcf, + process.out.somatic_breakpoints_clusters_list, + process.out.somatic_breakpoints_clusters, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - [ bam, bai, [], [], [] ], [[],[]] - stub") { + + config "./nextflow.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true), + [], + [], + [] + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/severus/tests/main.nf.test.snap b/modules/nf-core/severus/tests/main.nf.test.snap new file mode 100644 index 00000000..a5c527eb --- /dev/null +++ b/modules/nf-core/severus/tests/main.nf.test.snap @@ -0,0 +1,600 @@ +{ + "homo_sapiens - [ bam, bai, [], [], [] ], [[],[]]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,3a99166c04453f184c43c348f530301a" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,68f6ea1191c90253e56f30023a1fbdbf" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17" + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:39:57.407065744" + }, + "homo_sapiens - [ bam, bai, bam, bai, vcf ], [[],[]]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,90b9e913572e1452f8ec1ad9fdc063f5" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,6e235b941ded1fbe04edf0c081b531a0" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --control-bam test.sorted.phased.bam --phasing-vcf test.genome.vcf --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted\ttest.sorted.phased", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17\t0/1:93:0.50:0.00,0.60,0.50:13:13" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:40:30.613156728" + }, + "homo_sapiens - [ bam, bai, [], [], [] ], [[],[]] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "severus.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "11": [ + + ], + "12": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "15": [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ], + "2": [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "read_alignments:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "read_ids.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "severus_collaped_dup.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "severus_LOH.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "severus_all.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "all_breakpoints_clusters": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "all_breakpoints_clusters_list": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "all_plots": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "all_vcf": [ + [ + { + "id": "test" + }, + "severus_all.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "breakpoints_double": [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "collapsed_dup": [ + [ + { + "id": "test" + }, + "severus_collaped_dup.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "severus.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "loh": [ + [ + { + "id": "test" + }, + "severus_LOH.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_alignments": [ + [ + { + "id": "test" + }, + "read_alignments:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_ids": [ + [ + { + "id": "test" + }, + "read_ids.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_qual": [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "somatic_breakpoints_clusters": [ + [ + { + "id": "test" + }, + "breakpoints_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "somatic_breakpoints_clusters_list": [ + [ + { + "id": "test" + }, + "breakpoints_clusters_list.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "somatic_plots": [ + [ + { + "id": "test" + }, + [ + "severus_0.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "severus_1.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "somatic_vcf": [ + + ], + "versions": [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-10T12:00:07.296601854" + }, + "homo_sapiens - [ bam, bai, bam, bai, [] ], [[],[]]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,90b9e913572e1452f8ec1ad9fdc063f5" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,e2b55013bcb77a0b738cdba485520f68" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --control-bam test.sorted.phased.bam --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted\ttest.sorted.phased", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17\t0/1:93:0.50:0.00,0.60,0.50:13:13" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:40:15.084382239" + }, + "homo_sapiens - [ bam, bai, bam, bai, vcf ], [ bed ]": { + "content": [ + false, + [ + [ + { + "id": "test" + }, + "read_qual.txt:md5,d2355003691b9a3a2563f40533ec562f" + ] + ], + [ + [ + { + "id": "test" + }, + "breakpoints_double.csv:md5,6e235b941ded1fbe04edf0c081b531a0" + ] + ], + [ + "##fileformat=VCFv4.2", + "##source=Severus v1.1", + "##CommandLine= --min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1 --threads 2 --target-bam test2.sorted.bam --vntr-bed genome.blacklist_intervals.bed --control-bam test.sorted.phased.bam --phasing-vcf test.genome.vcf --out-dir test" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest2.sorted\ttest.sorted.phased", + "chr22\t16879\tseverus_DEL0\tN\t\t60.0\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=13;END=16892;STRANDS=+-;MAPQ=60.0\tGT:GQ:VAF:hVAF:DR:DV\t0/1:232:0.38:0.38,0.00,0.00:28:17\t0/1:93:0.50:0.00,0.60,0.50:13:13" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,99a20821f27fa27a3ed91d9c3d424c84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T09:47:36.803934533" + } +} \ No newline at end of file diff --git a/modules/nf-core/severus/tests/nextflow.config b/modules/nf-core/severus/tests/nextflow.config new file mode 100644 index 00000000..a1445109 --- /dev/null +++ b/modules/nf-core/severus/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'SEVERUS' { + ext.args = '--min-sv-size 1 --min-mapq 0 --min-support 1 --TIN-ratio 1' + } +} diff --git a/modules/nf-core/severus/tests/tags.yml b/modules/nf-core/severus/tests/tags.yml new file mode 100644 index 00000000..d7e36658 --- /dev/null +++ b/modules/nf-core/severus/tests/tags.yml @@ -0,0 +1,2 @@ +severus: + - "modules/nf-core/severus/**" diff --git a/modules/nf-core/sniffles/environment.yml b/modules/nf-core/sniffles/environment.yml index db8f3f69..b3d97d0e 100644 --- a/modules/nf-core/sniffles/environment.yml +++ b/modules/nf-core/sniffles/environment.yml @@ -1,7 +1,5 @@ -name: sniffles channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::sniffles=2.0.7 + - bioconda::sniffles=2.4 diff --git a/modules/nf-core/sniffles/main.nf b/modules/nf-core/sniffles/main.nf index 41bc76c1..a85bd216 100644 --- a/modules/nf-core/sniffles/main.nf +++ b/modules/nf-core/sniffles/main.nf @@ -50,7 +50,7 @@ process SNIFFLES { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.vcf.gz + echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.snf cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/sniffles/meta.yml b/modules/nf-core/sniffles/meta.yml index c8b2da7d..b52d45a3 100644 --- a/modules/nf-core/sniffles/meta.yml +++ b/modules/nf-core/sniffles/meta.yml @@ -11,59 +11,88 @@ tools: documentation: https://github.com/fritzsedlazeck/Sniffles#readme tool_dev_url: https://github.com/fritzsedlazeck/Sniffles licence: ["MIT"] + identifier: biotools:sniffles input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - input: - type: file - description: BAM or SNF file - pattern: "*.{bam, snf}" - - bai: - type: file - description: Index of BAM file - pattern: "*.bai" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'fasta' ] - - fasta: - type: file - description: | - Reference database in FASTA format - - meta3: - type: map - description: | - Groovy Map containing tandem repeat file information - e.g. [ id:'tandem_repeats' ] - - tandem_file: - type: file - description: | - Tandem repeats file in BED format + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - input: + type: file + description: A single .bam/.cram file - OR - one or more .snf files - OR - a + single .tsv file containing a list of .snf files and optional sample ids as + input + pattern: "*.{bam,cram,snf,tsv}" + - index: + type: file + description: Index of BAM/CAM file + pattern: "*.{bai,crai}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'fasta' ] + - fasta: + type: file + description: | + Reference database in FASTA format + - - meta3: + type: map + description: | + Groovy Map containing tandem repeat information + e.g. [ id:'hg38' ] + - tandem_file: + type: file + description: Tandem repeat file + pattern: "*.bed" + - - vcf_output: + type: file + description: VCF output file + pattern: "*.vcf.gz" + - - snf_output: + type: file + description: SNF output file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - vcf: - type: file - description: Compressed VCF file - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.vcf.gz": + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" + - tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.vcf.gz.tbi": + type: file + description: Compressed VCF file index + pattern: "*.tbi" - snf: - type: file - description: SNF file - pattern: "*.snf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.snf": + type: file + description: SNF file + pattern: "*.snf" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@christopher-hakkaart" - "@yuukiiwa" maintainers: - "@christopher-hakkaart" - "@yuukiiwa" + - "@fellen31" diff --git a/modules/nf-core/sniffles/sniffles.diff b/modules/nf-core/sniffles/sniffles.diff index 9b748dd3..30d9c425 100644 --- a/modules/nf-core/sniffles/sniffles.diff +++ b/modules/nf-core/sniffles/sniffles.diff @@ -1,110 +1,67 @@ Changes in module 'nf-core/sniffles' ---- modules/nf-core/sniffles/meta.yml -+++ modules/nf-core/sniffles/meta.yml -@@ -17,10 +17,10 @@ - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] -- - bam: -+ - input: - type: file -- description: BAM file -- pattern: "*.bam" -+ description: BAM or SNF file -+ pattern: "*.{bam, snf}" - - bai: - type: file - description: Index of BAM file -@@ -34,6 +34,15 @@ - type: file - description: | - Reference database in FASTA format -+ - meta3: -+ type: map -+ description: | -+ Groovy Map containing tandem repeat file information -+ e.g. [ id:'tandem_repeats' ] -+ - tandem_file: -+ type: file -+ description: | -+ Tandem repeats file in BED format - output: - - meta: - type: map -@@ -46,8 +55,8 @@ - pattern: "*.vcf.gz" - - snf: - type: file -- description: Compressed SNF file -- pattern: "*.snf.gz" -+ description: SNF file -+ pattern: "*.snf" - - versions: - type: file - description: File containing software versions - +'modules/nf-core/sniffles/meta.yml' is unchanged +Changes in 'sniffles/main.nf': --- modules/nf-core/sniffles/main.nf +++ modules/nf-core/sniffles/main.nf -@@ -8,14 +8,17 @@ - 'biocontainers/sniffles:2.0.7--pyhdfd78af_0' }" +@@ -4,16 +4,15 @@ + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/sniffles:2.4--pyhdfd78af_0' : +- 'biocontainers/sniffles:2.4--pyhdfd78af_0' }" ++ 'https://depot.galaxyproject.org/singularity/sniffles:2.0.7--pyhdfd78af_0' : ++ 'biocontainers/sniffles:2.0.7--pyhdfd78af_0' }" input: -- tuple val(meta), path(bam), path(bai) +- tuple val(meta), path(input), path(index) + tuple val(meta), path(input), path(bai) tuple val(meta2), path(fasta) + tuple val(meta3), path(tandem_file) + val(vcf_output) + val(snf_output) - -+ tuple val(meta3), path(tandem_file) -+ val(vcf_output) -+ val(snf_output) output: -- tuple val(meta), path("*.vcf"), emit: vcf -- tuple val(meta), path("*.snf"), emit: snf -- path "versions.yml" , emit: versions -+ tuple val(meta), path("*.vcf.gz") , emit: vcf, optional: true -+ tuple val(meta), path("*.vcf.gz.tbi"), emit: tbi, optional: true -+ tuple val(meta), path("*.snf") , emit: snf, optional: true -+ path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when -@@ -23,14 +26,33 @@ - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" -+ def reference = fasta ? "--reference ${fasta}" : "" -+ def tandem_repeats = tandem_file ? "--tandem-repeats ${tandem_file}" : '' -+ def vcf = vcf_output ? "--vcf ${prefix}.vcf.gz": '' -+ def snf = snf_output ? "--snf ${prefix}.snf": '' + tuple val(meta), path("*.vcf.gz") , emit: vcf, optional: true +@@ -31,7 +30,7 @@ + def tandem_repeats = tandem_file ? "--tandem-repeats ${tandem_file}" : '' + def vcf = vcf_output ? "--vcf ${prefix}.vcf.gz": '' + def snf = snf_output ? "--snf ${prefix}.snf": '' +- + """ sniffles \\ -- --input $bam \\ -- --vcf ${prefix}.vcf \\ -- --snf ${prefix}.snf \\ -- --reference $fasta \\ -+ --input $input \\ -+ $reference \\ - -t $task.cpus \\ -+ $tandem_repeats \\ -+ $vcf \\ -+ $snf \\ + --input $input \\ +@@ -41,21 +40,18 @@ + $vcf \\ + $snf \\ $args +- + -+ cat <<-END_VERSIONS > versions.yml -+ "${task.process}": -+ sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') -+ END_VERSIONS -+ """ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') + END_VERSIONS + """ +- + -+ stub: -+ def prefix = task.ext.prefix ?: "${meta.id}" -+ """ -+ touch ${prefix}.vcf.gz + stub: + def prefix = task.ext.prefix ?: "${meta.id}" +- def vcf = vcf_output ? "echo \"\" | gzip > ${prefix}.vcf.gz; touch ${prefix}.vcf.gz.tbi": '' +- def snf = snf_output ? "touch ${prefix}.snf": '' +- + """ +- ${vcf} +- ${snf} ++ echo "" | gzip > ${prefix}.vcf.gz + touch ${prefix}.snf -+ + cat <<-END_VERSIONS > versions.yml "${task.process}": - sniffles: \$(sniffles --help 2>&1 | grep Version |sed 's/^.*Version //') +'modules/nf-core/sniffles/environment.yml' is unchanged +'modules/nf-core/sniffles/tests/tags.yml' is unchanged +'modules/nf-core/sniffles/tests/main.nf.test.snap' is unchanged +'modules/nf-core/sniffles/tests/nextflow.config' is unchanged +'modules/nf-core/sniffles/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/sniffles/tests/main.nf.test b/modules/nf-core/sniffles/tests/main.nf.test new file mode 100644 index 00000000..9560b02d --- /dev/null +++ b/modules/nf-core/sniffles/tests/main.nf.test @@ -0,0 +1,286 @@ +nextflow_process { + + name "Test Process SNIFFLES" + script "../main.nf" + process "SNIFFLES" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "sniffles" + + test("homo_sapiens - [bam, bai], fasta, [], true, false") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip[0..1], + path(process.out.vcf.get(0).get(1)).linesGzip[4..62], + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], false, true") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.snf.get(0).get(1)).name, + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], true, true") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.snf.get(0).get(1)).name, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip[0..1], + path(process.out.vcf.get(0).get(1)).linesGzip[4..62], + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, bed, true, true") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.snf.get(0).get(1)).name, + file(process.out.tbi.get(0).get(1)).name, + path(process.out.vcf.get(0).get(1)).linesGzip[0..1], + path(process.out.vcf.get(0).get(1)).linesGzip[4..62], + ).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], true, false -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], false, true -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, [], true, true -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[],[]] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [bam, bai], fasta, bed, true, true -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[3] = true + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/sniffles/tests/main.nf.test.snap b/modules/nf-core/sniffles/tests/main.nf.test.snap new file mode 100644 index 00000000..cb690bac --- /dev/null +++ b/modules/nf-core/sniffles/tests/main.nf.test.snap @@ -0,0 +1,481 @@ +{ + "homo_sapiens - [bam, bai], fasta, bed, true, true -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:18:52.803761263" + }, + "homo_sapiens - [bam, bai], fasta, [], true, false": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.vcf.gz.tbi", + [ + "##fileformat=VCFv4.2", + "##source=Sniffles2_2.4" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "chr22\t1\tSniffles2.INS.0S0\tA\tATTAGGCAAAGAGAATATACTCGACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATTACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCTGAAGGCCAGCCCTTTAATTTGGCCACCCCTAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGCAGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATGAGCTTTCAACACCTAGTAGTGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAGAAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAGACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTAAAAAAGCTTGAGGTTTATTACCATATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGTAGGACTAAAGACAATAAAGTGTAACATGTCAACTAATCTTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATGATATGAAAGACTATACTTTCAGGGATCATTTCTATAATTCGTTAAATTATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTGTAGCATATGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCTAAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAGGGTTGCTGTCATAAGAACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTTGGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTATCAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATGGCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTGGCTTGTGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGACCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGTGATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGCTTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATAAGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTAGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGAGGTCAGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGAGGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTTAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAATCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCCAGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATTGTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAACAACATCAAAAAGAAACCTATAGTAATAAAATTGAAACAGAAGGAGGTTTGCAATCAAAATGACTGACTAGGAATGAAATAGGAAAACATAATAATTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCTTCGAGGGGGAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTAAGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCAGTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGTTACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCGCCTCTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAATATTTTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGAGTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATGTGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATTACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGATGGTGTCTGAAGTCTTTACTCAATATTCACATTGGCTGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGGGTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAGAGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGACTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTACAGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAGGCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAATCCTACACTCCAATGTGTGGGAAGTATTCGTGCTATGCTTTTATAACTAAATCGTCTCAGTATTTCTATTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGAATTCTCCTGATCAGGCCAAACCTCAACCAAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCCCTCATTCACCCAACAATTAGCCTCCAGTCCACGGGCTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTTACAATCCTACCTTTTCTACTGCCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGGGGGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCCGAACACCCCATCAACTACCCGGGGCCCATCTACGCCCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTAACAGCACCTTTGGGGCCCCAGGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTGTCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCACCATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGCGGCGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATCTGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAAGATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAAACAACTCAATACACATGAGAAGAGGCTGGCCCATGAGGAAAGGATGGAAACTACTACAACTCTTTTCTGTTGTTTTGTTTTCAATAGTCTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGTAGATTGAAGTCTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGTGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAAGTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGTGTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGGGATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCATTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGGATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCCCCTGAGGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCTGGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGGGAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAATATCTGAGACCTAGCATGCTAGGAGACCTTTATCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTTTTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCA\t44\tCOV_CHANGE_INS\tPRECISE;SVTYPE=INS;SVLEN=7407;END=0;SUPPORT=3;COVERAGE=0,0,0,0,8;STRAND=+-;STDEV_LEN=16.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t./.:0:0:0", + "chr22\t10115\tSniffles2.INS.2S0\tA\tAATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGATATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCTTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACCTCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCATCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGAACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGCACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATGCACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTATAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTTACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTTAGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACATTCATTTGAAAGTTTTCCTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTCACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTCATGTTTTTTCACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAAAGAATGCAAATTTGTAATTTTTATGATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGACTCAATAGGCACTGGAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTTAGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTTCTTTGACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTCCCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACCACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCGCAATCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCACCTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTTTACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTAAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCACAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGACGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACATTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTCAGTCAGGAGGATCACTTAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAATTAGCTGGGTGTGGTGGTAGGCACTTGTAGTCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTGAGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGACTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTCGTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAACGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTTTCTATATTGTTTTGGTCTATTTTTATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGATTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGTGATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCTGGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGATTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTAAAACCCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGGAAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATTGCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAAGAAAAAAGTAATAGACCAATCTTGAATTTATAATTGGAAGTGTTATTTCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAAAAACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGTGAGGGAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGATGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTCACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTGGGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGCCGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCCCTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGAAACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAAAAAAAAGAAAAGAAAGAAAAGCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTGGCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAAAAAAAATCTTTAAAATTAGAGGAGGGAAGCCACTGATCGCACACATCCAGGAAATGCAGCCCCGTGCATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGATCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCCCAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCTTCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTGGGCGGAAGCGCAGGAGCCGGCTGGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAACTGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAGGACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGGACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGGAGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATAAATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTTTTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCATGTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAACATGTGCGTACTGATTCTACATGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCTAATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCTGAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTTTTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGAGGGGTGTGCTGGGTAATCAGGGATGGCACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAGAGTCAGTCTCAGAAGCTTTCCTGGAAGTAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCTGACCACACAAGAAGACCCCTGCCCACAAATGCCTACCACTCCCAGGTCTCCCAGGCTGTTCACCCTCCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACTGCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTACCTTCTTTAACCCAGATAATTGAGAATTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGAAATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACAGAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGGAGTCTCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGAAATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCTGTCCTCCTGCTCTTTGCTCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTTCAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACCTCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCA\t7\tPASS\tPRECISE;SVTYPE=INS;SVLEN=7453;END=10115;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.300;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr22\t10126\tSniffles2.INS.1S0\tA\tACCGCTTTTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGGGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGGCAAGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGAACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAACTCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCATATCTTGCTTGGCCCCAATACAAACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTGATTTCCCCACTGACAAACACCTAAATAATTTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCCCTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCTCTCCTGTCCCCTCGGTCCCAACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCCCAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAAGTACCTCCCTCAACTCTCCACTCCTCCACCCTATAATCCTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACCTGCCCAACAATTTCCTCTTAGAGAAAGTGGCTGGAGCTGAAGGCATAGTCAAGGGACATGTACTTTTTTCTCTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGGAATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCTCTCCCCAATATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCCAGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCAGGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTGTTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTTAGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATGCATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACCCAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCATTTCGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTTCAAAATGCCTAAGCCGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGAAATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGGCACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAAGGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGAAGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGTTTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAACTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACAACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTAACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATCCAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTAATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGTCCATTCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTCTTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTTGCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAGACTCCCTCCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTTCCTTCACTGAACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTGGAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTGGGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGTACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCTTTTTGGAAAGGATGTCAGTAGAGAAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCTAAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTAGATTGTCACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCACTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGCCAGGGAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTATTCAGTTAAAACCTTGCCTGGGGATGTTAGCATTGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGCTTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTGTAGATCTATACCCAGAACCACAGAATATCGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGTGGCAGTGTACCAAGGTTGTGACTAGAACTCCGGTCTTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCTTTACCCTAATCCTTCATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACTAAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGCCTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGTATGTCTTTCCCTATTTGTTGTTTGGACTAAGGGAGCCCCACCCAGTGCTTGTTCAGTAAGTTGTTGAAAGAAATCTGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTCCCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTCTGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGATTTCTTGGATGCAGATTTGTTTGTATATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAATAGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGGAGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTTCTGACCTAAAACTTGACATTTTAATATTTAAGTCGGTAAAGCGCTGATTTAAACTGGATTTTAACTGGATGAAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTACAGCATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCACTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGAGCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAAGTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCAGTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTAC\t9\tPASS\tPRECISE;SVTYPE=INS;SVLEN=5362;END=10126;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.200;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr22\t13000\tSniffles2.INS.3S0\tT\tTGATAATCAAGAGAACGTCTCAGCACCGCGCCTGAGCGCTTAGTAGGTAGTGATCAAGAGAGAAGACCTC\t36\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=69;END=13000;SUPPORT=2;COVERAGE=11,13,13,16,51;STRAND=+-;AF=0.154;STDEV_LEN=6.364;STDEV_POS=37.477;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T13:26:19.039514387" + }, + "homo_sapiens - [bam, bai], fasta, [], false, true -stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:18:29.154473769" + }, + "homo_sapiens - [bam, bai], fasta, bed, true, true": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.snf", + "test.vcf.gz.tbi", + [ + "##fileformat=VCFv4.2", + "##source=Sniffles2_2.4" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "chr22\t1\tSniffles2.INS.0S0\tA\tATTAGGCAAAGAGAATATACTCGACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATTACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCTGAAGGCCAGCCCTTTAATTTGGCCACCCCTAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGCAGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATGAGCTTTCAACACCTAGTAGTGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAGAAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAGACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTAAAAAAGCTTGAGGTTTATTACCATATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGTAGGACTAAAGACAATAAAGTGTAACATGTCAACTAATCTTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATGATATGAAAGACTATACTTTCAGGGATCATTTCTATAATTCGTTAAATTATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTGTAGCATATGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCTAAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAGGGTTGCTGTCATAAGAACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTTGGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTATCAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATGGCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTGGCTTGTGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGACCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGTGATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGCTTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATAAGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTAGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGAGGTCAGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGAGGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTTAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAATCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCCAGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATTGTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAACAACATCAAAAAGAAACCTATAGTAATAAAATTGAAACAGAAGGAGGTTTGCAATCAAAATGACTGACTAGGAATGAAATAGGAAAACATAATAATTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCTTCGAGGGGGAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTAAGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCAGTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGTTACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCGCCTCTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAATATTTTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGAGTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATGTGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATTACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGATGGTGTCTGAAGTCTTTACTCAATATTCACATTGGCTGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGGGTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAGAGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGACTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTACAGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAGGCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAATCCTACACTCCAATGTGTGGGAAGTATTCGTGCTATGCTTTTATAACTAAATCGTCTCAGTATTTCTATTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGAATTCTCCTGATCAGGCCAAACCTCAACCAAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCCCTCATTCACCCAACAATTAGCCTCCAGTCCACGGGCTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTTACAATCCTACCTTTTCTACTGCCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGGGGGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCCGAACACCCCATCAACTACCCGGGGCCCATCTACGCCCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTAACAGCACCTTTGGGGCCCCAGGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTGTCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCACCATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGCGGCGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATCTGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAAGATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAAACAACTCAATACACATGAGAAGAGGCTGGCCCATGAGGAAAGGATGGAAACTACTACAACTCTTTTCTGTTGTTTTGTTTTCAATAGTCTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGTAGATTGAAGTCTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGTGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAAGTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGTGTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGGGATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCATTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGGATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCCCCTGAGGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCTGGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGGGAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAATATCTGAGACCTAGCATGCTAGGAGACCTTTATCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTTTTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCA\t44\tCOV_CHANGE_INS\tPRECISE;SVTYPE=INS;SVLEN=7407;END=0;SUPPORT=3;COVERAGE=0,0,0,0,8;STRAND=+-;STDEV_LEN=16.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t./.:0:0:0", + "chr22\t10115\tSniffles2.INS.1S0\tA\tAATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGATATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCTTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACCTCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCATCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGAACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGCACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATGCACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTATAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTTACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTTAGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACATTCATTTGAAAGTTTTCCTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTCACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTCATGTTTTTTCACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAAAGAATGCAAATTTGTAATTTTTATGATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGACTCAATAGGCACTGGAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTTAGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTTCTTTGACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTCCCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACCACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCGCAATCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCACCTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTTTACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTAAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCACAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGACGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACATTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTCAGTCAGGAGGATCACTTAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAATTAGCTGGGTGTGGTGGTAGGCACTTGTAGTCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTGAGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGACTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTCGTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAACGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTTTCTATATTGTTTTGGTCTATTTTTATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGATTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGTGATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCTGGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGATTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTAAAACCCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGGAAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATTGCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAAGAAAAAAGTAATAGACCAATCTTGAATTTATAATTGGAAGTGTTATTTCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAAAAACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGTGAGGGAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGATGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTCACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTGGGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGCCGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCCCTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGAAACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAAAAAAAAGAAAAGAAAGAAAAGCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTGGCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAAAAAAAATCTTTAAAATTAGAGGAGGGAAGCCACTGATCGCACACATCCAGGAAATGCAGCCCCGTGCATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGATCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCCCAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCTTCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTGGGCGGAAGCGCAGGAGCCGGCTGGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAACTGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAGGACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGGACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGGAGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATAAATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTTTTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCATGTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAACATGTGCGTACTGATTCTACATGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCTAATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCTGAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTTTTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGAGGGGTGTGCTGGGTAATCAGGGATGGCACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAGAGTCAGTCTCAGAAGCTTTCCTGGAAGTAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCTGACCACACAAGAAGACCCCTGCCCACAAATGCCTACCACTCCCAGGTCTCCCAGGCTGTTCACCCTCCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACTGCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTACCTTCTTTAACCCAGATAATTGAGAATTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGAAATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACAGAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGGAGTCTCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGAAATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCTGTCCTCCTGCTCTTTGCTCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTTCAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACCTCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCACCGCTTTTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGGGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGGCAAGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGAACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAACTCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCATATCTTGCTTGGCCCCAATACAAACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTGATTTCCCCACTGACAAACACCTAAATAATTTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCCCTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCTCTCCTGTCCCCTCGGTCCCAACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCCCAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAAGTACCTCCCTCAACTCTCCACTCCTCCACCCTATAATCCTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACCTGCCCAACAATTTCCTCTTAGAGAAAGTGGCTGGAGCTGAAGGCATAGTCAAGGGACATGTACTTTTTTCTCTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGGAATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCTCTCCCCAATATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCCAGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCAGGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTGTTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTTAGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATGCATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACCCAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCATTTCGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTTCAAAATGCCTAAGCCGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGAAATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGGCACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAAGGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGAAGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGTTTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAACTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACAACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTAACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATCCAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTAATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGTCCATTCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTCTTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTTGCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAGACTCCCTCCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTTCCTTCACTGAACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTGGAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTGGGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGTACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCTTTTTGGAAAGGATGTCAGTAGAGAAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCTAAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTAGATTGTCACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCACTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGCCAGGGAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTATTCAGTTAAAACCTTGCCTGGGGATGTTAGCATTGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGCTTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTGTAGATCTATACCCAGAACCACAGAATATCGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGTGGCAGTGTACCAAGGTTGTGACTAGAACTCCGGTCTTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCTTTACCCTAATCCTTCATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACTAAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGCCTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGTATGTCTTTCCCTATTTGTTGTTTGGACTAAGGGAGCCCCACCCAGTGCTTGTTCAGTAAGTTGTTGAAAGAAATCTGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTCCCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTCTGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGATTTCTTGGATGCAGATTTGTTTGTATATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAATAGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGGAGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTTCTGACCTAAAACTTGACATTTTAATATTTAAGTCGGTAAAGCGCTGATTTAAACTGGATTTTAACTGGATGAAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTACAGCATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCACTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGAGCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAAGTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCAGTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTAC\t7\tPASS\tPRECISE;SVTYPE=INS;SVLEN=12815;END=10115;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.300;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr22\t13000\tSniffles2.INS.2S0\tT\tTGATAATCAAGAGAACGTCTCAGCACCGCGCCTGAGCGCTTAGTAGGTAGTGATCAAGAGAGAAGACCTC\t36\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=69;END=13000;SUPPORT=2;COVERAGE=11,13,13,16,51;STRAND=+-;AF=0.154;STDEV_LEN=6.364;STDEV_POS=37.477;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2", + "chr22\t13433\tSniffles2.INS.4S0\tC\tCTGGAAGATGCTGTGGTGAGTCAGTGAGTGTGAAGGCATAGGACCTTACTGTACACTACTGTAGACTTTATAAACACCATATGCTTAGGCTACACCAAAAATTTTTATCTCCTCTGATAACAATGCCTTCTTCTTCCAGAATACTTCCTGAAGGACCTGCCTGAGGCTGTTTTATAGTTAACTACTTT\t36\tGT\tPRECISE;SVTYPE=INS;SVLEN=187;END=13433;SUPPORT=2;COVERAGE=13,15,15,51,30;STRAND=+-;AF=0.133;STDEV_LEN=0.707;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:16:13:2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T13:26:58.425668806" + }, + "homo_sapiens - [bam, bai], fasta, [], true, false -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:18:17.116928744" + }, + "homo_sapiens - [bam, bai], fasta, [], true, true -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "snf": [ + [ + { + "id": "test" + }, + "test.snf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:12:36.161185999" + }, + "homo_sapiens - [bam, bai], fasta, [], false, true": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.snf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T12:14:02.409838384" + }, + "homo_sapiens - [bam, bai], fasta, [], true, true": { + "content": [ + [ + "versions.yml:md5,0786af72683ced7f193b290fad51e914" + ], + "test.snf", + "test.vcf.gz.tbi", + [ + "##fileformat=VCFv4.2", + "##source=Sniffles2_2.4" + ], + [ + "##contig=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tSAMPLE", + "chr22\t1\tSniffles2.INS.0S0\tA\tATTAGGCAAAGAGAATATACTCGACTCATTTTGCTATACAGGAAAAAAGTGCTTCCTTAGCTCATTTGGAAAGAGATTGAGATTAGAAAAGATGGTTAATTTGTATGTATTTATAGAAATAAATAGAATACAAAATGAGGCTTTTAAATTTTTTCCCACATGAAAATATGATTACTTTAATCATTACGTTTTACATTGTTAGTTTGCAGACAGGCATAATTAGGTCCTCAGTTGCAGAAATCACAGACATCTGAAGGCCAGCCCTTTAATTTGGCCACCCCTAGATTTCTCTGCTCCTTCCTTTGCTCCTCCTACTGCACAGTTTGAACTGATGCTGTTCTATATAAGGTACTTTTCCACCTACCTCATCTCTGACTACAGTGCTATATTTTTCACACAGTAAGGACAGGTGTTGTGTTAATCTCACCATGCCAACAATCAGGGCACCACCTAGCAGAGTCAGTGAAGGCCAAAATAAACAGTGGAAGATAGCCATTTGGTCATACTTTTTTATAAGAATGACATCTTCAGATTGGCTGGCTGGACTGTAGAAGCATGAAAAGGGGGTTCCATTTTTGTGATCGAAGAATTCTTTTATGTCCAGAGCACTGTTGAGCAAATCATTTCTATCTTGGTGGCACTTAGGTGTGTAAAAGCACTAGGAATATGGAAGAGGGAAAAAGATAAAGGCACTGTCACCAATACCAAATACTTAACAGTTTCTAATTATGAAATAGCTTCAGGCTGAAGTTATTAGTGGGCAGTTTCAATCTTAGAAGGTGGTAAAATATTACATAGCTCATGGGAAAGGGTTGATTGGAGGGCCACAGTGAAATGGCCATTTCCAGTCATTAAGCAAGGATGTGGAAGAGAATTCTTAGTTTATATGACATTGCAGGAGAGTCAGTGACCAATTTCATAAGGAATATGACTCCTCCCTACATGCAGGTTCTTGGACTCTTGGACAGTATGAATCCGTTTGTCCATTGAACAAAAATGTATTGAGCCTTACTATGAGCTTTCAACACCTAGTAGTGCCTCTGTGGTCTCTGTCTTGATCTCCTGTAGCAAAATATTACCCTGAAGAAAAGCACGTTGAGGCTTTTGCTCTAGACTCACAGACAGGGAGCCCCACCTGGACTTTGGTTCCTGGGAGACAGAACCAGTGGAGAAGGGAGCTCTGTCAGCTGGTGACTTTTTTAAAAAAGCTTGAGGTTTATTACCATATCCATTAGGTACTTGAGGTACTGTGCTAAAGGCCTACAAACTGTTTGAAATCTTAAAAATCATTGCATCCAAAATAGAAAACAAAAGTCATCAGATTGAAATTGTAGGACTAAAGACAATAAAGTGTAACATGTCAACTAATCTTAACACAACTCAACTTTTATAGTTAGGTATAAATATAAATTTTAAATGATATGAAAGACTATACTTTCAGGGATCATTTCTATAATTCGTTAAATTATATGAACCCATTGTGTAACTTATTAAAATAAAAATAATCTTTACATTTATTTGATAAGAAAAAATTACTCGCTTGATTCAAGGGAGACTGTGGTACACTGTGTAGCATATGTTATATGGCGCGGAGTGGAATCTCCAAAAGAAAGACTCCCCACAAATGACTACTCATTGGCTCAGCCTATAAATTCCAGACACCAAGTTGTGAAATTGGAATAATTTCTCTCCTTTCTATATACCCCATTTCTCCACCAAGAAGAAAGCTTCATTTATCCTGATTTGATCACTATAAAAATGTTCACTCCAAAAAAATAGATTTATCCCTAAAGACAGCCCTGGGTTATTTATGTACCCTGCTAGGGACAGTCTGGCAGGGAAGGGTTGCTGTCATAAGAACTCTTTAAACTTTACAATACCTTGGGATTTATCTGGACAGCCTCTTCATTATAATGTAGGAGAGCTTTCTGAGCTGAATGGGTGAGGTTCACAAACACCCGAAGACACGAGTACTTCCCGTGACCACGGCAGTGCACACCACAGGTGAAGGCACAGTCCAGCCAGTCGTCCATGATATCTGTGTGGATGGCAGTGCAGGTTGATTCTTCTCTCCGAATGCTTCAATTTGAAAAAAAAAAAAATGTTCTTCACTTACTAGAAAATTTCGTTCTACATTTTGGTGCGGTTATGAGCTTATGTACACAATTAGCTGGGATTACAGGCGCTCAGCTGCCATGTCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTGTTGGCCAGGCTCGTCTCCAACTCCTGACCTCAAGTGATCCACCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACTGCACCTGGCCCAAATACTATGTTTTATCAATTCTAAAGTGCACTTTAGTATTTACATTTTAATATAACTAAAATCAATATGTATTTTGCAATCAATGGCATCTTGCTATTATTTGAAAACATTTCTTTAATAGTCTGTAAAATAATGGAACATGCCCAGATGCAGTGGCTTGTGCCTGTAATCCCAGCACTTTGAAGGGTCAAGATAGGAGGATCGCTTGAGCCCAGGAGCTGGAGACCAGCCTGGCCAATATAGTGACAGAATAAATAAATAAGTAAATAAAATAATGGAAAATCTCACAAATGGTGATGTTTTAGGTTCGACAAAATACATTAACTAGCCCATTTAGTTTTCTGAAATTATTTTGATGTTATTGCTTACAATATTTGTTCTGTGGTACACAACCATAGGATTAATAATATTGATGAAAATAATAAAAGAATAATAAGCATGTATTGAGCTCTTCCTGTGTGAAGTTCTGGACAAATCCTCATAAAGCCTTAAAAGGCAGATACTAGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACGAGGTCAGGAGATTGAGACCATCCTGGCTAACATGATGAAACACGGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCACGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAAAATCGCTTGAACCTGGGAGGCTGAGGTTGCAGTGAGCCAAGATCGCACCACTGCTCTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTTAAAAAAAAAAAAAAAAAAGAAAGAAACAGGCAGATACTAGCCCAGGCACGGTGGCTCATGCCTGTAATCCCACACCTTCGAAGGCCCAGGCGGGTGGATTATCTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATTGTGAAACCCTGTCTCTACTAAAAATACAAAAATATTAGCCAGGTGTGGTGACAGGTGCCTGTAATTCCAGCTACTCAGGAGGCTAAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCTGAGATTGTGCCACTTTACTCCAGCCTAGGTGACAGAGGAAGACTCTGTCTCAAAAAAAACAAACAAACAACAACAACAACATCAAAAAGAAACCTATAGTAATAAAATTGAAACAGAAGGAGGTTTGCAATCAAAATGACTGACTAGGAATGAAATAGGAAAACATAATAATTTGCATCTGCATAGGGAAGTCTGAGATTGGCTGATCTTGTTCTCTTCGAGGGGGAATACTAGTCCAGAACTTGGGGTGCCTGCCAAGAGGGGAGCAGCCACAGTAGGAAAGGGGGACTCTGGAATGCTAGGGTTCTGGGGTCTGTGGACACAGGAGGCAGAGGACATGTGTTAAGATGTTTTAAGAAATGAATGTTGAACTGGATATGAAAATATTTTTCAGCCGGGCGCAGTGGCTCACGTCTGTAATCCCAGTACTTTGGGAGGCTGAGGCGGGTGGATCATGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCCGTCTCTACTGAAAATACAAAAAGTTAGCCAGGCGTGGTGGCGGAGGCCTGTAATCCCAGTTACTCTGGCGGCTGAAGCAGGAGAATGGCGTGAACCTGGGAGACGGAGCTTGCAGTGAGCCGAGATTGCGCCTCTGCACTCTAGCCTGGGCGACAGAGGGAGACTCCATCTAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAATATTTTTCACTATAGAGAGGCATATGTCCCCTGAACTTGCCGGGATCCACCTTTCCTGCTGGTGCATTCTGTGAGTTAGAAGAAAACTTCCAAAGAGCCATTTTTTCCACCCTGTCTACTGTATAAAATTGCTTCTCAAACATGTGCTGCATTGCAGAGGATTACCATTGTTTTGCTAACCAGCGTCTGGTCTTTCTTATGTGGCGCTGCAATTACTAGTGTCAAACCCTGTTGGTAATACCCAGAGGATGGTGTCTGAAGTCTTTACTCAATATTCACATTGGCTGGGTGTGGTGGCTCACACCTGTAATCCCAGCACTTTCGGAAGCAGAGGCAGGCGGATCACTTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACTCCATCTCTACTAAAAATACAAAAATTAGCCGGGTATGGTGGCGGGTGCCTGTAATCTCAGCTACTAGGGAGGCTGAGACAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTACAGTGAGCCAAGATTGTGCCACTGTACTCCAGCCTGGGGGAAAATTCACATTTGTAGAGAGTTTAAATTCTTTTTTGATACGGAGTCTCGCTCTGTTGCCCGGGCTGGAGTGCAGTGGCAGGGTCTTGACTCACTACAACCTCTGCCTCCCAGGCTCAAGGGATTCTCCTGCTTTAGCCTCCTGAGTAGTTGGGATTACAGGCACCCACCAAAACACCTGGGCAATTTTTGTATTTTTATTAGAGACAGGGTTTCACCATGTTGTCCAGGCTGATCTGAAACTCCTGACCTCAGGTGATCTGCCTGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCACGCCCGGCCGAGAGTTTAAATTCTTAAATCCTACACTCCAATGTGTGGGAAGTATTCGTGCTATGCTTTTATAACTAAATCGTCTCAGTATTTCTATTCTAGCCCCCTTTTTCTGCCTGATGGTAAGATACTTAATCTAGTCAATTCCAGGTAAACTTTGGCCTTTTATGAATTCTCCTGATCAGGCCAAACCTCAACCAAGTCCCTTCTTGATCTTCTCCTTCACCTCCTTCCCTCATTCACCCAACAATTAGCCTCCAGTCCACGGGCTGATGCAGCATCTTGGTGTCCTGTGGTCTGAGGTCATTTTCTGTCTTTCTCAAGCCTCAGCTAAAGTTTACAATCCTACCTTTTCTACTGCCTTGAAATGCCCTAAGGTTCAGGGGCTTCATGGTTGCTGCTTCATGGGGGGAACCTGGCTGTTCTCTGAGGCTGCTCGGCCCGAACACCCCATCAACTACCCGGGGCCCATCTACGCCCGAGGCCTCAGCCATTCCTGCTCTACAGCTCTGCTGTCCCATTAACAGCACCTTTGGGGCCCCAGGGTTCCAGATTGGAAGCAGAGAATCTCCTCTGTTCTCAGACCCCCAAACTTTGTTGTGGATTCTAATTGTCCTTTCCCCCATCTCACTCCTTGGAACCCACTGGGAGGTGAGTAGAATCCCTGTCAGAGATTCTACCACCATCTCCCTCATTCTTACCCTAACTTTCTTCCTCTTCCTCCCTAGTTAGGAAAGAGGATCTTTAGCCTGCGGCGGGGGTGGGGGTGGGGATGCTTGATGTTTCAGGGGAAAAGGTGACTCAGCTACTTTTGGAATATCTGTCATACCTGTCTACTGGTGCAATGAGCTGGGATCACACCACTACACTCCAGCCTGGGTGACAGAGCAAGATTCCATCTCAAAAATAAATAAATAAATAAATAAAGACTCTGGAGAAACAACTCAATACACATGAGAAGAGGCTGGCCCATGAGGAAAGGATGGAAACTACTACAACTCTTTTCTGTTGTTTTGTTTTCAATAGTCTCTTCACAGTTCTTTTCACAGTTTGGAATTGATACCTTTTTCTCTTCATCAGAACTCCAATGTTTTTGTAGATTGAAGTCTTTTTTTTTTTTTCTTGAGAAAGGGTCTCACTTTGTCACCCAGGCTGGAGTGCAGTGGACCAATCACTGCTCACTGCAGCCTCGACTTCCTGGGCTCAAGAAATCCTTCCACCTCAGCCCCCCAAGTAGCTAGGACTACAGGTGTTCACCACCATGCCCAGTTAATTTTTATTTTTTAATGTATTATTATTATTATTATTATTATTATTATTATTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGTGGCACCATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGAGATTCTCTTGCCTCAGCCTTCCAAGTAAGTGGGACTACAGGTGCATGCCCCCACACCTGGGTAATTTATTTTTTTGTAGAAAAGGGGTATCAGTGTGCTGTCCAGGCTGGTCTCAAACTCCTAACCTCGAGTGATCTGCCTGCCTTGGCCTTCCAAACTACTGGGATTAGAGGTAATGAGTCACCATGACTGGCCTACGTATAGCCCAAATGGATGAGCAGTTCCCAAGGCTCATTCCCAGCCTCCACTATCCAAGTCAGCCTCTCATCTCCTTCATTTCCCAGGACTTAGTTCTCATTTTCCTCCCCTGTTTTCTCCGGATTGTGGCTATTGTTCCCTGGTTGCTAGATCAACCTGGAGCACAGTAAAGCAGTGTCACAAAGCTGGAAGGGGTCTGGGATGAGTCCACCAGCTACAAGTTCTTATAGAAAACGTACTCCGGGGATGGCCGGGCCCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCCCCTGAGGTTGGGAGTTCGAGACCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCTGGGTGTGGTGGCACATGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGGGAATCGCTTGAACCTGGGAGGCGGAGGTTGCGGTGAGCCAAGATTATGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAAAAAGAAAATGTACTCCAGGAATTGTCATTTCTGAAATTCAACAGCTTCTGGAATTGAAGCAAACAGCTCATCTTGGAAGAGAAATATGTAGCCAACTCCAAAGCCAAAGCCTTTGAATATCTGAGACCTAGCATGCTAGGAGACCTTTATCTGTAACCTCAGAAGAAGAATCTGGATCTGGCCAAATTGAGGTCAAATTCTGCTCAACTTCTCCATAGTCAGTAGGAGAAAAAAACCAACTTGATGTTTGAGTCATATGTTTTGACAACTAAAGAGGACACTTATGCTGGGGTCGGTGGTTCA\t44\tCOV_CHANGE_INS\tPRECISE;SVTYPE=INS;SVLEN=7407;END=0;SUPPORT=3;COVERAGE=0,0,0,0,8;STRAND=+-;STDEV_LEN=16.000;STDEV_POS=0.000;SUPPORT_LONG=0\tGT:GQ:DR:DV\t./.:0:0:0", + "chr22\t10115\tSniffles2.INS.2S0\tA\tAATGTGAAATTGCAAATAATTCACCTGAGAAATGAAAATTAATCTTCTTTGCTAAATGCCATAGAGATATTTTAAGTTGCTAATGTTACTTAGATGTTCATTAACTTAGTGAGTTACATTAAGTAGAGAAGATGCCTTTTTTTTTTTCTGTACGAAGTCTTGCTCTGTAGCCCAGTGTAGTGGTATGATCTCGGCTCACCACAACCTCCGCCTCCTGTATTCAAGCGACTCTCCTGCCTCAGCCTCCAGAGTAGCTGGGATTACAGGTGTGCACCATCGCACCTAGCTAATTTTTTGTATTTTTAGCAGAGACAGCATTTCACCATGTTGGCCAGGCTGTTCTTGAACCCCCGACCTCAGGTAATCCACCCTCCTTAGCCTCCCAAAGTGCCAGGATTACAGGCGTGAGCCACTGCACCCTGCTGAGAAGATGCCTTTTGACAATGAAGTGGATTTGTATATTTATCTTTGGCTTAAAAAAACATGCACCACCAATTACACTTTCCTCAAGTTTAAATTTTTAATAATTAGGAAAATAAAGCATTTTCTTGTCTTATAGTGTTAGCTAGATTGTTTTTGTGTATTTTGTCATGAATAAAAAGCATAGCTATATAGTTACTGCTTTTACATTAACTATAAATATCTTAAAATTTTACTACCTAAAATCAGGAAACTTGAACTGAAGCTACTAATCTTAGAGTTGGAAAAGTAAATACATAGAGGTTTCCTGTTGTACAAATGTCAAGTGGCACAGTGAAATTTACATTCATTTGAAAGTTTTCCTAACTGTAAAAAGTATCAAATTACTTGATACTTTGGAGTAGTTCATCATCTTTATCAGAGGCACAGGTCTTAACCATTGGCAAGCCTCTGTCAGAATATGCACATATTAAAGATCTGATTATTTTTGTGTTAATGTTAAAAAATTTTTCTGAAGCTTTTATCTTATTTTTTCCATCCTTACACCGTAAATTCACATTACCAAGTTGGGAAGCCAAAGAAACATTCTACTCTACTCATGTTTTTTCACCAGTTCATGAAAGTTGATGTTAGAAATGGGTGTGGGTGTGGGGGATGGGGGTGGTTGTACAGAAGCAGCAGGTGGTAGGGATAGGATTTCTGAAGCACTATCCTTGGCCTTTTTTGAGTAAACTCTTTATACCCTGAGCCACTTTCTTTTCAGAGGGCAATTGCTATTATTAGAGAGCCACCTTAAGCATTATTGTTGTAGAAAAATTAGGCACAACCAGTGATTGTCATTACAAGGACCAGCAAAAATGGCTAGGTTGCTACTCTGTATTTGTAACGCCCTTCCCCCAACAAAATTTCTCCTTTTCATATCTGTGAATTAGAAATAAGTGATAGAAAACTGTACTGCATTACAATATATACCATTTAATAAAACAAGTTTATAGTTGAGAGCACTATTCATGCTTTTTGAAAGAATGCAAATTTGTAATTTTTATGATAGCAATTCTTAATAATTTATTGTCCAAGAGATTTGATAAAATTTTTGATAGTTATTGGTCTCTGGGACTCAATAGGCACTGGAATGTTTTAATTCAGTTGAAAAGTTGGTTCAGGATTGCTACCCTCTCTTACCTGTTAGGAGGTTGTTGTTTAACCTGACCTGAAATTCCCATGAATAAGAACCTGTTTTTTTTTTTTTTTTTCTTTGACAGAGTCTTGCTCTGTCGCCCAGGCTGCAGTGCAGTGGTGCGATCTTGGCTCGCTGCAAGTTCCGCCTCCCAGGTTCAAGCGATTCTCCTGTCTCAGCCTCCCAAGTAGCTGGAGTAGCTGGGACTGCAGGCACGTACCACCATGCCTGACTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCGCAATCTCTTGACCTCATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGCACCTGGCCCAGGGAATTTCTAATATTTGAGAAGATGTTATTTTTAGTCTATTATACAAATTTATATATTGTTTACTAATATATAAATTTACATATTGGTTACTAATATGTAAACACCAATTTACATATTGGTTACTAATATGTAAACTTGATAAACATGGATTTCCATGGAAATTTAAAAGTATCACAACAATTTGTTTTCCCATTCTGAAACTTGTGATTTATTACATTTTCCTACTATTTCAGTTAATTCCATAATGCCAGATTTGTTGTAAATTTGCCGAGTGACAAGCCACACTGCTTCCTCTCATTCCTCTATTCCACAAAACTGCAAAGTTTCCCAGACCACAGTCAGGTTTCTCTGGGTTGTCCACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTACAGAGTGGTTGTCCAACTCTGTAAACTTAAGTCACTTTAAGTTTATGACGGAGGGGCTTCGTGAAACTTCATTGACCTTCCAAGGTGAAAATTGGTCAGTTTTCAGTTATAAAGGACATTAAGGATGGGTGTGGTGGCTGATACATGTAATCCCAGCACTTTCGGGAGACTCAGTCAGGAGGATCACTTAATCCTCATTTAAAAGGAGTTTGAGACCAGCCTGGGCAACAAAGTGAGGCCTTGTCTCTACAAAAAAATTAGCTGGGTGTGGTGGTAGGCACTTGTAGTCCCAACTACTCTGGAGACTGAGCTGAGAGAAGATTGTGTGAGGCTTGGAGGTTGAGGCTGCAGTGAACGGACATCACACCACTACACTCTAGTCAGGTGACAGAGCAAGACTCTAAATAAATAGGAACATTAGATGGTCTCTCTGCACTCTTGCCTGGTGGGGACGTGTTAGATACCCTCGTTAGGTTGTGATTTAGTTTTTAATCTGTGAGATGTTTGGGTCAAACAATTTTTAGCTGCCATGGAATAAACTTTCCAGTCAACGTGTGAGTTTGTGTTTGCCTTTACTTTTTTTTTTTTCTATATTGTTTTGGTCTATTTTTATCTTTTAATTTCAGAAAGCTGATTAATCTCTTCCTTTTCTCTTTAAAAATTTTCTTTATCATGTTTGTGCTACAGTGGTTATTTTGAGAACTTGTTGGCAGGATAAGTTGCAAAAGTTATGAAGTAGAATAGGGATGATTTCTGTTTTTGTTTTTTTTTTTTTCAGACAGAGTCTCACTCTCTTGCCTAGGCTGGAGTGCAGTGGCGTGATCCTGGCTCACTGCAGCCGCCGCCCTCCGGATTCAAGTGATTTGCCTGGCTCAGCCTCCCAAAAAGCTGGGATTACAGGTGCATGCCACCACACCCAGCTAATTTTTGTGTTTTTAGTAGAGATGGGTGTTCACCATGTTGGCCAGGCTGGTCTCAAACTCCTGACCTCAGGTGATCTGCCTGCCTCCGCACTCCCAAAGTGCTGGGATTACAGACGTGAGCCACCATGCCTGGCTGAGATTATTTCTTTTTTTATTATAGCCATTGCTTGTAGATATATGCTGGTGGTTATCTGTAAAAATGTAATAGAAAGGCCGGGCACGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCGGATCACAAGGTCAGGAGTGGGAGACCAGCCTGGCCAATATGGTAAAACCCCGTCTCTACCAAAAATACAAAAATTAGCTGGGCATAGTGGCGGGCACCTATAGTCCCAGTGACTCGGGAAGCTGAGGCAGGACAATCGCTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCTGAGATCGTGCTATTATTGCACACCAGCCTGGGCGACAGAGTGAGACTCCGTCTCAAAAAAGAAAAAAGTAATAGACCAATCTTGAATTTATAATTGGAAGTGTTATTTCTTTATTTGCAGAATTTATTTATTTGTGACGCAGCTGTTGCTACCTCGCCTTTTCTTTTGTTGAGCTTAATCTCATGTCAAGTCATTCAACCAACTCAAAAGCGATGAAGACATTATTGAATCAACCTGAACTAAATCAGACCTAGGCTTCTTAAAATATACAGCTTAATGCTTCCAAATGATTTAGAAAACTAAAAAACCTAGCTACGCTGTAGGACACACAGTGGCCAATAAAAACAGGACCCCCAAACTGGCCAGTGGACCACTGCAACCACTATTTACTTCCTCCGTGTTTAGGAATGTTCAACGCTCCAAGCCCCATAGGCTGATTCAAGAAGATAAAGTGAGACTCAAGGAATTTCGAAGTGGAACAATACACCAAAGCCTTAAACCTGAAATGACTCTCCTTTTCTGGGGGTGAGGGAAGAAAAAGAAAAAGTTTCTAGGGCTCTCGGGGTGGCCTGGATGCCAGGGTCCCAGAAGTGGCCTTTTCTAGCTCCTGTAACTAAACCTGGCGGAAAACTCCCCGCCTGCTCACTCCACCCCCACCCGCCCAAGAATGCGTCTTCCCGTCTTCGGTGGCCCTACCCAGAATCCCAAAATGTGGGTTCCAACCCGGGCCCTGAATGTCTTCTCAAATCCCCGGGACCCAGGTTCCGGTGCGTGCCTTGCGTGCCGGGTCTTGCCCCTCGGGCGGTACCACCCAGGCAGCCCTAAATCCAGCCTCCCGGGCCCCCAGCAGCGCCCTCCGCCCCTCCACTATCCGGTCCGGCTCGAAGTCGGGGCCAAATCCAGAGACAAGAGGGCTGTGCCTGAAACTGAGCAGTTTCACCACTCGGCACTCCTGGCGGAAACTTCCCTTTAAAAAAAAAAAAAAAGAAAAGAAAGAAAAGCAACAGCACTTTTGGGCTAGCATTTCAATCCTTCCTGCCCTTTAGAGTTCCCAGTTCTGCTTCCAGCTGGCTTTGGGTGTTCCACTAGAATTGAGTTGTAAAGATATTCTTTAAGTGTTTATAGAACATTAAGACTTAAAAAAAATCTTTAAAATTAGAGGAGGGAAGCCACTGATCGCACACATCCAGGAAATGCAGCCCCGTGCATCCCTGCTCAGGGATGAGCAGGCGCCCCAGGACTCCCGGAGACAGATTTTTGGGCACCCGAGGGAGTCACCGGGCGCGTGTCGGGGTCCGCGGTGAGGCCCAGCCCCTCCGGCGGTCCCTTAGACGCGCCCTCTGCCCGGCCGGTGATCGGCCATTGTTTACGGGGGATGCCCGTCCAGACGCATTGTTTTGGCCGTTTCCAACTTGCCCCGGCCCTTTCCGGGGCATCGCGGGGGACCCTACACCGACGTCCCCCCTCCGCCCGCGCCCCAAGGGCTGACTGGGCAAATTGGCAGATCCGCCCCGCGGGGCGACCCAACTTTTCGGAACAGCCCCCCACCGCCCACCCCTGCAGATCCCCGGACCCCCGCTCCCGGCGGAGATTCAGGGAACCCCGCATCCCAAGCCCTTCTAAATCGTGCGGCCTGAGTGTGACGGCCAAGAGCGGATGCAGCCCGGGATCGCCCGCACCTTCCCGTGGGCGGAAGCGCAGGAGCCGGCTGGGGGAGGGGGCGCCCTAGAGAAGCGGCTAGAAAGCTGAGACGGGGAACTGAGGTCATCCTGGGGGGGACAAGACAATGAGAGCCGGGCGCCTTGGGGGCGGCGCGGGAGCCTCCGCAGGACCAGGCGGGCGCCCCCTTTACCTGCGGCTCCGGCGCCTCGGCCGTTTCCTCGCGCGGCGGCGGCCGGGACTGAGCTGACACCACTCAGCCGGCGGGGTTTGAATGAGGAGGAGCGGGCGCGGAGGGGAGGGGGCGGGGAGGGAGGGAGGGAGGCGTCGCGGAGTTTCTCTCGGCCTTTTGTGCCATCCGCCGAGGCGCCTTGAGTATAAATCCAGATAGTGCAGTTTTTGTTGTGCTTGTGCTGATCAACTTTATGGTGTGATTAAATACGATTTTTTTTATTACGCTCTTGAAATTGTACTCTTGAGGTTGCAGAATGGCAATTAGATGGCAGTCGCTGATAGCCATGTAGAAGTTTTGATGAACATGCAAGTTAATTTTAATTTCTGATCAGTTACGGTTAGTGACTGTGGCCAAACATGTGCGTACTGATTCTACATGTGCTAATTCCGTGACGTTTATTCACCAGCTATGTGTCCCGTGCCTAATCCTGTGTCAGGCACCTTGTTCCAGGCATTGGGGGCAGCAGTGGACAAGGCAACAGAGTCTCCATCCTGAGGTGTTACTTTTAGAAAAAGATAGTTACAAGCAAATAAACAGGATGGTTTTAGATCTGGACAGAGGTTTTCAGAGGAAGTCATCCTTGAGCTGTCACAATGCTTTGGGGAGGGGTGTGCTGGGTAATCAGGGATGGCACATTTGGGGTGCCTAAGGATTGCTGTGGCCCTGGGAGCCTAGGACAGTTGGTCACAATTGACTTATTAGAGTCAGTCTCAGAAGCTTTCCTGGAAGTAGAATTGCTGCTGTTTTGCCAGGAGGGTTTCCTTCCCCATCTGACCACACAAGAAGACCCCTGCCCACAAATGCCTACCACTCCCAGGTCTCCCAGGCTGTTCACCCTCCCAGGCAAAGTGGAAGCTTCCTCTGTCCTAAGATCGTTTCCCACTGAACCTCCTTCATTTTCCTTCACTGCAGAGAAATAATCCTACAAGGTCTTGTGTGGAGAGTGATGGTACCTTCTTTAACCCAGATAATTGAGAATTGGAACCAAAACATCTGTGTATTAATAAATATTTTCAGTAACTAGGTTATGCTATTTCCCTGAGTGGGAAATAACACTCCATCATGTTTCTTTTTTTGGGGGGCAAGGGGGAGTCAAAGTTGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCGTGACTTGCACATATACATCCAGATGGCCTGAAGTAATTGAAGATCCACAGAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAATCTCCCCCACCCTTAAGAAGGTTCTTTGGAGTCTCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGACTGTAATTTTCCATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTCCCTTCACTTGACTCTCTTTTCAGACTCAGCCCACCTGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACGAAGCCTGTTTGGTGGTCTCTTCACACGGATGCGCATGAAATTTGGTGCCGTGACTTGGATCGGGGGACCTCCCTTAGGAGATCAATCCCCTGTCCTCCTGCTCTTTGCTCCGTGAGAAAGATCCACCTACGACCTCAGGTCCTCAGACCGACCAGCCCAAGAAACATCTCACCAATTTCAAATCTGGTAAGCGGCCTCTTTTTACTCTCTTCTCCATTCCTCCTCCTTCTCCCTTAGCTTCTCCAACCTCCCTCACTATCCCTCAACCTCTTTCTCCTTTCAATCTTGGCGCCACACTTCA\t7\tPASS\tPRECISE;SVTYPE=INS;SVLEN=7453;END=10115;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.300;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/1:10:7:3", + "chr22\t10126\tSniffles2.INS.1S0\tA\tACCGCTTTTCTGGGGCAGGGGCAAGTACCCCTCAACCCCTTCCCCTTCACACTTAGTGGCAAGTCCCGCTTTCCTGGGCAGGGGCAAGTACCCCTCAACGCCTTCTCCTTCACCCTTAGTGGCAAGTCCCGCTTTTCTAGGGGGGCAAGAACCCCCAAACCCCTTCCATCTGTGTCTCTACGCTCTCTTCTGTGGGTTTGCTTCCTTCACTATGGAACCTTCCACCCTCCATTCCTCCTTCTTCTCCCTTAGCCTGTGTGCTCAAAAAGTTAAAACCTCTTCAACTCACACCTGACCTAAAACCTAAATGCCTTATTTTCTTCTGCAACACCGCATATCTTGCTTGGCCCCAATACAAACTTGACAATGTCTCTAAATGGCCGGAAAATGGCACTTTGATTTCCCCACTGACAAACACCTAAATAATTTTTGTCGAAAAATGGGCAAATGGTCTGAGGTGCCTTACGTCCAGGCATTTTTCACACTTCGTTCCCTCCCTAGTCTCTGTTCCCAATGCGATTCCTCCCAGATCCTCCTCCTTTCCTCTCCTGTCCCCTCGGTCCCAACCCCAAGCGTCGCTGAGTCTTCCCAGTCTTCCTTTTCTACAGACCCATCTGACCTTTCCCCTCCTCCCCAAGCTGCTTGTCGCCAGACCGAGCTAAGTCCCAAGTACCTCCCTCAACTCTCCACTCCTCCACCCTATAATCCTTCTATCACCTCCCCTCCTCACACCTGGTCCGGCTTACAGTTTAGTTCCGCGACTAGCGCTTCCCCACCTGCCCAACAATTTCCTCTTAGAGAAAGTGGCTGGAGCTGAAGGCATAGTCAAGGGACATGTACTTTTTTCTCTATCAGACCTCTCTCAGATCAGTCAATGTTTAGGCTCTTTCTCATCAGACCCCACTAAATATATACAGGAATTCCAATATCTAACTCTGTCCTACAACTTAACCTGGAGTGACTTAAATGTCATCCTGACTTCTACTCTCTCCCCAATATGAACGGGAAAGTTTTTTCTCTAGCCCAATCTCGTGCTGATAACCGCCGGCTTCATGAGCCAGACCTCCAGGAAGGCATTAGAGCAGTTCCCCGAGAGGATCCCCAATGGAACTATCAGGCAGATTCCCCAGGTACAGCTAGGCGAGATTACATGGTTTCCTGCCTAGTTGAAGGGCTTAAAAAAGCAGCTTACAAAGCTGTTAATTATGACAAGCTTAAAGAAACTACCCGAGGTAAAGACGAAAACCCAGCCCAGGTCATGGCCCACTTAGCAGCAACCATTAGATGCTATACTGCCCTAGACCCAGAGGGGCCAGAAGGCCGCCTTATTCTTAATATGCATTTTTATCACCCAATCCACTCCTGACATTAGGAAAAAACTTCAAAAATTAGAATCTGGCCTTCAAACCCAGCAGGAATTAATCAACCTTGCCTTCAAGGTGTACAATAATAGAGAGGAAGCAGCCAGACGGCAACGCATTTCGAGTTACAATTACTTGCCTCTGCTGTGAGACAAAACCCAGCCACACCTCCTGCATACAGGAACTTCAAAATGCCTAAGCCGCAGCAATCAGACACTCCTACAAGACTTCATCAGGATCTTGCTTCAAGTGCCAGAAATCTGGCCACTGGGCCAAGGAATGCCCACAGCCCAGGATTCCTCCCAAGCCATGTCCCATCTGTGCAGGCACCCACTGGAAATCAGACTGCCCAGCTCGCCCGACAGCCACTCCTGGAGCCCCTAAAGCTCTAGCCCAAGGCTCTCTGACTCCTTCCCAGATCTATTCGGCTTAGCGACTGAAGATTGACGCTGCCCGATCGCCTCGGAAGTCCCCTGGACCATCACAGAAGCCGAGCTTCGGGTAACTCTCACAGTGGAGGGTAAGTCCATCCCCTGTTTAATCGATACGGGGGCTACCCACTCCACGTTGCCTTCTTTTCAAGGGCCTGTTTCCCTTGCCCCCATAACTGTTGTGGGTATTGACGGCCAAGCTTCAAAACCCCTGAAAACTCCCCCACTCTGGTGCCAACTTGGACAACACTCTTTTATGCACTCTTTTTTAGTTATCCCCACCTGCCCACTTCCCTTATTAGGCCGAAATATTTTAACCAAATTATCTGCTTCCCTGACTATTCCTGGAGTACAGCTACATCTCATTGCTGCCCTTCTTCCCAATCCAAAGCCTCCTTTGTGTCCTCTAACATCCCCACAATATCACCCCTTACCACAAGACCTCCCTTCAGCTTAATCTCTCCCACTCTAGGTTCCCACGCCGCCCCTAATCCCACTTGAAGCAGCCCTGAGAAACATCGTCCATTCTCTCTCCATACCACCCCCCAAAAATTTTCGCCGCTCCAACACTTCAACACTATTTTGTTTTATTTGTCTTATTAATATCAGAAGGCAGGAATGTCAGGCCTCTGAGCCCAGGCCAGGCCATCGCATCCCCTGTGACTTGCACGTATACATCCAGATGGCCTGAAGTAACTGAAGATCCACAAAAGAAGTAAAAACAGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCTGCCCCACCCTAACTGATCAATGTACTTTGTAGACTCCCTCCCCCCACCCTTAAGAAGGTTCTTTGTAATTCTCCCCACCCTTGAGAATGTACTTTGTGAGATCCACCCCTGCCCACCAGAGAACAACCCCCTTTGATTGTAATTTTTTATTACCTTCCCAAATCCTATAAAACAGCCCCACCCCTATCTTCCTTCACTGAACTCTCTTTTCGGACTCAGCCCACCGGCACCCAGGTGAAATAAACAGCTTTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTCACACGGACGCGTATGAAAAAAGTCTCGCCCTGTTGCCCAGGCTGGAATGCAGTGGCACGATCTTGGCTCACTGCTACCTCCACTTCCTGGGTTCAAGTGATTCCCAAGTAGCTGGGATTACAGGTGTGTATTACCATGCCCAGCTAATTTTTGTATTTTTAGCAGATAAGGGGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGGCCTCAAGTGATCCACCCACTTCGGCTACCCAAAGCATTGGGAGTACAGGGGTGAGCCACTATGCCCAGCCTCACATCATATTTCTAATCCCGAGACTGTAGAGCTGGTGTCTCTTTTTGGAAAGGATGTCAGTAGAGAAAATGGAGTTCCCCAAAATTACAGTTTCACATATTAGTAAAGTTTCTAAAATACAGTAATAATGTTGAGAGCTGACATAGGGACTAACTTAGTTTTTTTTTTTTTTTAGATTGTCACCTAACTTTGATTTTGCTAAATAAGGACATTAAAAGAAAACCAAAAAAGTCCACTATTGGCTATTGCCACTATTTGATTTTTTAAAAAATAAGCGTATTTTAGCATCTAAAAGTAGGAAGGACCTCAAATAAATGAGTCTTTGTTCTTGGCCAGGGAAACAGCGTTGTCAGCATTTGATAACTGTTTTTCTAGGGTATGTGCTGTTATTCAGTTAAAACCTTGCCTGGGGATGTTAGCATTGGTAAATACTTGTTGAATAAGCAAATGAAACTTAAGCTTCTATGTATAGAAACCTAAGTCACTTCACATTCTGATTAGCAGAGTAATTGAATATTCTTTTCAGTGTGTAGATCTATACCCAGAACCACAGAATATCGGAACTGTAAAAACCAACTGCATTAAATAGATGTGGTATGTGGCAGTGTACCAAGGTTGTGACTAGAACTCCGGTCTTGGAGTGTTCTATTATATCACACCAAGCTGGTCACCAGCCCATGTGTTGATCCTCCATTGTGATAGCAACAAAGAAAAGACTTCAGGACATTCTTTCCTTTACCCTAATCCTTCATCTTCAGTCTTATTTAGAAAAGCTTAATGTTAAAGATCTAGTTTATTCAAAACTAAAGATAAGGAGTATGAGAATTTCTATTTCGGAGTGTAAAGGAGGAGATGTTTCCTTGGCTTCTCTGAGCCTACAGGCCTTCCTTGCTCTTTAAGGAAGTAGAGAGAGAGAGGAAAGTAAAGTATGCTTTTGTTTTTTAAGGTTACTTTGCTGGGAGTAGTTTGCATGCCATTTGGTTTTCTTGGGTGGAATTAACTGACTTAAGTTTTAAGTAGTTGGGACTATTTAGAAACAATGCCTATCCAATGTTTGCCATAAAGGCAGAGGGTATTGGCTTTAGAAGTTAATTCTTCTCCAGGAGTGAAAATGAGCTGCTAAACCAGAAGCAGCAGAGCTAAAGAAAGTAATTTTCCACCTGGCCAGTGCATGATGTGAAAGGTAGACTAAAAGAATGAGAGGACCCATTTTCTGATGAAAGACTAAGCCATGTTGAAACAGCCCTGTTGAGGATTTTATTTTAAATCTATACATTCACAAAGGAGCTTTGTGTATGTCTTTCCCTATTTGTTGTTTGGACTAAGGGAGCCCCACCCAGTGCTTGTTCAGTAAGTTGTTGAAAGAAATCTGGATTTGAACAGTGGATTGAGGTTTCGAATATCCAGTGAACCAAAATATATCAGGGTTCCCCTGGCCAAGATGAGTGACCATTCTGAGGTGTTACGTATTTCTTGAATGGGGATTTTAGGAAAAGTTTCTGTATTTCTGTGCTCATTTTGTTGACCTCTGTATGTGCAAAATCTCTAAGGGGGTGTTTGGGCACTTAGATTTCTTGGATGCAGATTTGTTTGTATATGAAACAAATTTTAAATTGTTTCGTATACACTGGATTTAAAATAGTTTAGTTTACTAAAGTGTTTTAATGTTTTCATCTTAATTTTCAGTTCTTATAGTCTTTAGATTTAGGGAGGCTGTTGATGGCATCCACATATGCATTTTAATGTCATTTAAAATGTATTCTGCTGAATTTAACAATTTCTGACCTAAAACTTGACATTTTAATATTTAAGTCGGTAAAGCGCTGATTTAAACTGGATTTTAACTGGATGAAATTCTGATTTAATGAGTGTACTGACTGGATAAAATGCCAATGATTTAATTAACAAGCACGTTTACAGCATGCCCTATATATTAGTTAAAAGTGAAGCAATTGAATTAGGTACCATTTCAAAATGGTTGCTGTACCCACTCACCCTCTCTATCCTCCAATTAGGGTATATTTTGAAATGATTGCTTTTCCCTTTTCCTTGTGTAAAGAGCCTGAGGAAATTTTCTTCGGCCTTCATCATGAGAACCTGGTGGGGTTTCTGGAAGTAAAATTCATGAAAGTATAAGGGGCCCCCAAGACGGGACTCCAACAAGTTTTTAACTCTCAAGCTAGTCCACACTCAGCCACCAGTAAATTTATTGATTACCATTGAAGTGTTCCTACCAATTAC\t9\tPASS\tPRECISE;SVTYPE=INS;SVLEN=5362;END=10126;SUPPORT=1;COVERAGE=10,10,10,29,10;STRAND=-;AF=0.200;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:2:8:2", + "chr22\t13000\tSniffles2.INS.3S0\tT\tTGATAATCAAGAGAACGTCTCAGCACCGCGCCTGAGCGCTTAGTAGGTAGTGATCAAGAGAGAAGACCTC\t36\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=69;END=13000;SUPPORT=2;COVERAGE=11,13,13,16,51;STRAND=+-;AF=0.154;STDEV_LEN=6.364;STDEV_POS=37.477;SUPPORT_LONG=0\tGT:GQ:DR:DV\t0/0:10:11:2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-30T13:26:44.362217872" + } +} \ No newline at end of file diff --git a/modules/nf-core/sniffles/tests/nextflow.config b/modules/nf-core/sniffles/tests/nextflow.config new file mode 100644 index 00000000..06e38362 --- /dev/null +++ b/modules/nf-core/sniffles/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'SNIFFLES' { + ext.args = '--minsupport 1 --no-qc --mapq 0' + } +} diff --git a/modules/nf-core/sniffles/tests/tags.yml b/modules/nf-core/sniffles/tests/tags.yml new file mode 100644 index 00000000..7010d53c --- /dev/null +++ b/modules/nf-core/sniffles/tests/tags.yml @@ -0,0 +1,2 @@ +sniffles: + - "modules/nf-core/sniffles/**" diff --git a/modules/nf-core/somalier/extract/environment.yml b/modules/nf-core/somalier/extract/environment.yml index fe32ebda..757967b2 100644 --- a/modules/nf-core/somalier/extract/environment.yml +++ b/modules/nf-core/somalier/extract/environment.yml @@ -1,7 +1,5 @@ -name: somalier_extract channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::somalier=0.2.18 diff --git a/modules/nf-core/somalier/extract/meta.yml b/modules/nf-core/somalier/extract/meta.yml index aabaf5d6..25621667 100644 --- a/modules/nf-core/somalier/extract/meta.yml +++ b/modules/nf-core/somalier/extract/meta.yml @@ -1,5 +1,6 @@ name: "somalier_extract" -description: Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs +description: Somalier can extract informative sites, evaluate relatedness, and perform + quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs keywords: - relatedness - QC @@ -14,65 +15,69 @@ keywords: - family tools: - "somalier": - description: "Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" + description: "Somalier can extract informative sites, evaluate relatedness, and + perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" homepage: "https://github.com/brentp/somalier" documentation: "https://github.com/brentp/somalier/blob/master/README.md" tool_dev_url: "https://github.com/brentp/somalier" doi: "10.1186/s13073-020-00761-2" licence: ["MIT"] + identifier: biotools:somalier input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM/BCF/VCF/GVCF or jointly-called VCF file - - input_index: - type: file - description: index file of the input data, e.g., bam.bai, cram.crai - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'hg38' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.{fasta,fna,fas,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'hg38' ] - - fai: - type: file - description: FASTA index file - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing sites information - e.g. [ id:'hg38' ] - - sites: - type: file - description: sites file in VCF format which can be taken from https://github.com/brentp/somalier - pattern: "*.vcf.gz" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM/BCF/VCF/GVCF or jointly-called VCF file + - input_index: + type: file + description: index file of the input data, e.g., bam.bai, cram.crai + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'hg38' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.{fasta,fna,fas,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'hg38' ] + - fai: + type: file + description: FASTA index file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing sites information + e.g. [ id:'hg38' ] + - sites: + type: file + description: sites file in VCF format which can be taken from https://github.com/brentp/somalier + pattern: "*.vcf.gz" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - extract: - type: file - description: binary output file based on extracted sites - pattern: "*.{somalier}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.somalier": + type: file + description: binary output file based on extracted sites + pattern: "*.{somalier}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ashotmarg" - "@nvnieuwk" diff --git a/modules/nf-core/somalier/extract/somalier-extract.diff b/modules/nf-core/somalier/extract/somalier-extract.diff index 59f472ab..b1118b5e 100644 --- a/modules/nf-core/somalier/extract/somalier-extract.diff +++ b/modules/nf-core/somalier/extract/somalier-extract.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/somalier/extract' +'modules/nf-core/somalier/extract/meta.yml' is unchanged +Changes in 'somalier/extract/main.nf': --- modules/nf-core/somalier/extract/main.nf +++ modules/nf-core/somalier/extract/main.nf @@ -5,8 +5,8 @@ @@ -13,13 +15,17 @@ Changes in module 'nf-core/somalier/extract' input: tuple val(meta), path(input), path(input_index) +Changes in 'somalier/extract/environment.yml': --- modules/nf-core/somalier/extract/environment.yml +++ modules/nf-core/somalier/extract/environment.yml -@@ -4,4 +4,4 @@ +@@ -2,4 +2,4 @@ + - conda-forge - bioconda - - defaults dependencies: - - bioconda::somalier=0.2.19 + - bioconda::somalier=0.2.18 +'modules/nf-core/somalier/extract/tests/tags.yml' is unchanged +'modules/nf-core/somalier/extract/tests/main.nf.test.snap' is unchanged +'modules/nf-core/somalier/extract/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/somalier/relate/environment.yml b/modules/nf-core/somalier/relate/environment.yml index 3a730471..757967b2 100644 --- a/modules/nf-core/somalier/relate/environment.yml +++ b/modules/nf-core/somalier/relate/environment.yml @@ -1,7 +1,5 @@ -name: somalier_relate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::somalier=0.2.18 diff --git a/modules/nf-core/somalier/relate/meta.yml b/modules/nf-core/somalier/relate/meta.yml index 42638f4f..0da72821 100644 --- a/modules/nf-core/somalier/relate/meta.yml +++ b/modules/nf-core/somalier/relate/meta.yml @@ -1,5 +1,6 @@ name: "somalier_relate" -description: Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs +description: Somalier can extract informative sites, evaluate relatedness, and perform + quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs keywords: - relatedness - QC @@ -14,47 +15,67 @@ keywords: - family tools: - "somalier": - description: "Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" + description: "Somalier can extract informative sites, evaluate relatedness, and + perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" homepage: "https://github.com/brentp/somalier" documentation: "https://github.com/brentp/somalier/blob/master/README.md" tool_dev_url: "https://github.com/brentp/somalier" doi: "10.1186/s13073-020-00761-2" licence: ["MIT"] + identifier: biotools:somalier input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - extract: - type: file - description: extract file(s) from Somalier extract - pattern: "*.somalier" - - ped: - type: file - description: optional path to a ped or fam file indicating the expected relationships among samples - pattern: "*.{ped,fam}" - - sample_groups: - type: file - description: optional path to expected groups of samples such as tumor normal pairs specified as comma-separated groups per line - pattern: "*.{txt,csv}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - extract: + type: file + description: extract file(s) from Somalier extract + pattern: "*.somalier" + - ped: + type: file + description: optional path to a ped or fam file indicating the expected relationships + among samples + pattern: "*.{ped,fam}" + - - sample_groups: + type: file + description: optional path to expected groups of samples such as tumor normal + pairs specified as comma-separated groups per line + pattern: "*.{txt,csv}" output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - html: - type: file - description: html file - pattern: "*.html" + - meta: + type: file + description: html file + pattern: "*.html" + - "*.html": + type: file + description: html file + pattern: "*.html" - pairs_tsv: - type: file - description: tsv file with output stats for pairs of samples - pattern: "*.pairs.tsv" + - meta: + type: file + description: tsv file with output stats for pairs of samples + pattern: "*.pairs.tsv" + - "*.pairs.tsv": + type: file + description: tsv file with output stats for pairs of samples + pattern: "*.pairs.tsv" - samples_tsv: - type: file - description: tsv file with sample-level information - pattern: "*.samples.tsv" + - meta: + type: file + description: tsv file with sample-level information + pattern: "*.samples.tsv" + - "*.samples.tsv": + type: file + description: tsv file with sample-level information + pattern: "*.samples.tsv" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ashotmarg" - "@nvnieuwk" diff --git a/modules/nf-core/somalier/relate/somalier-relate.diff b/modules/nf-core/somalier/relate/somalier-relate.diff index f583d612..7dd8b76c 100644 --- a/modules/nf-core/somalier/relate/somalier-relate.diff +++ b/modules/nf-core/somalier/relate/somalier-relate.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/somalier/relate' +'modules/nf-core/somalier/relate/meta.yml' is unchanged +Changes in 'somalier/relate/main.nf': --- modules/nf-core/somalier/relate/main.nf +++ modules/nf-core/somalier/relate/main.nf @@ -5,8 +5,8 @@ @@ -13,13 +15,17 @@ Changes in module 'nf-core/somalier/relate' input: tuple val(meta), path(extract), path(ped) +Changes in 'somalier/relate/environment.yml': --- modules/nf-core/somalier/relate/environment.yml +++ modules/nf-core/somalier/relate/environment.yml -@@ -4,4 +4,4 @@ +@@ -2,4 +2,4 @@ + - conda-forge - bioconda - - defaults dependencies: - - bioconda::somalier=0.2.19 + - bioconda::somalier=0.2.18 +'modules/nf-core/somalier/relate/tests/tags.yml' is unchanged +'modules/nf-core/somalier/relate/tests/main.nf.test.snap' is unchanged +'modules/nf-core/somalier/relate/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/splitubam/environment.yml b/modules/nf-core/splitubam/environment.yml index ef128202..382f9112 100644 --- a/modules/nf-core/splitubam/environment.yml +++ b/modules/nf-core/splitubam/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "splitubam" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::splitubam=0.1.1" diff --git a/modules/nf-core/splitubam/meta.yml b/modules/nf-core/splitubam/meta.yml index 3d11eaae..64691357 100644 --- a/modules/nf-core/splitubam/meta.yml +++ b/modules/nf-core/splitubam/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "splitubam" description: split one ubam into multiple, per line, fast @@ -13,33 +12,34 @@ tools: documentation: "https://github.com/fellen31/splitubam" tool_dev_url: "https://github.com/fellen31/splitubam" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:true ]` - - bam: - type: file - description: (u)BAM file - pattern: "*.{bam}" - + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:true ]` + - bam: + type: file + description: (u)BAM file + pattern: "*.{bam}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - bam: - type: file - description: Split (u)BAM file - pattern: "*.{bam}" - + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.bam": + type: file + description: Split (u)BAM file + pattern: "*.{bam}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@fellen31" maintainers: diff --git a/modules/nf-core/stranger/environment.yml b/modules/nf-core/stranger/environment.yml index 530ce375..c476e2b3 100644 --- a/modules/nf-core/stranger/environment.yml +++ b/modules/nf-core/stranger/environment.yml @@ -1,7 +1,5 @@ -name: stranger channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::stranger=0.9.1 + - bioconda::stranger=0.9.2 diff --git a/modules/nf-core/stranger/main.nf b/modules/nf-core/stranger/main.nf index 923483f4..bc31e703 100644 --- a/modules/nf-core/stranger/main.nf +++ b/modules/nf-core/stranger/main.nf @@ -4,8 +4,8 @@ process STRANGER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/stranger:0.9.1--pyh7e72e81_0': - 'biocontainers/stranger:0.9.1--pyh7e72e81_0' }" + 'https://depot.galaxyproject.org/singularity/stranger:0.9.2--pyh7e72e81_0': + 'biocontainers/stranger:0.9.2--pyh7e72e81_0' }" input: tuple val(meta), path(vcf) diff --git a/modules/nf-core/stranger/meta.yml b/modules/nf-core/stranger/meta.yml index 5e0bc0bb..a5486dbd 100644 --- a/modules/nf-core/stranger/meta.yml +++ b/modules/nf-core/stranger/meta.yml @@ -1,5 +1,6 @@ name: stranger -description: Annotates output files from ExpansionHunter with the pathologic implications of the repeat sizes. +description: Annotates output files from ExpansionHunter with the pathologic implications + of the repeat sizes. keywords: - STR - repeat_expansions @@ -13,39 +14,42 @@ tools: tool_dev_url: https://github.com/moonso/stranger doi: "10.5281/zenodo.4548873" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF with repeat expansions - pattern: "*.{vcf.gz,vcf}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - variant_catalog: - type: file - description: json file with repeat expansion sites to genotype - pattern: "*.{json}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF with repeat expansions + pattern: "*.{vcf.gz,vcf}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - variant_catalog: + type: file + description: json file with repeat expansion sites to genotype + pattern: "*.{json}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: annotated VCF with keys STR_STATUS, NormalMax and PathologicMin - pattern: "*.{vcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: annotated VCF with keys STR_STATUS, NormalMax and PathologicMin + pattern: "*.{vcf.gz}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ljmesi" maintainers: diff --git a/modules/nf-core/stranger/tests/main.nf.test b/modules/nf-core/stranger/tests/main.nf.test index 13c61f43..3c12a2c5 100644 --- a/modules/nf-core/stranger/tests/main.nf.test +++ b/modules/nf-core/stranger/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../expansionhunter/main.nf" process { """ - input[0] = [ + input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) diff --git a/modules/nf-core/stranger/tests/main.nf.test.snap b/modules/nf-core/stranger/tests/main.nf.test.snap index 3faa4e58..b0ce7380 100644 --- a/modules/nf-core/stranger/tests/main.nf.test.snap +++ b/modules/nf-core/stranger/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ], "vcf": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-03T08:09:27.725425094" + "timestamp": "2024-11-04T10:27:41.164430492" }, "homo_sapiens - vcf, repeat_catalogue": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ], "vcf": [ [ @@ -55,14 +55,14 @@ ] ], "versions": [ - "versions.yml:md5,68446c9e91e20825f7430db64e85aa7c" + "versions.yml:md5,a3f4f3b2391e96e77caa158199436fcb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-03T08:09:14.472394433" + "timestamp": "2024-11-04T10:27:31.05008915" } } \ No newline at end of file diff --git a/modules/nf-core/stranger/tests/nextflow.config b/modules/nf-core/stranger/tests/nextflow.config index 98459330..0ddc8bbd 100644 --- a/modules/nf-core/stranger/tests/nextflow.config +++ b/modules/nf-core/stranger/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'STRANGER' { - ext.prefix = "stranger" - } - } + withName: 'STRANGER' { + ext.prefix = "stranger" + } +} diff --git a/modules/nf-core/svdb/merge/environment.yml b/modules/nf-core/svdb/merge/environment.yml new file mode 100644 index 00000000..ab87ec70 --- /dev/null +++ b/modules/nf-core/svdb/merge/environment.yml @@ -0,0 +1,7 @@ +channels: + - conda-forge + - bioconda + +dependencies: + - bcftools=1.21 + - svdb=2.8.2 diff --git a/modules/nf-core/svdb/merge/main.nf b/modules/nf-core/svdb/merge/main.nf new file mode 100644 index 00000000..24c5effd --- /dev/null +++ b/modules/nf-core/svdb/merge/main.nf @@ -0,0 +1,105 @@ +process SVDB_MERGE { + tag "$meta.id" + label 'process_single' + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-375a758a4ca8c128fb9d38047a68a9f4322d2acd:b3615e06ef17566f2988a215ce9e10808c1d08bf-0': + 'biocontainers/mulled-v2-375a758a4ca8c128fb9d38047a68a9f4322d2acd:b3615e06ef17566f2988a215ce9e10808c1d08bf-0' }" + + input: + tuple val(meta), path(vcfs) + val(input_priority) + val(sort_inputs) + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + // Ensure priority list matches the number of VCFs if priority is provided + if (input_priority && vcfs.collect().size() != input_priority.collect().size()) { + error "If priority is used, one tag per VCF is needed" + } + + def input = "" + def prio = "" + if (input_priority) { + if (vcfs.collect().size() > 1 && sort_inputs) { + // make vcf-prioprity pairs and sort on VCF name, so priority is also sorted the same + def pairs = vcfs.indices.collect { [vcfs[it], input_priority[it]] } + pairs = pairs.sort { a, b -> a[0].name <=> b[0].name } + vcfs = pairs.collect { it[0] } + priority = pairs.collect { it[1] } + } else { + priority = input_priority + } + + // Build inputs + prio = "--priority ${input_priority.join(',')}" + input = "" + for (int index = 0; index < vcfs.collect().size(); index++) { + input += "${vcfs[index]}:${priority[index]} " + } + + } else { + // if there's no priority input just sort the vcfs by name if possible + input = (vcfs.collect().size() > 1 && sort_inputs) ? vcfs.sort { it.name } : vcfs + } + + def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : + "vcf.gz" + """ + svdb \\ + --merge \\ + $args \\ + $prio \\ + --vcf $input |\\ + bcftools view \\ + $args2 \\ + --threads ${task.cpus} \\ + --output ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def args2 = task.ext.args2 ?: '' + def extension = args2.contains("--output-type b") || args2.contains("-Ob") ? "bcf.gz" : + args2.contains("--output-type u") || args2.contains("-Ou") ? "bcf" : + args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : + args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : + "vcf.gz" + def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : + args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : + args2.contains("--write-index") || args2.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + """ + ${create_cmd} ${prefix}.${extension} + ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/svdb/merge/meta.yml b/modules/nf-core/svdb/merge/meta.yml new file mode 100644 index 00000000..c34a9cb1 --- /dev/null +++ b/modules/nf-core/svdb/merge/meta.yml @@ -0,0 +1,77 @@ +name: svdb_merge +description: The merge module merges structural variants within one or more vcf files. +keywords: + - structural variants + - vcf + - merge +tools: + - svdb: + description: structural variant database software + homepage: https://github.com/J35P312/SVDB + documentation: https://github.com/J35P312/SVDB/blob/master/README.md + licence: ["MIT"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - vcfs: + type: list + description: | + One or more VCF files. The order and number of files should correspond to + the order and number of tags in the `priority` input channel. + pattern: "*.{vcf,vcf.gz}" + - - input_priority: + type: list + description: | + Prioritize the input VCF files according to this list, + e.g ['tiddit','cnvnator']. The order and number of tags should correspond to + the order and number of VCFs in the `vcfs` input channel. + - - sort_inputs: + type: boolean + description: | + Should the input files be sorted by name. The priority tag will be sorted + together with it's corresponding VCF file. +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: VCF output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@ramprasadn" +maintainers: + - "@ramprasadn" + - "@fellen31" diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test b/modules/nf-core/svdb/merge/tests/main.nf.test new file mode 100644 index 00000000..6a79d7a0 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/main.nf.test @@ -0,0 +1,360 @@ +nextflow_process { + + name "Test Process SVDB_MERGE" + script "modules/nf-core/svdb/merge/main.nf" + config "./nextflow.config" + process "SVDB_MERGE" + tag "modules" + tag "modules_nfcore" + tag "svdb" + tag "svdb/merge" + + test("1 sample, [], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ]) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("1 sample, [], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ]) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("1 sample, ['tiddit'], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ]) + input[1] = ['tiddit'] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit --vcf test.vcf:tiddit") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("1 sample, ['tiddit'], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ]) + input[1] = ['tiddit'] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit --vcf test.vcf:tiddit") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("2 samples, [], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test2.vcf test.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("2 samples, [], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = [] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--vcf test.vcf test2.vcf") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("2 samples, ['tiddit', 'cnvnator'], []") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit,cnvnator --vcf test2.vcf:tiddit test.vcf:cnvnator") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("2 samples, ['tiddit', 'cnvnator'], true") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip[3].contains("--priority tiddit,cnvnator --vcf test.vcf:cnvnator test2.vcf:tiddit") }, // SVDB command line + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions + ).match() } + ) + } + } + + test("2 samples, [], [] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("2 samples, [], true - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = [] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("2 samples, ['tiddit', 'cnvnator'], [] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("2 samples, ['tiddit', 'cnvnator'], true - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + ]) + input[1] = ['tiddit', 'cnvnator'] + input[2] = true + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/svdb/merge/tests/main.nf.test.snap b/modules/nf-core/svdb/merge/tests/main.nf.test.snap new file mode 100644 index 00000000..e86662e5 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/main.nf.test.snap @@ -0,0 +1,294 @@ +{ + "1 sample, [], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "60fb4cab2aa891bebef8ffdbd0e41bc3", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:00:25.9277471" + }, + "2 samples, ['tiddit', 'cnvnator'], true - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:05:49.325618245" + }, + "2 samples, ['tiddit', 'cnvnator'], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "254e56e4fc8356d68424828438da66e3", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:02:27.964808463" + }, + "2 samples, [], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "7ad648266e57d405b5b01aaea4613d1c", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:02:11.013532413" + }, + "2 samples, ['tiddit', 'cnvnator'], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "254e56e4fc8356d68424828438da66e3", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:02:35.956320871" + }, + "1 sample, ['tiddit'], []": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "9dd588cd870672b78192f48ad440b5d", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:00:42.064583463" + }, + "1 sample, [], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "60fb4cab2aa891bebef8ffdbd0e41bc3", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:00:33.88572601" + }, + "1 sample, ['tiddit'], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=9, phased=false, phasedAutodetect=false]", + "9dd588cd870672b78192f48ad440b5d", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:00:50.18149857" + }, + "2 samples, [], true": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=2, variantCount=9, phased=false, phasedAutodetect=false]", + "de0a3b56cdee89e4c9cd4fbb4ad3391d", + [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:02:19.556799178" + }, + "2 samples, ['tiddit', 'cnvnator'], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:05:40.427970257" + }, + "2 samples, [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:05:24.34471465" + }, + "2 samples, [], true - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,bf8271626d334b2a827f94a2daacadd0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-24T09:05:32.529261733" + } +} \ No newline at end of file diff --git a/modules/nf-core/svdb/merge/tests/nextflow.config b/modules/nf-core/svdb/merge/tests/nextflow.config new file mode 100644 index 00000000..c267037c --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: 'SVDB_MERGE' { + ext.prefix = "merged" + ext.args2 = '--output-type z --no-version' + } +} diff --git a/modules/nf-core/svdb/merge/tests/tags.yml b/modules/nf-core/svdb/merge/tests/tags.yml new file mode 100644 index 00000000..8501d907 --- /dev/null +++ b/modules/nf-core/svdb/merge/tests/tags.yml @@ -0,0 +1,2 @@ +svdb/merge: + - modules/nf-core/svdb/merge/** diff --git a/modules/nf-core/svdb/query/environment.yml b/modules/nf-core/svdb/query/environment.yml new file mode 100644 index 00000000..2af55220 --- /dev/null +++ b/modules/nf-core/svdb/query/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::svdb=2.8.2 diff --git a/modules/nf-core/svdb/query/main.nf b/modules/nf-core/svdb/query/main.nf new file mode 100644 index 00000000..4ceb477a --- /dev/null +++ b/modules/nf-core/svdb/query/main.nf @@ -0,0 +1,77 @@ +process SVDB_QUERY { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/svdb:2.8.2--py39h5371cbf_0': + 'biocontainers/svdb:2.8.2--py39h5371cbf_0' }" + + input: + tuple val(meta), path(vcf) + val(in_occs) + val(in_frqs) + val(out_occs) + val(out_frqs) + path(vcf_dbs) + path(bedpe_dbs) + + output: + tuple val(meta), path("*_query.vcf") , emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def in_occ = "" + def in_frq = "" + def out_occ = "" + def out_frq = "" + def dbs_argument = vcf_dbs ? "--db ${vcf_dbs.join(',')}" : '' + def bedpeds_argument = bedpe_dbs ? "--bedpedb ${bedpe_dbs.join(',')}" : '' + if (in_occs) { + in_occ = "--in_occ ${in_occs.join(',')}" + } + if (in_frqs) { + in_frq = "--in_frq ${in_frqs.join(',')}" + } + if (out_occs) { + out_occ = "--out_occ ${out_occs.join(',')}" + } + if (out_frqs) { + out_frq = "--out_frq ${out_frqs.join(',')}" + } + if ( vcf_dbs && bedpe_dbs ) error "bedpedb input is not compatible with db inputs" + """ + svdb \\ + --query \\ + $in_occ \\ + $in_frq \\ + $out_occ \\ + $out_frq \\ + $args \\ + $dbs_argument \\ + $bedpeds_argument \\ + --query_vcf $vcf \\ + --prefix ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_query.vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svdb: \$( echo \$(svdb) | head -1 | sed 's/usage: SVDB-\\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/svdb/query/meta.yml b/modules/nf-core/svdb/query/meta.yml new file mode 100644 index 00000000..f8cd33c8 --- /dev/null +++ b/modules/nf-core/svdb/query/meta.yml @@ -0,0 +1,63 @@ +name: svdb_query +description: Query a structural variant database, using a vcf file as query +keywords: + - structural variants + - query + - svdb +tools: + - svdb: + description: structural variant database software + homepage: https://github.com/J35P312/SVDB + documentation: https://github.com/J35P312/SVDB/blob/master/README.md + licence: ["MIT"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: query vcf file + pattern: "*.{vcf,vcf.gz}" + - - in_occs: + type: list + description: A list of allele count tags + - - in_frqs: + type: list + description: A list of allele frequency tags + - - out_occs: + type: list + description: A list of allele count tags + - - out_frqs: + type: list + description: A list of allele frequency tags + - - vcf_dbs: + type: file + description: path to a database vcf, or a comma separated list of vcfs + pattern: "*.{vcf,vcf.gz}" + - - bedpe_dbs: + type: file + description: path to a SV database of the following format chrA-posA-chrB-posB-type-count-frequency, + or a comma separated list of files + pattern: "*.{bedpe}" +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*_query.vcf": + type: file + description: Annotated output VCF file + pattern: "*_query.vcf" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@ramprasadn" diff --git a/modules/nf-core/svdb/query/tests/main.nf.test b/modules/nf-core/svdb/query/tests/main.nf.test new file mode 100644 index 00000000..72e82915 --- /dev/null +++ b/modules/nf-core/svdb/query/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process SVDB_QUERY" + script "modules/nf-core/svdb/query/main.nf" + process "SVDB_QUERY" + tag "modules" + tag "modules_nfcore" + tag "svdb" + tag "svdb/query" + + test("svdb query") { + + when { + process { + """ + input[0] = Channel.of([ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/sv_query.vcf.gz', checkIfExists: true) ] + ]) + input[1] = ['AC'] + input[2] = ['AF'] + input[3] = ['gnomad_svAC'] + input[4] = ['gnomad_svAF'] + input[5] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/gnomAD.r2.1.1-sv.vcf.gz', checkIfExists: true)]) + input[6] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(file(process.out.vcf[0][1]).name, file(process.out.versions[0]).name).match()} + ) + } + } +} diff --git a/modules/nf-core/svdb/query/tests/main.nf.test.snap b/modules/nf-core/svdb/query/tests/main.nf.test.snap new file mode 100644 index 00000000..65f2fcfa --- /dev/null +++ b/modules/nf-core/svdb/query/tests/main.nf.test.snap @@ -0,0 +1,13 @@ +{ + "svdb query": { + "content": [ + "test_query.vcf", + "versions.yml" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2023-11-22T14:56:08.90223505" + } +} \ No newline at end of file diff --git a/modules/nf-core/svdb/query/tests/tags.yml b/modules/nf-core/svdb/query/tests/tags.yml new file mode 100644 index 00000000..f4096378 --- /dev/null +++ b/modules/nf-core/svdb/query/tests/tags.yml @@ -0,0 +1,2 @@ +svdb/query: + - modules/nf-core/svdb/query/** diff --git a/modules/nf-core/tabix/bgzip/environment.yml b/modules/nf-core/tabix/bgzip/environment.yml index 56cc0fb1..017c259d 100644 --- a/modules/nf-core/tabix/bgzip/environment.yml +++ b/modules/nf-core/tabix/bgzip/environment.yml @@ -1,8 +1,7 @@ -name: tabix_bgzip channels: - conda-forge - bioconda - - defaults + dependencies: - - bioconda::tabix=1.11 - bioconda::htslib=1.20 + - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgzip/meta.yml b/modules/nf-core/tabix/bgzip/meta.yml index 621d49ea..131e92cf 100644 --- a/modules/nf-core/tabix/bgzip/meta.yml +++ b/modules/nf-core/tabix/bgzip/meta.yml @@ -13,33 +13,42 @@ tools: documentation: http://www.htslib.org/doc/bgzip.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: file to compress or to decompress + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: file to compress or to decompress output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - output: - type: file - description: Output compressed/decompressed file - pattern: "*." + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${output}: + type: file + description: Output compressed/decompressed file + pattern: "*." - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${output}.gzi: + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/tabix/bgziptabix/environment.yml b/modules/nf-core/tabix/bgziptabix/environment.yml index b9644de9..017c259d 100644 --- a/modules/nf-core/tabix/bgziptabix/environment.yml +++ b/modules/nf-core/tabix/bgziptabix/environment.yml @@ -1,8 +1,7 @@ -name: tabix_bgziptabix channels: - conda-forge - bioconda - - defaults + dependencies: - - bioconda::tabix=1.11 - bioconda::htslib=1.20 + - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgziptabix/main.nf b/modules/nf-core/tabix/bgziptabix/main.nf index 05041f49..22f37a77 100644 --- a/modules/nf-core/tabix/bgziptabix/main.nf +++ b/modules/nf-core/tabix/bgziptabix/main.nf @@ -34,10 +34,11 @@ process TABIX_BGZIPTABIX { stub: def prefix = task.ext.prefix ?: "${meta.id}" + def args2 = task.ext.args2 ?: '' + def index = args2.contains("-C ") || args2.contains("--csi") ? "csi" : "tbi" """ echo "" | gzip > ${prefix}.${input.getExtension()}.gz - touch ${prefix}.${input.getExtension()}.gz.tbi - touch ${prefix}.${input.getExtension()}.gz.csi + touch ${prefix}.${input.getExtension()}.gz.${index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/tabix/bgziptabix/meta.yml b/modules/nf-core/tabix/bgziptabix/meta.yml index 438aba4d..806fbc12 100644 --- a/modules/nf-core/tabix/bgziptabix/meta.yml +++ b/modules/nf-core/tabix/bgziptabix/meta.yml @@ -13,38 +13,50 @@ tools: documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - tab: - type: file - description: TAB-delimited genome position file - pattern: "*.{bed,gff,sam,vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Sorted tab-delimited genome file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - gz: - type: file - description: Output compressed file - pattern: "*.{gz}" - - tbi: - type: file - description: tabix index file - pattern: "*.{gz.tbi}" - - csi: - type: file - description: tabix alternate index file - pattern: "*.{gz.csi}" + - gz_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: bgzipped tab-delimited genome file + pattern: "*.gz" + - "*.tbi": + type: file + description: tabix index file + pattern: "*.tbi" + - gz_csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: bgzipped tab-delimited genome file + pattern: "*.gz" + - "*.csi": + type: file + description: csi index file + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@DLBPointon" diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test index 1a84d74f..4d4130dc 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test @@ -91,4 +91,33 @@ nextflow_process { } + test("sarscov2_bed_tbi_stub") { + config "./tabix_tbi.config" + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert snapshot( + file(process.out.gz_tbi[0][1]).name + ).match("tbi_stub") + } + ) + } + + } + } diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap index c166ea72..fb87799b 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap @@ -91,6 +91,47 @@ }, "timestamp": "2024-02-19T14:51:00.548801" }, + "sarscov2_bed_tbi_stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + ], + "gz_csi": [ + + ], + "gz_tbi": [ + [ + { + "id": "test" + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-25T14:45:18.533169949" + }, "csi_stub": { "content": [ "test.bed.gz" @@ -101,6 +142,16 @@ }, "timestamp": "2024-02-19T14:51:09.218454" }, + "tbi_stub": { + "content": [ + "test.bed.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-25T14:45:18.550930179" + }, "tbi_test": { "content": [ "tbi_test.bed.gz" @@ -115,13 +166,7 @@ "content": [ { "0": [ - [ - { - "id": "test" - }, - "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "1": [ [ @@ -145,13 +190,7 @@ ] ], "gz_tbi": [ - [ - { - "id": "test" - }, - "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "versions": [ "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" @@ -159,9 +198,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-19T11:29:45.105209991" + "timestamp": "2024-09-25T14:44:19.786135972" } } \ No newline at end of file diff --git a/modules/nf-core/tabix/tabix/environment.yml b/modules/nf-core/tabix/tabix/environment.yml index 4d1f9dd4..017c259d 100644 --- a/modules/nf-core/tabix/tabix/environment.yml +++ b/modules/nf-core/tabix/tabix/environment.yml @@ -1,9 +1,6 @@ -name: tabix_tabix - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::htslib=1.20 diff --git a/modules/nf-core/tabix/tabix/meta.yml b/modules/nf-core/tabix/tabix/meta.yml index ae5b4f43..7864832d 100644 --- a/modules/nf-core/tabix/tabix/meta.yml +++ b/modules/nf-core/tabix/tabix/meta.yml @@ -11,34 +11,43 @@ tools: documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - tab: - type: file - description: TAB-delimited genome position file compressed with bgzip - pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - tab: + type: file + description: TAB-delimited genome position file compressed with bgzip + pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - tbi: - type: file - description: tabix index file - pattern: "*.{tbi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: tabix index file + pattern: "*.{tbi}" - csi: - type: file - description: coordinate sorted index file - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: coordinate sorted index file + pattern: "*.{csi}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/trgt/genotype/environment.yml b/modules/nf-core/trgt/genotype/environment.yml new file mode 100644 index 00000000..721e0df3 --- /dev/null +++ b/modules/nf-core/trgt/genotype/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::trgt=1.2.0" diff --git a/modules/nf-core/trgt/genotype/main.nf b/modules/nf-core/trgt/genotype/main.nf new file mode 100644 index 00000000..3fa0b7b4 --- /dev/null +++ b/modules/nf-core/trgt/genotype/main.nf @@ -0,0 +1,56 @@ +process TRGT_GENOTYPE { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/trgt:1.2.0--h9ee0642_0': + 'biocontainers/trgt:1.2.0--h9ee0642_0' }" + + input: + tuple val(meta) , path(bam), path(bai), val(karyotype) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(repeats) + + output: + tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.spanning.bam"), emit: bam , optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def karyo = karyotype ? "--karyotype ${karyotype}" : "" + """ + trgt genotype \\ + $args \\ + --genome ${fasta} \\ + --reads ${bam} \\ + --repeats ${repeats} \\ + ${karyo} \\ + --threads ${task.cpus} \\ + --output-prefix ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.spanning.bam + echo "" | gzip > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/trgt/genotype/meta.yml b/modules/nf-core/trgt/genotype/meta.yml new file mode 100644 index 00000000..bd17e4ca --- /dev/null +++ b/modules/nf-core/trgt/genotype/meta.yml @@ -0,0 +1,98 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "trgt_genotype" +description: Tandem repeat genotyping from PacBio HiFi data +keywords: + - repeat expansion + - pacbio + - genomics +tools: + - "trgt": + description: "Tandem repeat genotyping and visualization from PacBio HiFi data" + homepage: "https://github.com/PacificBiosciences/trgt" + documentation: "https://github.com/PacificBiosciences/trgt/blob/main/docs/tutorial.md" + tool_dev_url: "https://github.com/PacificBiosciences/trgt" + doi: "10.1038/s41587-023-02057-3" + licence: + ["Pacific Biosciences Software License (https://github.com/PacificBiosciences/trgt/blob/main/LICENSE.md)"] + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: Sorted BAM file + pattern: "*.bam" + - bai: + type: file + description: "Index of the BAM file" + pattern: "*.bam" + - karyotype: + type: string + description: "Karyotype of the sample. Either XX or XY. Defaults to XX if not given" + enum: + - XX + - XY + - - meta2: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fasta: + type: file + description: "FASTA reference file" + pattern: "*.{fasta,fa,fna}" + - - meta3: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fai: + type: file + description: "Index for FASTA file" + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy map containing repeat information + e.g. `[ id: 'repeats' ]` + - repeats: + type: file + description: "BED file with repeat coordinates" + pattern: "*.bed" + +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.vcf.gz": + type: file + description: "VCF file with repeat genotypes" + pattern: "*.vcf.gz" + - bam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.spanning.bam": + type: file + description: BAM file with pieces of reads aligning to repeats + pattern: "*.spanning.bam" + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@Schmytzi" + - "@fellen31" +maintainers: + - "@Schmytzi" diff --git a/modules/nf-core/trgt/genotype/tests/main.nf.test b/modules/nf-core/trgt/genotype/tests/main.nf.test new file mode 100644 index 00000000..d93a2e96 --- /dev/null +++ b/modules/nf-core/trgt/genotype/tests/main.nf.test @@ -0,0 +1,154 @@ +// nf-core modules test trgt +nextflow_process { + + name "Test Process TRGT_GENOTYPE" + script "../main.nf" + process "TRGT_GENOTYPE" + + tag "modules" + tag "modules_nfcore" + tag "trgt" + tag "trgt/genotype" + tag "samtools/faidx" + tag "gunzip" + + setup { + run("GUNZIP"){ + script "../../../gunzip/main.nf" + process { + """ + input[0] = [ + [ id : 'chr22' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22_chr22_KI270734v1_random/sequence/genome.fa.gz', checkIfExists: true) + ] + """ + } + } + run("SAMTOOLS_FAIDX"){ + script "../../../samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + } + + test("homo sapiens - [bam,bai,XX], [fa,fai], bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - [bam,bai,[]], [fa,fai], bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - [bam,bai,XX], [fa,fai], bed - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - [bam,bai,[]], [fa,fai], bed - stub") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/trgt/genotype/tests/main.nf.test.snap b/modules/nf-core/trgt/genotype/tests/main.nf.test.snap new file mode 100644 index 00000000..9e50fb81 --- /dev/null +++ b/modules/nf-core/trgt/genotype/tests/main.nf.test.snap @@ -0,0 +1,198 @@ +{ + "homo sapiens - [bam,bai,XX], [fa,fai], bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,4e5b6028e3ea3d06829ca18af1cc492e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,645a2c199d04aaf733ce84247f0b0f37" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,645a2c199d04aaf733ce84247f0b0f37" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,4e5b6028e3ea3d06829ca18af1cc492e" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:07:55.029938504" + }, + "homo sapiens - [bam,bai,[]], [fa,fai], bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:08:33.937952067" + }, + "homo sapiens - [bam,bai,XX], [fa,fai], bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:16:39.197756426" + }, + "homo sapiens - [bam,bai,[]], [fa,fai], bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "2": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.spanning.bam:md5,8d6d1bf813109870692d2f20d59399e7" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,0337e3287dcc71728c36c185dae7738f" + ] + ], + "versions": [ + "versions.yml:md5,b773615cf974b094032306822d32017b" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T16:08:07.631383773" + } +} \ No newline at end of file diff --git a/modules/nf-core/trgt/merge/environment.yml b/modules/nf-core/trgt/merge/environment.yml new file mode 100644 index 00000000..614dc872 --- /dev/null +++ b/modules/nf-core/trgt/merge/environment.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::trgt=1.2.0" diff --git a/modules/nf-core/bcftools/merge/main.nf b/modules/nf-core/trgt/merge/main.nf similarity index 55% rename from modules/nf-core/bcftools/merge/main.nf rename to modules/nf-core/trgt/merge/main.nf index 41dc1a0d..73e51b02 100644 --- a/modules/nf-core/bcftools/merge/main.nf +++ b/modules/nf-core/trgt/merge/main.nf @@ -1,64 +1,63 @@ -process BCFTOOLS_MERGE { +process TRGT_MERGE { tag "$meta.id" label 'process_medium' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://depot.galaxyproject.org/singularity/trgt:1.2.0--h9ee0642_0': + 'biocontainers/trgt:1.2.0--h9ee0642_0' }" input: - tuple val(meta), path(vcfs), path(tbis) - tuple val(meta2), path(fasta) - tuple val(meta3), path(fai) - path(bed) + tuple val(meta) , path(vcfs), path(tbis) + tuple val(meta2), path(fasta) // optional + tuple val(meta3), path(fai) // optional output: - tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: merged_variants - path "versions.yml" , emit: versions + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - def regions = bed ? "--regions-file $bed" : "" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" + def output = args.contains("--output ") || args.contains("--output=") || args.contains("-o ") ? "" : "--output ${prefix}.${extension}" + def reference = fasta ? "--genome ${fasta}" : "" """ - bcftools merge \\ + trgt merge \\ $args \\ - $regions \\ - --threads $task.cpus \\ - --output ${prefix}.${extension} \\ - $vcfs + $reference \\ + $output \\ + --vcf ${vcfs} cat <<-END_VERSIONS > versions.yml "${task.process}": - bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') END_VERSIONS """ stub: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" """ - touch ${prefix}.${extension} + $create_cmd ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": - bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + trgt: \$(trgt --version |& sed '1!d ; s/trgt //') END_VERSIONS """ } diff --git a/modules/nf-core/trgt/merge/meta.yml b/modules/nf-core/trgt/merge/meta.yml new file mode 100644 index 00000000..e8b79cb2 --- /dev/null +++ b/modules/nf-core/trgt/merge/meta.yml @@ -0,0 +1,80 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "trgt_merge" +description: Merge TRGT VCFs from multiple samples +keywords: + - trgt + - repeat expansion + - pacbio + - genomics +tools: + - "trgt": + description: "Tandem repeat genotyping and visualization from PacBio HiFi data" + homepage: "https://github.com/PacificBiosciences/trgt" + documentation: "https://github.com/PacificBiosciences/trgt/blob/main/docs/tutorial.md" + tool_dev_url: "https://github.com/PacificBiosciences/trgt" + doi: "10.1038/s41587-023-02057-3" + licence: + ["Pacific Biosciences Software License (https://github.com/PacificBiosciences/trgt/blob/main/LICENSE.md)"] + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - vcfs: + type: file + description: | + List containing VCF files from TRGT + Must contain at least 2 elements unless `--force-single` is given + Samples in each VCf must be pairwise disjoint + - tbis: + type: file + description: | + List containing indexes of VCF files from TRGT + Must contain at least 2 elements unless `--force-single` is given + - - meta2: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fasta: + type: file + description: | + FASTA reference file (optional) + Required if VCFs were generated with TRGT pre 1.0 + pattern: "*.{fasta,fa,fna}" + - - meta3: + type: map + description: | + Groovy map containing reference information + e.g. `[ id: 'genome' ]` + - fai: + type: file + description: | + Index for FASTA file (optional) + Required if VCFs were generated with TRGT pre 1.0 + pattern: "*.fai" + +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: "Merged output file" + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@Schmytzi" +maintainers: + - "@Schmytzi" diff --git a/modules/nf-core/trgt/merge/tests/main.nf.test b/modules/nf-core/trgt/merge/tests/main.nf.test new file mode 100644 index 00000000..dfccd4f9 --- /dev/null +++ b/modules/nf-core/trgt/merge/tests/main.nf.test @@ -0,0 +1,193 @@ +// nf-core modules test trgt/merge +nextflow_process { + + name "Test Process TRGT_MERGE" + script "../main.nf" + process "TRGT_MERGE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "trgt" + tag "trgt/merge" + tag "trgt/genotype" + tag "samtools/faidx" + tag "samtools/sort" + tag "samtools/index" + tag "bcftools/sort" + tag "gunzip" + + setup { + run("GUNZIP"){ + script "../../../gunzip/main.nf" + process { + """ + input[0] = [ + [ id : 'chr22' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22_chr22_KI270734v1_random/sequence/genome.fa.gz', checkIfExists: true) + ] + """ + } + } + run("SAMTOOLS_FAIDX"){ + script "../../../samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + run("TRGT_GENOTYPE"){ + script "../../genotype/main.nf" + process { + """ + input[0] = Channel.fromList([ + tuple( + [ id:'test1' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ), + tuple( + [ id:'test2' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/test.sorted.bam.bai', checkIfExists: true), + 'XX' + ) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of('chr22\t18890357\t18890451\tID=TEST;MOTIFS=AT;STRUC=(AT)n') + .collectFile(name : 'repeats.bed', newLine: false) + .map { file -> [ [ id : 'chr22' ], file ] } + .first() + """ + } + } + run("BCFTOOLS_SORT"){ + script "../../../bcftools/sort/main.nf" + process { + """ + input[0] = TRGT_GENOTYPE.out.vcf + """ + } + } + } + test("homo sapiens - 2 VCFs") { + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .map { meta, vcf, tbi -> [ [ id : 'test' ], vcf, tbi ] } + .groupTuple() + input[1] = [[],[]] + input[2] = [[],[]] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.sampleCount, + process.out.versions + ).match() } + ) + } + } + test("homo sapiens - 2 VCFs - reference") { + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .map { meta, vcf, tbi -> [ [ id : 'test' ], vcf, tbi ] } + .groupTuple() + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.sampleCount, + process.out.versions + ).match() } + ) + } + } + test("homo sapiens - 1 VCF") { + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .first() + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + """ + } + } + then { + assertAll( + { assert !process.success } + ) + } + } + test("homo sapiens - 1 VCF - --force-single") { + when { + params { + trgt_merge_args = "--force-single" + } + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .first() + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(process.out.vcf.get(0).get(1)).vcf.summary, + path(process.out.vcf.get(0).get(1)).vcf.sampleCount, + process.out.versions + ).match() } + ) + } + } + test("homo sapiens - 2 VCFs - stub") { + options "-stub" + when { + process { + """ + input[0] = BCFTOOLS_SORT.out.vcf + .join(BCFTOOLS_SORT.out.tbi) + .map { meta, vcf, tbi -> [ [ id : 'test' ], vcf, tbi ] } + .groupTuple() + input[1] = [[],[]] + input[2] = [[],[]] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/trgt/merge/tests/main.nf.test.snap b/modules/nf-core/trgt/merge/tests/main.nf.test.snap new file mode 100644 index 00000000..73f306b0 --- /dev/null +++ b/modules/nf-core/trgt/merge/tests/main.nf.test.snap @@ -0,0 +1,80 @@ +{ + "homo sapiens - 2 VCFs - reference": { + "content": [ + "75acbf6205a44ca44d6fc644dda57d82", + "VcfFile [chromosomes=[chr22], sampleCount=2, variantCount=1, phased=false, phasedAutodetect=false]", + 2, + [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T14:52:26.329527707" + }, + "homo sapiens - 2 VCFs": { + "content": [ + "75acbf6205a44ca44d6fc644dda57d82", + "VcfFile [chromosomes=[chr22], sampleCount=2, variantCount=1, phased=false, phasedAutodetect=false]", + 2, + [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T14:39:54.475134386" + }, + "homo sapiens - 2 VCFs - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T15:06:23.198648143" + }, + "homo sapiens - 1 VCF - --force-single": { + "content": [ + "6e09773892c37f17e01c9771e8ef2171", + "VcfFile [chromosomes=[chr22], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]", + 1, + [ + "versions.yml:md5,ac3a6dca80725cee1bf724975e54c067" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-15T15:01:59.765895584" + } +} \ No newline at end of file diff --git a/modules/nf-core/trgt/merge/tests/nextflow.config b/modules/nf-core/trgt/merge/tests/nextflow.config new file mode 100644 index 00000000..b5caec9f --- /dev/null +++ b/modules/nf-core/trgt/merge/tests/nextflow.config @@ -0,0 +1,15 @@ +params { + trgt_merge_args = "" +} +process { + withName: "BCFTOOLS_SORT" { + ext.args = "--write-index=tbi --output-type z" + ext.prefix = { "sorted_${meta.id}" } + } + withName: "TRGT_GENOTYPE" { + ext.args = { "--sample-name ${meta.id}"} + } + withName: "TRGT_MERGE" { + ext.args = params.trgt_merge_args + } +} diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml index 4f498244..c7794856 100644 --- a/modules/nf-core/untar/environment.yml +++ b/modules/nf-core/untar/environment.yml @@ -1,8 +1,6 @@ -name: untar channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::grep=3.11 - conda-forge::sed=4.8 diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 9bd8f554..867f56ea 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -11,8 +11,8 @@ process UNTAR { tuple val(meta), path(archive) output: - tuple val(meta), path("$prefix"), emit: untar - path "versions.yml" , emit: versions + tuple val(meta), path("$dir"), emit: untar + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -21,9 +21,9 @@ process UNTAR { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) - + dir = prefix.split('/')[1] """ - mkdir $prefix + mkdir -p $prefix ## Ensures --strip-components only applied when top level of tar contents is a directory ## If just files or multiple directories, place all in prefix @@ -51,8 +51,9 @@ process UNTAR { stub: prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) + dir = prefix.split('/')[1] """ - mkdir ${prefix} + mkdir -p ${prefix} ## Dry-run untaring the archive to get the files and place all in prefix if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then for i in `tar -tf ${archive}`; diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index a9a2110f..290346b3 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -10,30 +10,33 @@ tools: Extract tar.gz files. documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be untar - pattern: "*.{tar}.{gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be untar + pattern: "*.{tar}.{gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - untar: - type: directory - description: Directory containing contents of archive - pattern: "*/" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - $prefix: + type: directory + description: Directory containing contents of archive + pattern: "*/" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/untar/untar.diff b/modules/nf-core/untar/untar.diff new file mode 100644 index 00000000..2f1c8b6d --- /dev/null +++ b/modules/nf-core/untar/untar.diff @@ -0,0 +1,45 @@ +Changes in module 'nf-core/untar' +'modules/nf-core/untar/meta.yml' is unchanged +Changes in 'untar/main.nf': +--- modules/nf-core/untar/main.nf ++++ modules/nf-core/untar/main.nf +@@ -11,8 +11,8 @@ + tuple val(meta), path(archive) + + output: +- tuple val(meta), path("$prefix"), emit: untar +- path "versions.yml" , emit: versions ++ tuple val(meta), path("$dir"), emit: untar ++ path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when +@@ -21,9 +21,9 @@ + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) +- ++ dir = prefix.split('/')[1] + """ +- mkdir $prefix ++ mkdir -p $prefix + + ## Ensures --strip-components only applied when top level of tar contents is a directory + ## If just files or multiple directories, place all in prefix +@@ -51,8 +51,9 @@ + + stub: + prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) ++ dir = prefix.split('/')[1] + """ +- mkdir ${prefix} ++ mkdir -p ${prefix} + ## Dry-run untaring the archive to get the files and place all in prefix + if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then + for i in `tar -tf ${archive}`; + +'modules/nf-core/untar/environment.yml' is unchanged +'modules/nf-core/untar/tests/tags.yml' is unchanged +'modules/nf-core/untar/tests/main.nf.test.snap' is unchanged +'modules/nf-core/untar/tests/main.nf.test' is unchanged +************************************************************ diff --git a/nextflow.config b/nextflow.config index 3551d731..5dd6f78f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -10,64 +10,74 @@ params { // Input options - input = null - bed = null - cadd_resources = null - cadd_prescored = null - par_regions = null - tandem_repeats = null - trgt_repeats = null - variant_catalog = null - reduced_penetrance = null - score_config_snv = null - snp_db = null - variant_consequences_snv = null - vep_cache = null - vep_plugin_files = null - hificnv_xy = null - hificnv_xx = null - hificnv_exclude = null - somalier_sites = null - deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' + input = null + target_regions = null + cadd_resources = null + cadd_prescored_indels = null + filter_variants_hgnc_ids = null + par_regions = null + tandem_repeats = null + trgt_repeats = null + stranger_repeat_catalog = null + genmod_reduced_penetrance = null + genmod_score_config_snvs = null + genmod_score_config_svs = null + echtvar_snv_databases = null + svdb_sv_databases = null + variant_consequences_snvs = null + variant_consequences_svs = null + vep_cache = null + vep_plugin_files = null + hificnv_expected_xy_cn = null + hificnv_expected_xx_cn = null + hificnv_excluded_regions = null + somalier_sites = null // Skip parts of the workflow - skip_aligned_read_qc = false - skip_raw_read_qc = false - skip_assembly_wf = params.preset == 'ONT_R10' ? true : false - skip_mapping_wf = false - skip_methylation_wf = params.preset == 'pacbio' ? true : false - skip_rank_variants = false - skip_repeat_calling = params.preset == 'ONT_R10' ? true : false - skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false - skip_phasing_wf = false - skip_short_variant_calling = false - skip_snv_annotation = false - skip_cnv_calling = false - skip_call_paralogs = false + skip_genome_assembly = params.preset == 'ONT_R10' ? true : false + skip_call_paralogs = false + skip_cnv_calling = false + skip_alignment = false + skip_methylation_pileups = params.preset == 'pacbio' ? true : false + skip_phasing = false + skip_qc = false + skip_rank_variants = false + skip_repeat_calling = params.preset == 'ONT_R10' ? true : false + skip_repeat_annotation = params.preset == 'ONT_R10' ? true : false + skip_snv_calling = false + skip_snv_annotation = false + skip_sv_annotation = false - preset = 'revio' - variant_caller = 'deepvariant' - phaser = 'whatshap' - hifiasm_mode = 'hifi-only' + deepvariant_model_type = params.preset == 'ONT_R10' ? 'ONT_R104' : 'PACBIO' + minimap2_read_mapping_preset = params.preset == 'ONT_R10' ? 'lr:hq' : 'map-hifi' + filter_snvs_expression = '' + filter_svs_expression = '' + phaser = 'longphase' + sv_caller = 'severus' + preset = 'revio' + hifiasm_mode = 'hifi-only' + snv_caller = 'deepvariant' + vep_cache_version = 110 - vep_cache_version = 110 + // Test config options + extra_modkit_options = '' + extra_vep_options = '' + extra_paraphase_options = '' + extra_hifiasm_options = '' // Preprocessing/parallelisation - parallel_snv = 13 - parallel_alignments = 1 + snv_calling_processes = 13 + alignment_processes = 8 // References - fasta = null - genome = null - igenomes_base = 's3://ngi-igenomes/igenomes' - igenomes_ignore = true + fasta = null // MultiQC options - multiqc_config = null - multiqc_title = null - multiqc_logo = null - max_multiqc_email_size = '25.MB' - multiqc_methods_description = null + multiqc_config = null + multiqc_title = null + multiqc_logo = null + max_multiqc_email_size = '25.MB' + multiqc_methods_description = null // Boilerplate options outdir = null @@ -77,53 +87,30 @@ params { plaintext_email = false monochrome_logs = false hook_url = null - help = false + + help_full = false + show_hidden = false version = false - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' // 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 + 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 - validationSkipDuplicateCheck = false - validationS3PathCheck = false - monochromeLogs = false + 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 genomic-medicine-sweden/nallo custom profiles from different institutions. -// Warning: Uncomment only if a pipeline-specific institutional config already exists on nf-core/configs! -//try { -// includeConfig "${params.custom_config_base}/pipeline/nallo.config" -//} catch (Exception e) { -// System.err.println("WARNING: Could not load nf-core/config/nallo profiles: ${params.custom_config_base}/pipeline/nallo.config") -//} - profiles { debug { dumpHashes = true @@ -138,7 +125,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 { @@ -227,25 +214,18 @@ profiles { test_full { includeConfig 'conf/test_full.config' } } -// 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 -} +// 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' -// Load igenomes.config if required -if (!params.igenomes_ignore) { - includeConfig 'conf/igenomes.config' -} else { - params.genomes = [:] -} // Export these variables to prevent local Python/R libraries from conflicting with those in the container // The JULIA depot path has been adjusted to a fixed path `/usr/local/share/julia` that needs to be used for packages in the container. // See https://apeltzer.github.io/post/03-julia-lang-nextflow/ for details on that. Once we have a common agreement on where to keep Julia packages, this is adjustable. @@ -257,8 +237,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 @@ -287,9 +274,45 @@ manifest { homePage = 'https://github.com/genomic-medicine-sweden/nallo' description = """Long-read variant calling pipeline""" mainScript = 'main.nf' - nextflowVersion = '!>=23.04.0' - version = '0.3.1' - doi = '' + nextflowVersion = '!>=24.04.2' + version = '0.4.0' + doi = '10.5281/zenodo.13748210' +} + +// Nextflow plugins +plugins { + id 'nf-schema@2.2.0' // 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[0;34m _ _ _ _ +\033[0;34m __ _ ___ _ __ ___ _ __ ___ (_) ___ _ __ ___ ___ __| (_) ___(_)_ __ ___ +\033[0;34m / _` |/ _ \\ '_ \\ / _ \\| '_ ` _ \\| |/ __|____| '_ ` _ \\ / _ \\/ _` | |/ __| | '_ \\ / _ \\_____ +\033[0;34m | (_| | __/ | | | (_) | | | | | | | (_|_____| | | | | | __/ (_| | | (__| | | | | __/_____| +\033[0;34m \\__, |\\___|_| |_|\\___/|_| |_| |_|_|\\___| |_| |_| |_|\\___|\\__,_|_|\\___|_|_| |_|\\___| +\033[0;34m |___/ _____ __| | ___ _ __ / / __ __ _| | | ___ +\033[0;34m / __\\ \\ /\\ / / _ \\/ _` |/ _ \\ '_ \\ / / '_ \\ / _` | | |/ _ \\ +\033[0;34m \\__ \\\\ V V / __/ (_| | __/ | | |/ /| | | | (_| | | | (_) | +\033[0;34m |___/ \\_/\\_/ \\___|\\__,_|\\___|_| |_/_/ |_| |_|\\__,_|_|_|\\___/ +\033[0;34m +""" + afterText = """${manifest.doi ? "* 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\n https://doi.org/10.1038/s41587-020-0439-x + +* Software dependencies\n https://github.com/${manifest.name}/blob/master/CITATIONS.md +""" + } + summary { + beforeText = validation.help.beforeText + afterText = validation.help.afterText + } } // Load modules.config for DSL2 module specific options @@ -297,11 +320,15 @@ includeConfig 'conf/base.config' includeConfig 'conf/modules/annotate_cadd.config' includeConfig 'conf/modules/annotate_consequence_pli.config' includeConfig 'conf/modules/annotate_repeat_expansions.config' +includeConfig 'conf/modules/annotate_svs.config' includeConfig 'conf/modules/general.config' includeConfig 'conf/modules/bam_infer_sex.config' +includeConfig 'conf/modules/call_cnvs.config' includeConfig 'conf/modules/call_paralogs.config' includeConfig 'conf/modules/call_repeat_expansions.config' +includeConfig 'conf/modules/call_svs.config' includeConfig 'conf/modules/convert_input_files.config' +includeConfig 'conf/modules/filter_variants.config' includeConfig 'conf/modules/assembly_variant_calling.config' includeConfig 'conf/modules/genome_assembly.config' includeConfig 'conf/modules/methylation.config' @@ -312,39 +339,4 @@ includeConfig 'conf/modules/scatter_genome.config' includeConfig 'conf/modules/rank_variants.config' includeConfig 'conf/modules/short_variant_calling.config' includeConfig 'conf/modules/snv_annotation.config' -includeConfig 'conf/modules/structural_variant_calling.config' includeConfig 'conf/modules/short_variant_calling.config' -includeConfig 'conf/modules/cnv.config' - -// 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 - } - } -} diff --git a/nextflow_schema.json b/nextflow_schema.json index 40f4005b..f283d38f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,47 +1,41 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/genomic-medicine-sweden/nallo/master/nextflow_schema.json", "title": "genomic-medicine-sweden/nallo pipeline parameters", "description": "Long-read variant calling pipeline", "type": "object", - "definitions": { + "$defs": { "workflow_skip_options": { "title": "Workflow skip options", "type": "object", "description": "Allows skipping certain parts of the pipeline", "default": "", "properties": { - "skip_aligned_read_qc": { + "skip_qc": { "type": "boolean", "fa_icon": "fas fa-fast-forward", - "description": "Skip QC of aligned reads", + "description": "Skip QC of reads", "default": false }, - "skip_raw_read_qc": { - "type": "boolean", - "fa_icon": "fas fa-fast-forward", - "description": "Skip QC of unaligned (raw) reads", - "default": false - }, - "skip_short_variant_calling": { + "skip_snv_calling": { "type": "boolean", "description": "Skip short variant calling", "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_assembly_wf": { + "skip_genome_assembly": { "type": "boolean", "description": "Skip genome assembly and assembly variant calling", "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_mapping_wf": { + "skip_alignment": { "type": "boolean", "description": "Skip read mapping (alignment)", "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_methylation_wf": { + "skip_methylation_pileups": { "type": "boolean", "description": "Skip generation of methylation pileups", "fa_icon": "fas fa-fast-forward", @@ -59,7 +53,7 @@ "fa_icon": "fas fa-fast-forward", "default": false }, - "skip_phasing_wf": { + "skip_phasing": { "type": "boolean", "fa_icon": "fas fa-fast-forward", "description": "Skip phasing of variants and haplotagging of reads", @@ -70,6 +64,11 @@ "description": "Skip short variant annotation", "default": false }, + "skip_sv_annotation": { + "type": "boolean", + "description": "Skip structural variant annotation", + "default": false + }, "skip_cnv_calling": { "type": "boolean", "description": "Skip CNV calling", @@ -123,6 +122,143 @@ "type": "string", "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", "fa_icon": "fas fa-file-signature" + }, + "cadd_prescored_indels": { + "type": "string", + "exists": true, + "format": "directory-path", + "fa_icon": "fas fa-file", + "description": "Path to a directory containing prescored indels for CADD.", + "help_text": "This folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." + }, + "cadd_resources": { + "type": "string", + "exists": true, + "format": "directory-path", + "fa_icon": "fas fa-file", + "description": "Path to a directory containing CADD annotations.", + "help_text": "This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." + }, + "par_regions": { + "type": "string", + "description": "Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant", + "format": "file-path", + "exists": true + }, + "tandem_repeats": { + "type": "string", + "format": "file-path", + "description": "A tandem repeat BED file for sniffles", + "pattern": "^\\S+\\.bed$", + "exists": true + }, + "trgt_repeats": { + "type": "string", + "description": "A BED file with repeats to be genotyped with TRGT", + "format": "file-path", + "exists": true + }, + "echtvar_snv_databases": { + "type": "string", + "pattern": "^\\S+\\.csv$", + "format": "file-path", + "mimetype": "text/csv", + "schema": "/assets/schema_snp_db.json", + "description": "A csv file with echtvar databases to annotate SNVs with", + "exists": true + }, + "svdb_sv_databases": { + "type": "string", + "exists": true, + "format": "file-path", + "description": "Databases used for structural variant annotation in vcf format.", + "fa_icon": "fas fa-file-csv", + "help_text": "Path to comma-separated file containing information about the databases used for structural variant annotation.", + "pattern": "^\\S+\\.csv$", + "mimetype": "text/csv", + "schema": "assets/svdb_query_vcf_schema.json" + }, + "stranger_repeat_catalog": { + "type": "string", + "description": "A variant catalog json-file for stranger", + "format": "file-path", + "exists": true + }, + "variant_consequences_snvs": { + "type": "string", + "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", + "fa_icon": "fas fa-file-csv" + }, + "variant_consequences_svs": { + "type": "string", + "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SVs. For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", + "fa_icon": "fas fa-file-csv" + }, + "vep_cache": { + "type": "string", + "description": "A path to the VEP cache location", + "format": "path", + "exists": true + }, + "target_regions": { + "type": "string", + "pattern": "^\\S+\\.bed$", + "format": "file-path", + "description": "A BED file with regions of interest, used to limit variant calling.", + "exists": true + }, + "hificnv_expected_xy_cn": { + "type": "string", + "format": "file-path", + "description": "A BED file containing expected copy number regions for XY samples.", + "exists": true + }, + "hificnv_expected_xx_cn": { + "type": "string", + "format": "file-path", + "description": "A BED file containing expected copy number regions for XX samples.", + "exists": true + }, + "hificnv_excluded_regions": { + "type": "string", + "format": "file-path", + "description": "A BED file specifying regions to exclude with HiFiCNV, such as centromeres.", + "exists": true + }, + "genmod_reduced_penetrance": { + "type": "string", + "exists": true, + "format": "path", + "fa_icon": "fas fa-file-csv", + "description": "A file with gene ids that have reduced penetrance. For use with genmod." + }, + "genmod_score_config_snvs": { + "type": "string", + "exists": true, + "format": "path", + "fa_icon": "fas fa-file", + "description": "A SNV rank model config file for genmod." + }, + "genmod_score_config_svs": { + "type": "string", + "exists": true, + "format": "path", + "fa_icon": "fas fa-file", + "description": "A SV rank model config file for genmod." + }, + "somalier_sites": { + "type": "string", + "pattern": "^\\S+\\.vcf(\\.gz)?$", + "description": "A VCF of known polymorphic sites for somalier", + "format": "file-path", + "exists": true + }, + "pipelines_testdata_base_path": { + "type": "string", + "fa_icon": "far fa-check-circle", + "description": "Base URL or local path to location of pipeline test dataset files", + "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/", + "hidden": true } } }, @@ -138,19 +274,6 @@ "pattern": "^.*\\.(fasta|fa|fna)(\\.gz)?$", "format": "file-path", "exists": true - }, - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.", - "default": true } } }, @@ -202,41 +325,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", @@ -244,12 +332,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.", @@ -324,28 +406,6 @@ "default": true, "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." - }, - "validationSkipDuplicateCheck": { - "type": "boolean", - "hidden": true, - "description": "nf-validation related parameter" - }, - "validationS3PathCheck": { - "type": "boolean", - "hidden": true, - "description": "Boolean whether to validate validate AWS S3 paths" - }, - "monochromeLogs": { - "type": "boolean", - "hidden": true, - "description": "Boolean whether to color nf-validation logs" } } }, @@ -361,17 +421,23 @@ "description": "Enable or disable certain parts of the pipeline by default, depending on data type (`revio`, `pacbio`, `ONT_R10`)", "enum": ["revio", "pacbio", "ONT_R10"] }, - "variant_caller": { + "snv_caller": { "type": "string", "default": "deepvariant", "description": "Which short variant software to use (`deepvariant`)", "enum": ["deepvariant"] }, + "sv_caller": { + "type": "string", + "default": "severus", + "description": "Which structural variant caller to use (`severus`, `sniffles`)", + "enum": ["severus", "sniffles"] + }, "phaser": { "type": "string", - "default": "whatshap", - "description": "Which phasing software to use (`whatshap`, `hiphase_snv`, `hiphase_sv`)", - "enum": ["whatshap", "hiphase_snv", "hiphase_sv"] + "default": "longphase", + "description": "Which phasing software to use (`longphase`, `whatshap`, `hiphase`)", + "enum": ["longphase", "whatshap", "hiphase"] }, "hifiasm_mode": { "type": "string", @@ -379,16 +445,16 @@ "enum": ["hifi-only", "trio-binning"], "default": "hifi-only" }, - "parallel_alignments": { + "alignment_processes": { "type": "integer", "minimum": 1, - "default": 1, - "description": "If parallel_alignments is bigger than 1, input files will be split and aligned in parallel to reduce processing time." + "default": 8, + "description": "If alignment_processes is bigger than 1, input files will be split and aligned in parallel to reduce processing time." }, - "parallel_snv": { + "snv_calling_processes": { "type": "integer", "default": 13, - "description": "If parallel_snv is bigger than 1, short variant calling will be done in parallel to reduce processing time.", + "description": "If snv_calling_processes is bigger than 1, short variant calling will be done in parallel to reduce processing time.", "minimum": 1 }, "vep_cache_version": { @@ -399,182 +465,95 @@ "vep_plugin_files": { "type": "string", "mimetype": "text/csv", - "description": "A csv file with paths to vep plugin files. pLI and LoFtool are required.", + "description": "A csv file with vep_files as header, and then paths to vep plugin files. Paths to pLI_values.txt and LoFtool_scores.txt are required.", "schema": "assets/vep_plugin_files_schema.json" }, - "deepvariant_model_type": { - "type": "string", - "default": "PACBIO", - "description": "Sets the model type used for DeepVariant. This is set automatically using `--preset` by default.", - "hidden": true, - "enum": ["PACBIO", "ONT_R104"] - } - }, - "required": ["preset"] - }, - "file_inputs": { - "title": "File inputs", - "type": "object", - "description": "The different files that are required. Some are only required by certain workflows, see the usage documentation.", - "default": "", - "fa_icon": "fas fa-copy", - "properties": { - "cadd_prescored": { - "type": "string", - "exists": true, - "format": "directory-path", - "fa_icon": "fas fa-file", - "description": "Path to a directory containing prescored indels for CADD.", - "help_text": "This folder contains the compressed files and indexes that would otherwise be in data/prescored folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." - }, - "cadd_resources": { - "type": "string", - "exists": true, - "format": "directory-path", - "fa_icon": "fas fa-file", - "description": "Path to a directory containing CADD annotations.", - "help_text": "This folder contains the uncompressed files that would otherwise be in data/annotation folder as described in https://github.com/kircherlab/CADD-scripts/#manual-installation." - }, - "par_regions": { - "type": "string", - "description": "Provide a bed file of chrX and chrY PAR regions for dipcall and DeepVariant", - "format": "file-path", - "exists": true - }, - "tandem_repeats": { - "type": "string", - "format": "file-path", - "description": "A tandem repeat BED file for sniffles", - "pattern": "^\\S+\\.bed$", - "exists": true - }, - "trgt_repeats": { - "type": "string", - "description": "A BED file with repeats to be genotyped with TRGT", - "format": "file-path", - "exists": true - }, - "snp_db": { - "type": "string", - "pattern": "^\\S+\\.csv$", - "format": "file-path", - "mimetype": "text/csv", - "schema": "/assets/schema_snpdb.json", - "description": "A csv file with echtvar databases to annotate SNVs with", - "exists": true - }, - "variant_catalog": { + "filter_variants_hgnc_ids": { "type": "string", - "description": "A variant catalog json-file for stranger", + "pattern": "^\\S+\\.(csv|tsv)$", + "description": "A tsv/csv file with a `hgnc_ids` column header, and then one numerical HGNC ID per row. E.g. `4281` or `HGNC:4281`.", "format": "file-path", - "exists": true - }, - "variant_consequences_snv": { - "type": "string", - "description": "File containing list of SO terms listed in the order of severity from most severe to lease severe for annotating genomic SNVs.", - "help_text": "For more information check https://ensembl.org/info/genome/variation/prediction/predicted_data.html", - "fa_icon": "fas fa-file-csv" + "exits": true, + "schema": "assets/schema_hgnc_ids.json" }, - "vep_cache": { + "filter_snvs_expression": { "type": "string", - "description": "A path to the VEP cache location", - "format": "path", - "exists": true + "default": "", + "description": "An expression that is passed to bcftools view to filter SNVs, e.g. --filter_snvs_expression \"-e 'INFO/AQ>60'\"" }, - "bed": { + "filter_svs_expression": { "type": "string", - "pattern": "^\\S+\\.bed$", - "format": "file-path", - "description": "A BED file with regions of interest, used to limit short variant calling.", - "exists": true + "default": "", + "description": "An expression that is passed to bcftools view to filter SVs, e.g. --filter_svs_expression \"-e 'INFO/AQ>60'\"" }, - "hificnv_xy": { - "type": "string", - "format": "file-path", - "description": "A BED file containing expected copy number regions for XY samples.", - "exists": true - }, - "hificnv_xx": { - "type": "string", - "format": "file-path", - "description": "A BED file containing expected copy number regions for XX samples.", - "exists": true - }, - "hificnv_exclude": { + "deepvariant_model_type": { "type": "string", - "format": "file-path", - "description": "A BED file specifying regions to exclude with HiFiCNV, such as centromeres.", - "exists": true + "default": "PACBIO", + "description": "Sets the model type used for DeepVariant. This is set automatically using `--preset` by default.", + "hidden": true, + "enum": ["PACBIO", "ONT_R104"] }, - "reduced_penetrance": { + "minimap2_read_mapping_preset": { "type": "string", - "exists": true, - "format": "path", - "fa_icon": "fas fa-file-csv", - "description": "A file with gene ids that have reduced penetrance. For use with genmod." + "description": "Sets the minimap2-preset (-x) for read alignment. This is set automatically using the pipeline `--preset` by default.", + "hidden": true, + "enum": ["map-hifi", "map-ont", "lr:hq", "lr:hqae"], + "default": "map-hifi" }, - "score_config_snv": { + "extra_modkit_options": { "type": "string", - "exists": true, - "format": "path", - "fa_icon": "fas fa-file", - "description": "A SNV rank model config file for genmod." + "hidden": true, + "description": "Extra options to modkit, used for test profile." }, - "somalier_sites": { + "extra_vep_options": { "type": "string", - "pattern": "^\\S+\\.vcf(\\.gz)?$", - "description": "A VCF of known polymorphic sites for somalier", - "format": "file-path", - "exists": true - }, - "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 warning." + "description": "Extra options to VEP, used for test profile." }, - "validationLenientMode": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters in lenient more.", + "extra_paraphase_options": { + "type": "string", "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)." + "description": "Extra options to Paraphase, used for test profile." }, - "pipelines_testdata_base_path": { + "extra_hifiasm_options": { "type": "string", - "fa_icon": "far fa-check-circle", - "description": "Base URL or local path to location of pipeline test dataset files", - "default": "https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/", - "hidden": true + "hidden": true, + "description": "Extra options to hifiasm, used for test profile." } - } + }, + "required": ["preset"] } }, "allOf": [ { - "$ref": "#/definitions/workflow_skip_options" + "$ref": "#/$defs/workflow_skip_options" + }, + { + "$ref": "#/$defs/input_output_options" + }, + { + "$ref": "#/$defs/reference_genome_options" }, { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/definitions/reference_genome_options" + "$ref": "#/$defs/generic_options" }, { - "$ref": "#/definitions/institutional_config_options" + "$ref": "#/$defs/workflow_options" }, { - "$ref": "#/definitions/max_job_request_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/reference_genome_options" }, { - "$ref": "#/definitions/workflow_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/definitions/file_inputs" + "$ref": "#/$defs/generic_options" } ] } diff --git a/nf-test.config b/nf-test.config index 67cadb45..7975ed4e 100644 --- a/nf-test.config +++ b/nf-test.config @@ -1,13 +1,16 @@ config { + // location for all nf-tests + testsDir "." + // nf-test directory including temporary files for each test + workDir System.getenv("NFT_WORKDIR") ?: ".nf-test" + // location of an optional nextflow.config file specific for executing tests + configFile "conf/test.config" + // run all test with defined profile(s) from the main nextflow.config + profile "test" + // Include plugins plugins { - load "nft-bam@0.3.0" - } - stage { - copy './nextflow_schema.json' + load "nft-bam@0.4.0" + load "nft-utils@0.0.3" + load "nft-vcf@1.0.7" } - testsDir "." - workDir ".nf-test" - configFile "tests/nextflow.config" - profile "" - } diff --git a/subworkflows/local/annotate_cadd/main.nf b/subworkflows/local/annotate_cadd/main.nf index 9a1dc047..223624a3 100644 --- a/subworkflows/local/annotate_cadd/main.nf +++ b/subworkflows/local/annotate_cadd/main.nf @@ -14,12 +14,12 @@ include { TABIX_TABIX as TABIX_CADD } from '../../../modules/nf-core/ workflow ANNOTATE_CADD { take: - ch_fai // channel: [mandatory] [ val(meta), path(fai) ] - ch_vcf // channel: [mandatory] [ val(meta), path(vcfs) ] - ch_index // channel: [mandatory] [ val(meta), path(tbis) ] - ch_header // channel: [mandatory] [ path(txt) ] - ch_cadd_resources // channel: [mandatory] [ path(dir) ] - ch_cadd_prescored // channel: [mandatory] [ path(dir) ] + ch_fai // channel: [mandatory] [ val(meta), path(fai) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcfs) ] + ch_index // channel: [mandatory] [ val(meta), path(tbis) ] + ch_header // channel: [mandatory] [ val(meta), path(txt) ] + ch_cadd_resources // channel: [mandatory] [ val(meta), path(dir) ] + ch_cadd_prescored_indels // channel: [mandatory] [ val(meta), path(dir) ] main: ch_versions = Channel.empty() @@ -50,7 +50,7 @@ workflow ANNOTATE_CADD { ) ch_versions = ch_versions.mix(BCFTOOLS_VIEW.out.versions) - CADD ( BCFTOOLS_VIEW.out.vcf, ch_cadd_resources, ch_cadd_prescored ) + CADD ( BCFTOOLS_VIEW.out.vcf, ch_cadd_resources, ch_cadd_prescored_indels ) ch_versions = ch_versions.mix(CADD.out.versions) TABIX_CADD ( CADD.out.tsv ) @@ -64,7 +64,7 @@ workflow ANNOTATE_CADD { ANNOTATE_INDELS ( ch_annotate_indels_in, - ch_header, + ch_header.map { meta, header -> header }, CADD_TO_REFERENCE_CHRNAMES.out.output.map { meta, txt -> txt } ) ch_versions = ch_versions.mix(ANNOTATE_INDELS.out.versions) diff --git a/subworkflows/local/annotate_consequence_pli.nf b/subworkflows/local/annotate_consequence_pli.nf index 203a1405..781d5e0f 100644 --- a/subworkflows/local/annotate_consequence_pli.nf +++ b/subworkflows/local/annotate_consequence_pli.nf @@ -9,7 +9,7 @@ include { TABIX_BGZIPTABIX } from '../../modules/nf-core/tabix/bgziptabix/mai workflow ANNOTATE_CSQ_PLI { take: ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] - ch_variant_consequences // channel: [mandatory] [ path(consequences) ] + ch_variant_consequences // channel: [mandatory] [ val(meta), path(consequences) ] main: ch_versions = Channel.empty() @@ -24,7 +24,7 @@ workflow ANNOTATE_CSQ_PLI { ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) emit: - vcf_ann = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> return [ meta, vcf ] } // channel: [ val(meta), path(vcf) ] - tbi_ann = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> return [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + vcf = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, vcf ] } // channel: [ val(meta), path(vcf) ] + tbi = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, vcf, tbi -> [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/annotate_repeat_expansions/main.nf b/subworkflows/local/annotate_repeat_expansions/main.nf index 62b138c6..dc7c5603 100644 --- a/subworkflows/local/annotate_repeat_expansions/main.nf +++ b/subworkflows/local/annotate_repeat_expansions/main.nf @@ -7,14 +7,14 @@ include { STRANGER } from '../../../modules/nf-core/st workflow ANNOTATE_REPEAT_EXPANSIONS { take: - ch_variant_catalog // channel: [mandatory] [ path(variant_catalog.json) ] - ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_stranger_repeat_catalog // channel: [mandatory] [ path(stranger_repeat_catalog.json) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] main: ch_versions = Channel.empty() // Annotate, compress and index - STRANGER ( ch_vcf, ch_variant_catalog ) + STRANGER ( ch_vcf, ch_stranger_repeat_catalog ) ch_versions = ch_versions.mix(STRANGER.out.versions) COMPRESS_STRANGER ( diff --git a/subworkflows/local/annotate_svs/main.nf b/subworkflows/local/annotate_svs/main.nf new file mode 100644 index 00000000..14ed7ed7 --- /dev/null +++ b/subworkflows/local/annotate_svs/main.nf @@ -0,0 +1,62 @@ +include { SVDB_QUERY } from '../../../modules/nf-core/svdb/query/main' +include { ENSEMBLVEP_VEP as ENSEMBLVEP_SV } from '../../../modules/nf-core/ensemblvep/vep/main' +include { TABIX_TABIX as TABIX_ENSEMBLVEP_SV } from '../../../modules/nf-core/tabix/tabix/main' + +workflow ANNOTATE_SVS { + + take: + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] + ch_sv_dbs // channel: [mandatory] [ val(meta), path(csv) ] + ch_vep_cache // channel: [mandatory] [ path(cache) ] + val_vep_cache_version // string: [mandatory] default: 110 + ch_vep_extra_files // channel: [mandatory] [ path(files) ] + + main: + ch_versions = Channel.empty() + + ch_sv_dbs + .map { meta, csv -> csv } + .splitCsv ( header:true ) + .multiMap { row -> + vcf_dbs: row.filename + in_frqs: row.in_freq_info_key + in_occs: row.in_allele_count_info_key + out_frqs: row.out_freq_info_key + out_occs: row.out_allele_count_info_key + } + .set { ch_svdb_in } + + // Annotate with SVDB VCF "databases" + SVDB_QUERY ( + ch_vcf, + ch_svdb_in.in_occs.toList(), + ch_svdb_in.in_frqs.toList(), + ch_svdb_in.out_occs.toList(), + ch_svdb_in.out_frqs.toList(), + ch_svdb_in.vcf_dbs.toList(), + [] + ) + ch_versions = ch_versions.mix(SVDB_QUERY.out.versions) + + ENSEMBLVEP_SV ( + SVDB_QUERY.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "GRCh38", + "homo_sapiens", + val_vep_cache_version, + ch_vep_cache, + ch_fasta, + ch_vep_extra_files + ) + ch_versions = ch_versions.mix(ENSEMBLVEP_SV.out.versions) + + TABIX_ENSEMBLVEP_SV ( + ENSEMBLVEP_SV.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_ENSEMBLVEP_SV.out.versions) + + emit: + vcf = ENSEMBLVEP_SV.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = TABIX_ENSEMBLVEP_SV.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] +} diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test b/subworkflows/local/annotate_svs/tests/main.nf.test new file mode 100644 index 00000000..df7bc027 --- /dev/null +++ b/subworkflows/local/annotate_svs/tests/main.nf.test @@ -0,0 +1,115 @@ +nextflow_workflow { + + name "Test Workflow ANNOTATE_SVS" + script "../" + workflow "ANNOTATE_SVS" + config "./nextflow.config" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + } + + run("SEVERUS") { + script "../../../../modules/nf-core/severus/main" + process { + """ + input[0] = [ + [ id:'test', single_end:false, project: 'project' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true), + [], + [], + [] + ] + input[1] = [[],[]] + """ + } + } + + run("UNTAR") { + script "../../../../modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ id: 'vep_cache' ], + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) + ] + """ + } + } + + } + + test("severus, fasta, svdb, vep_cache, '110', vep_plugin_files") { + + when { + workflow { + """ + input[0] = SEVERUS.out.all_vcf + input[1] = GUNZIP.out.gunzip + input[2] = Channel.of([ + [ id: 'svdb_sv_databases' ], + file(params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv', checkIfExists: true) + ]) + input[3] = UNTAR.out.untar.map { meta, cache -> cache } + input[4] = Channel.value('110') + input[5] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.versions, + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(workflow.out.tbi.get(0).get(1)).name + ).match() } + ) + } + + } + + test("severus, fasta, svdb, vep_cache, '110', vep_plugin_files -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = SEVERUS.out.all_vcf + input[1] = GUNZIP.out.gunzip + input[2] = Channel.of([ + [ id: 'svdb_sv_databases' ], + file(params.pipelines_testdata_base_path + 'testdata/svdb_dbs.csv', checkIfExists: true) + ]) + input[3] = UNTAR.out.untar.map { meta, cache -> cache } + input[4] = Channel.value('110') + input[5] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out.versions).match() } + ) + } + + } +} diff --git a/subworkflows/local/annotate_svs/tests/main.nf.test.snap b/subworkflows/local/annotate_svs/tests/main.nf.test.snap new file mode 100644 index 00000000..338a454e --- /dev/null +++ b/subworkflows/local/annotate_svs/tests/main.nf.test.snap @@ -0,0 +1,32 @@ +{ + "severus, fasta, svdb, vep_cache, '110', vep_plugin_files -stub": { + "content": [ + [ + "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", + "versions.yml:md5,8b626b9e41c9e6de6edc8f94e0e75aed", + "versions.yml:md5,d2a9a640a711b2d559e13f9bca9d7a3b" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-04T16:18:47.369135866" + }, + "severus, fasta, svdb, vep_cache, '110', vep_plugin_files": { + "content": [ + [ + "versions.yml:md5,84c59e3a0a183b01a21620b16ee9ca4d", + "versions.yml:md5,8b626b9e41c9e6de6edc8f94e0e75aed", + "versions.yml:md5,d2a9a640a711b2d559e13f9bca9d7a3b" + ], + "28e9be031273d5e4a94a8654da6e56ed", + "test_svs_cnvs_merged_annotated.vcf.gz.tbi" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-04T16:18:35.246526033" + } +} \ No newline at end of file diff --git a/subworkflows/local/annotate_svs/tests/nextflow.config b/subworkflows/local/annotate_svs/tests/nextflow.config new file mode 100644 index 00000000..ee5a33ed --- /dev/null +++ b/subworkflows/local/annotate_svs/tests/nextflow.config @@ -0,0 +1,17 @@ +process { + + withName: 'UNTAR' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'ANNOTATE_SVS:ENSEMBLVEP_SV' { + ext.args = { [ + '--offline', + '--vcf', + '--compress_output bgzip' + ].join(' ') } + } + withName: 'CALL_SVS:SVDB_MERGE' { + ext.args2 = '--no-version' + } +} diff --git a/subworkflows/local/call_cnvs/main.nf b/subworkflows/local/call_cnvs/main.nf new file mode 100644 index 00000000..7407a19a --- /dev/null +++ b/subworkflows/local/call_cnvs/main.nf @@ -0,0 +1,62 @@ +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag' +include { HIFICNV } from '../../../modules/local/pacbio/hificnv' +include { SVDB_MERGE } from '../../../modules/nf-core/svdb/merge/main' +include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' + +workflow CALL_CNVS { + + take: + ch_bam_bai_vcf // channel: [ val(meta), path(bam), path(vcf) ] + ch_fasta // channel: [ val(meta), path(fasta) ] + ch_expected_xy_bed // channel: [ val(meta), path(bed) ] + ch_expected_xx_bed // channel: [ val(meta), path(bed) ] + ch_exclude_bed // channel: [ val(meta), path(bed) ] + + main: + ch_versions = Channel.empty() + + ch_bam_bai_vcf + .map { meta, bam, bai, vcf -> [ meta, bam, bai, vcf, meta.sex ] } + .set { ch_hificnv_in } + + // Run HiFiCNV + HIFICNV ( + ch_hificnv_in, + ch_fasta, + ch_expected_xy_bed, + ch_expected_xx_bed, + ch_exclude_bed + ) + ch_versions = ch_versions.mix(HIFICNV.out.versions) + + // Add FOUND_IN=hificnv to VCF + ADD_FOUND_IN_TAG ( + HIFICNV.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "hificnv" + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) + + ADD_FOUND_IN_TAG.out.vcf + .map { meta, vcf -> [ [ 'id': meta.family_id ], vcf ] } + .groupTuple() + .set { svdb_merge_in } + + // Merge the files + SVDB_MERGE ( + svdb_merge_in, + [], + true + ) + ch_versions = ch_versions.mix(SVDB_MERGE.out.versions) + + TABIX_TABIX ( SVDB_MERGE.out.vcf ) + ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) + + emit: + sample_vcf = ADD_FOUND_IN_TAG.out.vcf // channel: [ val(meta), path(vcf) ] + sample_tbi = ADD_FOUND_IN_TAG.out.tbi // channel: [ val(meta), path(tbi) ] + family_vcf = SVDB_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_tbi = TABIX_TABIX.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ versions.yml ] +} + diff --git a/subworkflows/local/call_cnvs/tests/main.nf.test b/subworkflows/local/call_cnvs/tests/main.nf.test new file mode 100644 index 00000000..3341f7c2 --- /dev/null +++ b/subworkflows/local/call_cnvs/tests/main.nf.test @@ -0,0 +1,253 @@ +nextflow_workflow { + + name "Test Workflow CALL_CNVS" + script "../main.nf" + config "./nextflow.config" + workflow "CALL_CNVS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'test' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + + } + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', family_id: 'test', sex: 1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true) + ] + input[1] = GUNZIP.out.gunzip + input[2] = true + input[3] = 'bai' + input[4] = false + input[5] = false + """ + } + } + run("DEEPVARIANT_RUNDEEPVARIANT") { + script "../../../../modules/nf-core/deepvariant/rundeepvariant/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> [ meta, bam, bai, file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) ] } + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + } + + test("1 sample - [bam, bai, [] ], fasta, [], [], [], []") { + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> [ meta, bam, bai, [] ] } + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, [], [], [], []") { + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed") { + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [ + [ id: 'xy_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed', checkIfExists: true) + ] + input[3] = [ + [ id: 'xx_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed', checkIfExists: true) + ] + input[4] = [ + [ id: 'exclude_bed' ], + file(params.pipelines_testdata_base_path + 'reference/cnv.excluded_regions.hg38.bed.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + } + + test("1 sample - [bam, bai, [] ], fasta, [], [], [], [] - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> [ meta, bam, bai, [] ] } + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, [], [], [], [] - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(DEEPVARIANT_RUNDEEPVARIANT.out.vcf) + input[1] = GUNZIP.out.gunzip + input[2] = [ + [ id: 'xy_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed', checkIfExists: true) + ] + input[3] = [ + [ id: 'xx_bed' ], + file(params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed', checkIfExists: true) + ] + input[4] = [ + [ id: 'exclude_bed' ], + file(params.pipelines_testdata_base_path + 'reference/cnv.excluded_regions.hg38.bed.gz', checkIfExists: true) + ] + """ + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + } +} diff --git a/subworkflows/local/call_cnvs/tests/main.nf.test.snap b/subworkflows/local/call_cnvs/tests/main.nf.test.snap new file mode 100644 index 00000000..409b8527 --- /dev/null +++ b/subworkflows/local/call_cnvs/tests/main.nf.test.snap @@ -0,0 +1,344 @@ +{ + "1 sample - [bam, bai, vcf ], fasta, [], [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ], + "family_tbi": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:33.644600302" + }, + "1 sample - [bam, bai, [] ], fasta, [], [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ], + "family_tbi": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:20.756426372" + }, + "1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]", + "444974b6ec3f9600ca12538628e6742c", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]", + "171d1b5284a06778c87f54c27ee88bea", + [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:08.08094773" + }, + "1 sample - [bam, bai, [] ], fasta, [], [], [], []": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "576892dd42d2b2cb06542862a4beddc1", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "4aaee123cd9279e17220409be6ed7ea3", + [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:42:49.173190275" + }, + "1 sample - [bam, bai, vcf ], fasta, xy_bed, xx_bed, exclude_bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ], + "family_tbi": [ + [ + { + "id": "test" + }, + "merged.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "test" + }, + "merged.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "family_id": "test", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:44:46.71801265" + }, + "1 sample - [bam, bai, vcf ], fasta, [], [], [], []": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "576892dd42d2b2cb06542862a4beddc1", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=41, phased=false, phasedAutodetect=false]", + "4aaee123cd9279e17220409be6ed7ea3", + [ + "versions.yml:md5,28a7290514330df198a5df6687535177", + "versions.yml:md5,98e5fabb16a6a19137277ce414001426", + "versions.yml:md5,c22d7e7ddc52579e52ee8ac597b0e829", + "versions.yml:md5,fc490a5d4e1a6dce983637532901f1e9" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-28T09:43:28.248043419" + } +} \ No newline at end of file diff --git a/subworkflows/local/call_cnvs/tests/nextflow.config b/subworkflows/local/call_cnvs/tests/nextflow.config new file mode 100644 index 00000000..d5ce57da --- /dev/null +++ b/subworkflows/local/call_cnvs/tests/nextflow.config @@ -0,0 +1,23 @@ +process { + withName: 'MINIMAP2_ALIGN' { + ext.args = '-x map-hifi' + } + withName: 'DEEPVARIANT_RUNDEEPVARIANT' { + ext.args = '--model_type PACBIO' + } + withName: 'CALL_CNVS:HIFICNV' { + ext.prefix = 'hificnv' + } + withName: 'CALL_CNVS:SVDB_MERGE' { + ext.prefix = 'merged' + ext.args2 = '--no-version' + } + withName: 'CALL_CNVS:ADD_FOUND_IN_TAG' { + ext.args = '--no-version' + ext.args2 = [ + '--output-type z', + '--write-index=tbi', + '--no-version' + ].join(' ') + } +} diff --git a/subworkflows/local/call_paralogs.nf b/subworkflows/local/call_paralogs.nf index 88c62403..bb4a931d 100644 --- a/subworkflows/local/call_paralogs.nf +++ b/subworkflows/local/call_paralogs.nf @@ -1,5 +1,4 @@ -include { PARAPHASE } from '../../modules/nf-core/paraphase/main' -include { TABIX_BGZIPTABIX } from '../../modules/nf-core/tabix/bgziptabix/main' +include { PARAPHASE } from '../../modules/nf-core/paraphase/main' workflow CALL_PARALOGS { @@ -13,19 +12,12 @@ workflow CALL_PARALOGS { PARAPHASE ( bam_bai, fasta, [[],[]] ) ch_versions = ch_versions.mix(PARAPHASE.out.versions) - PARAPHASE.out.vcf - .transpose() // Does create ~160 jobs per sample by default in hg38 - .set { bgzip_paraphase_vcfs } - - TABIX_BGZIPTABIX ( bgzip_paraphase_vcfs ) - ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) - emit: - bam = PARAPHASE.out.bam // channel: [ val(meta), bam ] - bai = PARAPHASE.out.bai // channel: [ val(meta), bai ] - json = PARAPHASE.out.json // channel: [ val(meta), json ] - vcf = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), gz, tbi ] - + bam = PARAPHASE.out.bam // channel: [ val(meta), path(bam) ] + bai = PARAPHASE.out.bai // channel: [ val(meta), path(bai) ] + json = PARAPHASE.out.json // channel: [ val(meta), path(json) ] + vcf = PARAPHASE.out.vcf // channel: [ val(meta), path(vcfs) ] + tbi = PARAPHASE.out.vcf_index // channel: [ val(meta), path(tbis) ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/call_repeat_expansions/main.nf b/subworkflows/local/call_repeat_expansions/main.nf index 8b71453e..8a1ddbea 100644 --- a/subworkflows/local/call_repeat_expansions/main.nf +++ b/subworkflows/local/call_repeat_expansions/main.nf @@ -1,9 +1,10 @@ -include { TRGT } from '../../../modules/local/trgt' +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' +include { TRGT_GENOTYPE } from '../../../modules/nf-core/trgt/genotype/main' include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_TRGT } from '../../../modules/nf-core/samtools/index/main' include { SAMTOOLS_SORT as SAMTOOLS_SORT_TRGT } from '../../../modules/nf-core/samtools/sort/main' include { BCFTOOLS_SORT as BCFTOOLS_SORT_TRGT } from '../../../modules/nf-core/bcftools/sort/main' -include { BCFTOOLS_INDEX as BCFTOOLS_INDEX_MERGE } from '../../../modules/nf-core/bcftools/index/main' -include { BCFTOOLS_MERGE } from '../../../modules/nf-core/bcftools/merge/main' +include { TRGT_MERGE } from '../../../modules/nf-core/trgt/merge/main' +include { BCFTOOLS_INDEX } from '../../../modules/nf-core/bcftools/index/main' workflow CALL_REPEAT_EXPANSIONS { @@ -18,38 +19,64 @@ workflow CALL_REPEAT_EXPANSIONS { ch_versions = Channel.empty() ch_bam_bai - .map { meta, bam, bai -> [meta, bam, bai, meta.sex] } + .map { meta, bam, bai -> [ meta, bam, bai, meta.sex == 1 ? 'XY' : 'XX' ] } .set { ch_trgt_input } // Run TGRT - TRGT ( ch_trgt_input, ch_fasta, ch_fai, ch_trgt_bed.map { it[1] } ) + TRGT_GENOTYPE ( + ch_trgt_input, + ch_fasta, + ch_fai, + ch_trgt_bed + ) + ch_versions = ch_versions.mix(TRGT_GENOTYPE.out.versions) // Sort and index bam - SAMTOOLS_SORT_TRGT ( TRGT.out.bam, [[],[]] ) - SAMTOOLS_INDEX_TRGT(SAMTOOLS_SORT_TRGT.out.bam) + SAMTOOLS_SORT_TRGT ( + TRGT_GENOTYPE.out.bam, + [[],[]] + ) + ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) + + SAMTOOLS_INDEX_TRGT ( SAMTOOLS_SORT_TRGT.out.bam ) + ch_versions = ch_versions.mix(SAMTOOLS_INDEX_TRGT.out.versions) + + // Add FOUND_IN=TRGT tag + ADD_FOUND_IN_TAG ( + TRGT_GENOTYPE.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "TRGT" + ) // Sort and index bcf - BCFTOOLS_SORT_TRGT(TRGT.out.vcf) + BCFTOOLS_SORT_TRGT ( ADD_FOUND_IN_TAG.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT_TRGT.out.versions) BCFTOOLS_SORT_TRGT.out.vcf .join( BCFTOOLS_SORT_TRGT.out.tbi ) - .map { meta, bcf, csi -> [ [ id : meta.project ], bcf, csi ] } + .map { meta, bcf, csi -> [ [ id : meta.family_id ], bcf, csi ] } .groupTuple() - .set{ ch_bcftools_merge_in } + .set{ ch_trgt_merge_in } - BCFTOOLS_MERGE ( ch_bcftools_merge_in, ch_fasta, ch_fai, [] ) + TRGT_MERGE ( + ch_trgt_merge_in, + [[],[]], + [[],[]], + ) + ch_versions = ch_versions.mix(TRGT_MERGE.out.versions) - BCFTOOLS_INDEX_MERGE ( BCFTOOLS_MERGE.out.merged_variants ) + BCFTOOLS_INDEX( + TRGT_MERGE.out.vcf + ) + ch_versions = ch_versions.mix(BCFTOOLS_INDEX.out.versions) - ch_versions = ch_versions.mix(TRGT.out.versions) - ch_versions = ch_versions.mix(SAMTOOLS_SORT_TRGT.out.versions) - ch_versions = ch_versions.mix(SAMTOOLS_INDEX_TRGT.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_SORT_TRGT.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_MERGE.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_INDEX_MERGE.out.versions) emit: - vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] - versions = ch_versions // channel: [ versions.yml ] + sample_vcf = BCFTOOLS_SORT_TRGT.out.vcf // channel: [ val(meta), path(vcf) ] + sample_tbi = BCFTOOLS_SORT_TRGT.out.tbi // channel: [ val(meta), path(tbi) ] + family_vcf = TRGT_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_tbi = BCFTOOLS_INDEX.out.tbi // channel: [ val(meta), path(tbi) ] + sample_bam = SAMTOOLS_SORT_TRGT.out.bam // channel: [ val(meta), path(bam) ] + sample_bai = SAMTOOLS_INDEX_TRGT.out.bai // channel: [ val(meta), path(bai) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test b/subworkflows/local/call_repeat_expansions/tests/main.nf.test new file mode 100644 index 00000000..6a5af047 --- /dev/null +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test @@ -0,0 +1,99 @@ +nextflow_workflow { + + name "Test Workflow CALL_REPEAT_EXPANSIONS" + script "../main.nf" + config "./nextflow.config" + workflow "CALL_REPEAT_EXPANSIONS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'test' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + + } + + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + + } + } + + test("[bam, bai], fasta, fai, bed") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family', sex: 1 ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of([ + [ id: 'pathogenic_repeats' ], + file(params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed') + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_bai.get(0).get(1).endsWith(".bai") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + bam(workflow.out.sample_bam.get(0).get(1), stringency: 'silent').getReadsMD5(), + workflow.out.versions, + ).match() } + ) + } + + } + + test("[bam, bai], fasta, fai, bed - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family', sex: 1 ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = Channel.of([ + [ id: 'pathogenic_repeats' ], + file(params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed') + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } +} diff --git a/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap new file mode 100644 index 00000000..84f6ef94 --- /dev/null +++ b/subworkflows/local/call_repeat_expansions/tests/main.nf.test.snap @@ -0,0 +1,169 @@ +{ + "[bam, bai], fasta, fai, bed": { + "content": [ + "d7d518f68789d3d51a26be28a93b9654", + "51174ac303f7b78f4672f90c13363412", + "a51f00198c7449fd64772fe680c6241", + [ + "versions.yml:md5,21f644fc2bb29eb5ed97231b3b95d5d1", + "versions.yml:md5,445b9cde08bfee6fc492aec41ccd39c2", + "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,539d877809cffefa48dd1f20b1381cff", + "versions.yml:md5,78d86f9ddc871705ca029444a498322f", + "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-12-09T15:52:26.560152049" + }, + "[bam, bai], fasta, fai, bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + "versions.yml:md5,21f644fc2bb29eb5ed97231b3b95d5d1", + "versions.yml:md5,445b9cde08bfee6fc492aec41ccd39c2", + "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,539d877809cffefa48dd1f20b1381cff", + "versions.yml:md5,78d86f9ddc871705ca029444a498322f", + "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_bai": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_bam": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family", + "sex": 1 + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,21f644fc2bb29eb5ed97231b3b95d5d1", + "versions.yml:md5,445b9cde08bfee6fc492aec41ccd39c2", + "versions.yml:md5,52272b464e62cb9e5d41622ea76cd070", + "versions.yml:md5,539d877809cffefa48dd1f20b1381cff", + "versions.yml:md5,78d86f9ddc871705ca029444a498322f", + "versions.yml:md5,d7098c270381ae9c3c54fd4224f50206" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-12-09T15:52:40.512924071" + } +} \ No newline at end of file diff --git a/subworkflows/local/call_repeat_expansions/tests/nextflow.config b/subworkflows/local/call_repeat_expansions/tests/nextflow.config new file mode 100644 index 00000000..b51f0527 --- /dev/null +++ b/subworkflows/local/call_repeat_expansions/tests/nextflow.config @@ -0,0 +1,14 @@ +process { + withName: 'CALL_REPEAT_EXPANSIONS:TRGT_MERGE' { + ext.args = '--output-type z --force-single --no-version' + } + withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_SORT_TRGT' { + ext.args = '--output-type z --write-index=tbi' + } + withName: 'CALL_REPEAT_EXPANSIONS:TRGT' { + ext.args = { "--sample-name ${meta.id}" } + } + withName: 'CALL_REPEAT_EXPANSIONS:BCFTOOLS_INDEX' { + ext.args = "--tbi" + } +} diff --git a/subworkflows/local/call_svs/main.nf b/subworkflows/local/call_svs/main.nf new file mode 100644 index 00000000..e9bfe5f3 --- /dev/null +++ b/subworkflows/local/call_svs/main.nf @@ -0,0 +1,103 @@ +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' +include { SVDB_MERGE } from '../../../modules/nf-core/svdb/merge/main' +include { BCFTOOLS_QUERY } from '../../../modules/nf-core/bcftools/query/main' +include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' +include { CREATE_SAMPLES_FILE } from '../../../modules/local/create_samples_file/main' +include { SEVERUS } from '../../../modules/nf-core/severus/main' +include { SNIFFLES } from '../../../modules/nf-core/sniffles/main' +include { TABIX_TABIX as TABIX_SVDB_MERGE } from '../../../modules/nf-core/tabix/tabix/main' + +workflow CALL_SVS { + + take: + ch_bam_bai // channel [mandatory]: [ val(meta), path(bam), path(bai) ] + ch_fasta // channel [mandatory]: [ val(meta), path(fasta) ] + ch_fai // channel [mandatory]: [ val(meta), path(fai) ] + sv_caller // val [mandatory]: Which caller to use + ch_tandem_repeats // channel [optional]: [ val(meta), path(bed) ] + ch_bed // channel [optional]: [ val(meta), path(bed) ] + + main: + ch_versions = Channel.empty() + + // Call SVs + if (sv_caller == "severus") { + + SEVERUS ( + ch_bam_bai.map { meta, bam, bai -> [ meta, bam, bai, [], [], [] ] }, + ch_tandem_repeats + ) + ch_versions = ch_versions.mix(SEVERUS.out.versions) + + SEVERUS.out.all_vcf + .set { ch_vcf } + + } else if (sv_caller == "sniffles") { + + SNIFFLES ( + ch_bam_bai, + ch_fasta, + ch_tandem_repeats, + true, + false + ) + ch_versions = ch_versions.mix(SNIFFLES.out.versions) + + SNIFFLES.out.vcf + .set { ch_vcf } + } + + // Annotate with FOUND_IN tag + ADD_FOUND_IN_TAG ( + ch_vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + sv_caller + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) + + // Get the sample name from the VCF + // For Sniffles this is hardcoded as SAMPLE and for Severus it's based on the filename + BCFTOOLS_QUERY ( + ADD_FOUND_IN_TAG.out.vcf.join(ADD_FOUND_IN_TAG.out.csi), + [], + [], + [] + ) + ch_versions = ch_versions.mix(BCFTOOLS_QUERY.out.versions) + + // Creates a "vcf_sample_name meta.id" file for bcftools reheader + CREATE_SAMPLES_FILE ( BCFTOOLS_QUERY.out.output ) + ch_versions = ch_versions.mix(CREATE_SAMPLES_FILE.out.versions) + + ADD_FOUND_IN_TAG.out.vcf + .join( CREATE_SAMPLES_FILE.out.samples ) + .map { meta, vcf, samples -> [ meta, vcf, [], samples ] } + .set { ch_bcftools_reheader_in } + + // Give meta.id as sample name in the VCF + BCFTOOLS_REHEADER ( ch_bcftools_reheader_in, [[],[]] ) + ch_versions = ch_versions.mix(BCFTOOLS_REHEADER.out.versions) + + BCFTOOLS_REHEADER.out.vcf + .map { meta, vcf -> [ [ 'id': meta.family_id ], vcf ] } + .groupTuple() + .set { ch_svdb_merge_in } + + // Merge the files with new sample names + SVDB_MERGE ( + ch_svdb_merge_in, + [], + true + ) + ch_versions = ch_versions.mix(SVDB_MERGE.out.versions) + + TABIX_SVDB_MERGE ( SVDB_MERGE.out.vcf ) + ch_versions = ch_versions.mix(TABIX_SVDB_MERGE.out.versions) + + emit: + sample_vcf = BCFTOOLS_REHEADER.out.vcf // channel: [ val(meta), path(vcf) ] + sample_tbi = BCFTOOLS_REHEADER.out.index // channel: [ val(meta), path(tbi) ] + family_vcf = SVDB_MERGE.out.vcf // channel: [ val(meta), path(vcf) ] + family_tbi = TABIX_SVDB_MERGE.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] +} + diff --git a/subworkflows/local/call_svs/tests/main.nf.test b/subworkflows/local/call_svs/tests/main.nf.test new file mode 100644 index 00000000..3859de5b --- /dev/null +++ b/subworkflows/local/call_svs/tests/main.nf.test @@ -0,0 +1,624 @@ +nextflow_workflow { + + name "Test Workflow CALL_SVS" + script "../main.nf" + config "./nextflow.config" + workflow "CALL_SVS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'test' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + + } + + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + + } + } + + test("1 sample - [bam, bai], fasta, fai, [], [] - sniffles") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, bed, [] - sniffles") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [ + [ id:'trf' ], + file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) + ] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("2 samples - [bam, bai], fasta, fai, [], [] - sniffles") { + tag "x" + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ], + [ + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) + ] + ) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(1).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).linesGzip, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - sniffles") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], [] - severus") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, bed, [] - severus") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [ + [ id:'trf' ], + file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) + ] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - severus") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("2 samples - [bam, bai], fasta, fai, [], [] - severus") { + + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ], + [ + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) + ] + ) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.sample_tbi.get(0).get(1).endsWith("tbi") }, + { assert workflow.out.sample_tbi.get(1).get(1).endsWith("tbi") }, + { assert workflow.out.family_tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.sample_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.summary, + path(workflow.out.sample_vcf.get(1).get(1)).vcf.variantsMD5, + path(workflow.out.family_vcf.get(0).get(1)).vcf.summary, + path(workflow.out.family_vcf.get(0).get(1)).vcf.variantsMD5, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, bed, [] - sniffles -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [ + [ id:'trf' ], + file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) + ] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ], + [ + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) + ] + ) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "sniffles" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.sample_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + workflow.out.sample_tbi, + workflow.out.family_vcf, + workflow.out.family_tbi, + workflow.out.versions, + ).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], [] - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, [], bed - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ]) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [ + [ id:'trf' ], + file('https://github.com/fritzsedlazeck/Sniffles/raw/master/annotations/human_GRCh38_no_alt_analysis_set.trf.bed', checkIfExists: true) + ] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("2 samples - [bam, bai], fasta, fai, [], [] - severus -stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of( + [ + [ id:'test_1', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.bam.bai', checkIfExists: true) + ], + [ + [ id:'test_2', single_end:false, family_id: 'family' ], // meta map + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam', checkIfExists: true), + file(params.pipelines_testdata_base_path + 'testdata/HG002_ONT.bam.bai', checkIfExists: true) + ] + ) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = "severus" + input[4] = [[],[]] + input[5] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.sample_vcf.collect { file(it[1]).name }.sort().toString(), // don't know the order of the output VCFs + workflow.out.sample_tbi, + workflow.out.family_vcf, + workflow.out.family_tbi, + workflow.out.versions, + ).match() } + ) + } + + } +} diff --git a/subworkflows/local/call_svs/tests/main.nf.test.snap b/subworkflows/local/call_svs/tests/main.nf.test.snap new file mode 100644 index 00000000..72aa70d4 --- /dev/null +++ b/subworkflows/local/call_svs/tests/main.nf.test.snap @@ -0,0 +1,1300 @@ +{ + "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:29:03.235235925" + }, + "2 samples - [bam, bai], fasta, fai, [], [] - sniffles -stub": { + "content": [ + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", + [ + [ + { + "id": "test_1", + "single_end": false, + "family_id": "family" + }, + "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test_2", + "single_end": false, + "family_id": "family" + }, + "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:29:33.316947597" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - sniffles -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:28:47.871974459" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - severus": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=56, phased=false, phasedAutodetect=false]", + "1294e2ab468789a0bd56e8bcaf578a4", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", + "9788302ce089a9d1896f02355474b721", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:27:02.494989112" + }, + "1 sample - [bam, bai], fasta, fai, [], bed - severus -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:30:02.236874166" + }, + "1 sample - [bam, bai], fasta, fai, [], bed - severus": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=56, phased=false, phasedAutodetect=false]", + "1294e2ab468789a0bd56e8bcaf578a4", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", + "9788302ce089a9d1896f02355474b721", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:27:40.147457805" + }, + "2 samples - [bam, bai], fasta, fai, [], [] - sniffles": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=95, phased=false, phasedAutodetect=false]", + "7cd0730159250c8945e2007da414651e", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=120, phased=false, phasedAutodetect=false]", + "1a02c1b0c86e5531279218fb39ef62b2", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=2, variantCount=130, phased=false, phasedAutodetect=false]", + "7d122c197ef319c573592e5f9356a4c0", + [ + "##fileformat=VCFv4.1", + "##FILTER=", + "##source=MergeVCF", + "##SVDB_version=2.8.2 cmd=\"/usr/local/bin/svdb --merge --bnd_distance 1000 --overlap .5 --vcf test_1_reheader.vcf.gz test_2_reheader.vcf.gz\"", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##ALT=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##contig=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FILTER=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##FORMAT=", + "##command=\"/usr/local/bin/sniffles --input HG002_PacBio_Revio.bam --reference hg38.test.fa -t 4 --vcf test_1.vcf.gz\"", + "##INFO=", + "##INFO=", + "##INFO=", + "##INFO=", + "##svdbcmdline=/usr/local/bin/svdb --merge --bnd_distance 1000 --overlap .5 --vcf test_1_reheader.vcf.gz test_2_reheader.vcf.gz", + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest_1\ttest_2", + "chr16\t81884\tSniffles2.INS.4SF\tN\tCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=398;END=81884;SUPPORT=12;COVERAGE=22,23,24,23,23;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=68.361;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.4SF|chr16;test_1_reheader_POS=Sniffles2.INS.4SF|81884;test_1_reheader_QUAL=Sniffles2.INS.4SF|60;test_1_reheader_FILTERS=Sniffles2.INS.4SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.4SF|test_1|GT:0/1|GQ:60|DR:12|DV:12;test_1_reheader_INFO=Sniffles2.INS.4SF|IMPRECISE|SVTYPE:INS|SVLEN:398|END:81884|SUPPORT:12|COVERAGE:22:23:24:23:23|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:68.361|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:60:12:12\t./.:.:.:.", + "chr16\t81981\tSniffles2.INS.1SF\tN\tCTTGATCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCACGCTGGCCCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=56;END=81981;SUPPORT=10;COVERAGE=21,21,21,21,23;STRAND=+-;AF=0.476;STDEV_LEN=1.952;STDEV_POS=96.236;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.1SF|chr16;test_2_reheader_POS=Sniffles2.INS.1SF|81981;test_2_reheader_QUAL=Sniffles2.INS.1SF|60;test_2_reheader_FILTERS=Sniffles2.INS.1SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.1SF|test_2|GT:0/1|GQ:60|DR:11|DV:10;test_2_reheader_INFO=Sniffles2.INS.1SF|IMPRECISE|SVTYPE:INS|SVLEN:56|END:81981|SUPPORT:10|COVERAGE:21:21:21:21:23|STRAND:+-|AF:0.476|STDEV_LEN:1.952|STDEV_POS:96.236|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:60:11:10", + "chr16\t82055\tSniffles2.INS.3SF\tN\tCTCCGGGAAGCCCTCCTGAATGCTCCCCACGCTGGCCCCTTCTTCCCACCACCCTACCTCCAGGAAGCCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTCCCTATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTACCTCCGGGAAGGCCTCCTGAGTCACCCGCGCTGACCCCTTCTTCCCACCACCCTATCTCCGGGAAGCCCTCCTAATGCTCCCCGCGCTGACCCCTTCTTCCCACCACCCTAT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=391;END=82055;SUPPORT=7;COVERAGE=20,21,21,22,23;STRAND=+-;AF=0.333;STDEV_LEN=4.147;STDEV_POS=104.55;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.3SF|chr16;test_2_reheader_POS=Sniffles2.INS.3SF|82055;test_2_reheader_QUAL=Sniffles2.INS.3SF|60;test_2_reheader_FILTERS=Sniffles2.INS.3SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.3SF|test_2|GT:0/1|GQ:30|DR:14|DV:7;test_2_reheader_INFO=Sniffles2.INS.3SF|IMPRECISE|SVTYPE:INS|SVLEN:391|END:82055|SUPPORT:7|COVERAGE:20:21:21:22:23|STRAND:+-|AF:0.333|STDEV_LEN:4.147|STDEV_POS:104.55|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:30:14:7", + "chr16\t82169\tSniffles2.INS.1SF:test_1_reheader|Sniffles2.INS.2SF:test_2_reheader\tN\tCTCCGGGAAGGCCTCCTGAATGCTCCCCACACTGACCCCTTCTTCCCACCACCCTAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=82169;SUPPORT=8;COVERAGE=23,23,23,23,23;STRAND=+-;AF=0.348;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.2SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2SF|chr16;test_1_reheader_POS=Sniffles2.INS.1SF|82169;test_2_reheader_POS=Sniffles2.INS.2SF|82180;test_1_reheader_QUAL=Sniffles2.INS.1SF|60;test_2_reheader_QUAL=Sniffles2.INS.2SF|60;test_1_reheader_FILTERS=Sniffles2.INS.1SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.1SF|test_1|GT:0/1|GQ:38|DR:15|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.2SF|test_2|GT:0/0|GQ:22|DR:19|DV:3;test_1_reheader_INFO=Sniffles2.INS.1SF|PRECISE|SVTYPE:INS|SVLEN:57|END:82169|SUPPORT:8|COVERAGE:23:23:23:23:23|STRAND:+-|AF:0.348|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2SF|IMPRECISE|SVTYPE:INS|SVLEN:111|END:82180|SUPPORT:3|COVERAGE:20:21:22:23:23|STRAND:+-|AF:0.136|STDEV_LEN:3.055|STDEV_POS:113.212|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:38:15:8\t0/0:22:19:3", + "chr16\t153120\tSniffles2.INS.5SF:test_1_reheader|Sniffles2.INS.6SF:test_2_reheader\tN\tACAGTGGGGAGGGGACAGTGGGGAGAGGACAGTAAGGAGGGGACCATGGGGAGGAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=56;END=153120;SUPPORT=23;COVERAGE=22,23,23,23,23;STRAND=+-;AF=1;STDEV_LEN=0.48;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.6SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.5SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.6SF|chr16;test_1_reheader_POS=Sniffles2.INS.5SF|153120;test_2_reheader_POS=Sniffles2.INS.6SF|153120;test_1_reheader_QUAL=Sniffles2.INS.5SF|60;test_2_reheader_QUAL=Sniffles2.INS.6SF|60;test_1_reheader_FILTERS=Sniffles2.INS.5SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.6SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.5SF|test_1|GT:1/1|GQ:60|DR:0|DV:23;test_2_reheader_SAMPLE=Sniffles2.INS.6SF|test_2|GT:1/1|GQ:26|DR:1|DV:13;test_1_reheader_INFO=Sniffles2.INS.5SF|PRECISE|SVTYPE:INS|SVLEN:56|END:153120|SUPPORT:23|COVERAGE:22:23:23:23:23|STRAND:+-|AF:1|STDEV_LEN:0.48|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.6SF|PRECISE|SVTYPE:INS|SVLEN:56|END:153120|SUPPORT:13|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.929|STDEV_LEN:0.916|STDEV_POS:1.061|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:60:0:23\t1/1:26:1:13", + "chr16\t160071\tSniffles2.INS.CSF:test_1_reheader|Sniffles2.INS.CSF:test_2_reheader\tN\tGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGAACAGGCTGTGAGGGTGCCCGGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=583;END=160071;SUPPORT=24;COVERAGE=28,28,28,30,27;STRAND=+-;AF=0.857;STDEV_LEN=0.953;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.CSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.CSF|chr16;test_1_reheader_POS=Sniffles2.INS.CSF|160071;test_2_reheader_POS=Sniffles2.INS.CSF|160091;test_1_reheader_QUAL=Sniffles2.INS.CSF|60;test_2_reheader_QUAL=Sniffles2.INS.CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.CSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.CSF|test_1|GT:1/1|GQ:26|DR:4|DV:24;test_2_reheader_SAMPLE=Sniffles2.INS.CSF|test_2|GT:1/1|GQ:1|DR:4|DV:15;test_1_reheader_INFO=Sniffles2.INS.CSF|PRECISE|SVTYPE:INS|SVLEN:583|END:160071|SUPPORT:24|COVERAGE:28:28:28:30:27|STRAND:+-|AF:0.857|STDEV_LEN:0.953|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.CSF|PRECISE|SVTYPE:INS|SVLEN:584|END:160091|SUPPORT:15|COVERAGE:18:19:19:20:20|STRAND:+-|AF:0.789|STDEV_LEN:1.356|STDEV_POS:10.025|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:26:4:24\t1/1:1:4:15", + "chr16\t160389\tSniffles2.INS.BSF:test_1_reheader|Sniffles2.INS.BSF:test_2_reheader\tN\tGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=328;END=160389;SUPPORT=25;COVERAGE=28,30,30,29,27;STRAND=+-;AF=0.833;STDEV_LEN=0.277;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.BSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.BSF|chr16;test_1_reheader_POS=Sniffles2.INS.BSF|160389;test_2_reheader_POS=Sniffles2.INS.BSF|160389;test_1_reheader_QUAL=Sniffles2.INS.BSF|60;test_2_reheader_QUAL=Sniffles2.INS.BSF|60;test_1_reheader_FILTERS=Sniffles2.INS.BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.BSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.BSF|test_1|GT:1/1|GQ:19|DR:5|DV:25;test_2_reheader_SAMPLE=Sniffles2.INS.BSF|test_2|GT:0/1|GQ:8|DR:5|DV:15;test_1_reheader_INFO=Sniffles2.INS.BSF|PRECISE|SVTYPE:INS|SVLEN:328|END:160389|SUPPORT:25|COVERAGE:28:30:30:29:27|STRAND:+-|AF:0.833|STDEV_LEN:0.277|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.BSF|PRECISE|SVTYPE:INS|SVLEN:328|END:160389|SUPPORT:15|COVERAGE:19:20:20:21:19|STRAND:+-|AF:0.75|STDEV_LEN:0.744|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:19:5:25\t0/1:8:5:15", + "chr16\t160753\tSniffles2.INS.ESF:test_1_reheader|Sniffles2.INS.9SF:test_2_reheader\tN\tGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=145;END=160753;SUPPORT=27;COVERAGE=30,28,28,27,27;STRAND=+-;AF=0.964;STDEV_LEN=0.352;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.9SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.9SF|chr16;test_1_reheader_POS=Sniffles2.INS.ESF|160753;test_2_reheader_POS=Sniffles2.INS.9SF|160753;test_1_reheader_QUAL=Sniffles2.INS.ESF|60;test_2_reheader_QUAL=Sniffles2.INS.9SF|60;test_1_reheader_FILTERS=Sniffles2.INS.ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.9SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.ESF|test_1|GT:1/1|GQ:60|DR:1|DV:27;test_2_reheader_SAMPLE=Sniffles2.INS.9SF|test_2|GT:1/1|GQ:27|DR:2|DV:17;test_1_reheader_INFO=Sniffles2.INS.ESF|PRECISE|SVTYPE:INS|SVLEN:145|END:160753|SUPPORT:27|COVERAGE:30:28:28:27:27|STRAND:+-|AF:0.964|STDEV_LEN:0.352|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.9SF|PRECISE|SVTYPE:INS|SVLEN:145|END:160753|SUPPORT:17|COVERAGE:20:19:19:19:20|STRAND:+-|AF:0.895|STDEV_LEN:1.612|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:60:1:27\t1/1:27:2:17", + "chr16\t163320\tSniffles2.DEL.5DSF:test_1_reheader|Sniffles2.DEL.8FSF:test_2_reheader\tagtgagtaggagacagtggggagaggacagtggagaggggacagtgaggaggggaccatgggaaggggaccgtggagtggggacagtgaggaggggaccatagggagggga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-111;END=163431;SUPPORT=7;COVERAGE=23,22,22,22,22;STRAND=+-;AF=0.318;STDEV_LEN=1.095;STDEV_POS=10.733;FOUND_IN=sniffles;VARID=Sniffles2.DEL.8FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.5DSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.8FSF|chr16;test_1_reheader_POS=Sniffles2.DEL.5DSF|163320;test_2_reheader_POS=Sniffles2.DEL.8FSF|163320;test_1_reheader_QUAL=Sniffles2.DEL.5DSF|60;test_2_reheader_QUAL=Sniffles2.DEL.8FSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.5DSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.8FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5DSF|test_1|GT:0/1|GQ:28|DR:15|DV:7;test_2_reheader_SAMPLE=Sniffles2.DEL.8FSF|test_2|GT:0/1|GQ:49|DR:11|DV:8;test_1_reheader_INFO=Sniffles2.DEL.5DSF|PRECISE|SVTYPE:DEL|SVLEN:-111|END:163431|SUPPORT:7|COVERAGE:23:22:22:22:22|STRAND:+-|AF:0.318|STDEV_LEN:1.095|STDEV_POS:10.733|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.8FSF|PRECISE|SVTYPE:DEL|SVLEN:-111|END:163431|SUPPORT:8|COVERAGE:19:19:19:19:18|STRAND:+-|AF:0.421|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:28:15:7\t0/1:49:11:8", + "chr16\t163591\tSniffles2.DEL.5ESF:test_1_reheader|Sniffles2.DEL.92SF:test_2_reheader\tggaggggaccgtgggaaggagacagtgaggaggggaccttggggaggggacagtgaggaggggaccatggggaggggacagtgaggaggggacaatggagaggggacagtgaggaggggactgtggggagaggacagtgaggaggggaccatggggagggcacagtggggaggggagagtgaggaagggacagtgaggaggggactgtgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=163801;SUPPORT=7;COVERAGE=22,22,22,22,21;STRAND=+-;AF=0.318;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.92SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.5ESF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.92SF|chr16;test_1_reheader_POS=Sniffles2.DEL.5ESF|163591;test_2_reheader_POS=Sniffles2.DEL.92SF|163594;test_1_reheader_QUAL=Sniffles2.DEL.5ESF|60;test_2_reheader_QUAL=Sniffles2.DEL.92SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.5ESF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.92SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5ESF|test_1|GT:0/1|GQ:28|DR:15|DV:7;test_2_reheader_SAMPLE=Sniffles2.DEL.92SF|test_2|GT:0/1|GQ:49|DR:11|DV:8;test_1_reheader_INFO=Sniffles2.DEL.5ESF|PRECISE|SVTYPE:DEL|SVLEN:-210|END:163801|SUPPORT:7|COVERAGE:22:22:22:22:21|STRAND:+-|AF:0.318|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.92SF|PRECISE|SVTYPE:DEL|SVLEN:-209|END:163803|SUPPORT:8|COVERAGE:20:19:19:18:18|STRAND:+-|AF:0.421|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:28:15:7\t0/1:49:11:8", + "chr16\t164801\tSniffles2.INS.FSF:test_1_reheader|Sniffles2.INS.ESF:test_2_reheader\tN\tCGGGGTCGCGGGGCGGGCGGGTCGCGGGGCGGGGTCGCGGGGGCGGGCGAGGTC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=54;END=164801;SUPPORT=8;COVERAGE=21,21,21,21,21;STRAND=+-;AF=0.381;STDEV_LEN=2.16;STDEV_POS=17.972;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.ESF|chr16;test_1_reheader_POS=Sniffles2.INS.FSF|164801;test_2_reheader_POS=Sniffles2.INS.ESF|164801;test_1_reheader_QUAL=Sniffles2.INS.FSF|60;test_2_reheader_QUAL=Sniffles2.INS.ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.FSF|test_1|GT:0/1|GQ:43|DR:13|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.ESF|test_2|GT:0/1|GQ:52|DR:10|DV:8;test_1_reheader_INFO=Sniffles2.INS.FSF|PRECISE|SVTYPE:INS|SVLEN:54|END:164801|SUPPORT:8|COVERAGE:21:21:21:21:21|STRAND:+-|AF:0.381|STDEV_LEN:2.16|STDEV_POS:17.972|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.ESF|IMPRECISE|SVTYPE:INS|SVLEN:59|END:164801|SUPPORT:8|COVERAGE:18:18:18:18:17|STRAND:+-|AF:0.444|STDEV_LEN:5.565|STDEV_POS:38.821|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:43:13:8\t0/1:52:10:8", + "chr16\t182789\tSniffles2.INS.10SF:test_1_reheader|Sniffles2.INS.FSF:test_2_reheader\tN\tTGAAACACCGTCTCTACTAAAAATACAAAAATTAGCCAGGCATAGTGGCGGGCGCCTGTAATCCCAGCTGTTCGGGAGGCTGAGGCAGGACAATCACTTAAACCAGGGAAGCAGAGGTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGACCGAGACTGTCTCAAAAAAAAGACCGGGCACGGTGGCTCACGCCTGTAATCCCACCACTTTGGGAGGCTGAGGCGGGCTGATCACGATGTCAGGAGATCTAGACCATCCTGGCCAACATGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=286;END=182789;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.10SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.FSF|chr16;test_1_reheader_POS=Sniffles2.INS.10SF|182789;test_2_reheader_POS=Sniffles2.INS.FSF|182789;test_1_reheader_QUAL=Sniffles2.INS.10SF|60;test_2_reheader_QUAL=Sniffles2.INS.FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.10SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.10SF|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.FSF|test_2|GT:1/1|GQ:2|DR:2|DV:8;test_1_reheader_INFO=Sniffles2.INS.10SF|PRECISE|SVTYPE:INS|SVLEN:286|END:182789|SUPPORT:12|COVERAGE:13:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.FSF|PRECISE|SVTYPE:INS|SVLEN:286|END:182789|SUPPORT:8|COVERAGE:10:10:10:10:10|STRAND:+-|AF:0.8|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:2:2:8", + "chr16\t186052\tSniffles2.DEL.5FSF\tggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-629;END=186681;SUPPORT=6;COVERAGE=11,11,11,11,11;STRAND=+-;AF=0.545;STDEV_LEN=8.5;STDEV_POS=8.5;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.5FSF|chr16;test_1_reheader_POS=Sniffles2.DEL.5FSF|186052;test_1_reheader_QUAL=Sniffles2.DEL.5FSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.5FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5FSF|test_1|GT:0/1|GQ:33|DR:5|DV:6;test_1_reheader_INFO=Sniffles2.DEL.5FSF|PRECISE|SVTYPE:DEL|SVLEN:-629|END:186681|SUPPORT:6|COVERAGE:11:11:11:11:11|STRAND:+-|AF:0.545|STDEV_LEN:8.5|STDEV_POS:8.5|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:33:5:6\t./.:.:.:.", + "chr16\t186294\tSniffles2.DEL.60SF:test_1_reheader|Sniffles2.DEL.96SF:test_2_reheader\tcagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacggggggaacagcgacacgggg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-863;END=187157;SUPPORT=5;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.455;STDEV_LEN=0.577;STDEV_POS=6.928;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.96SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.60SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.96SF|chr16;test_1_reheader_POS=Sniffles2.DEL.60SF|186294;test_2_reheader_POS=Sniffles2.DEL.96SF|186313;test_1_reheader_QUAL=Sniffles2.DEL.60SF|60;test_2_reheader_QUAL=Sniffles2.DEL.96SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.60SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.96SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.60SF|test_1|GT:0/1|GQ:33|DR:6|DV:5;test_2_reheader_SAMPLE=Sniffles2.DEL.96SF|test_2|GT:0/1|GQ:10|DR:3|DV:7;test_1_reheader_INFO=Sniffles2.DEL.60SF|PRECISE|SVTYPE:DEL|SVLEN:-863|END:187157|SUPPORT:5|COVERAGE:11:11:11:11:10|STRAND:+-|AF:0.455|STDEV_LEN:0.577|STDEV_POS:6.928|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.96SF|IMPRECISE|SVTYPE:DEL|SVLEN:-830|END:187143|SUPPORT:7|COVERAGE:10:10:10:10:10|STRAND:+-|AF:0.7|STDEV_LEN:9.815|STDEV_POS:21.245|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:33:6:5\t0/1:10:3:7", + "chr16\t239176\tSniffles2.INS.10SF\tN\tTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGGGCTTGCAGTGAGCCGAGATCACGCCACTACACTCGAGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAGCAAACATAATGAAAATTAAAAAATTTTTAAAAAAACCCTGCAAACTTGGTGAATTTTTTACCGACTCGTGCTTTGCAAAATTCTTCATGGAACTTAGATTATATCAGGAAGATGTTAAAAAAAAAAAAAAAAAAAAGAATGCTGACTCCTAACCAAATAACTATGAAGCAGATGCTGAGAGATCAAAGGAGCAAATCTAAAAATCATCAGAGATGGGGCCTGGGGGAGAAGTATGCTGGCTTATAGATGAAAATGACTGGCTCTGTGTTGATAACTGTTGATAACTGTTGGACCTGGGTAATGGGTTTATGAGGCTGGTGTTCTCTACTTTTGTTAATGTTTGAGCATTTACATAATAAAGGTTTTTTTTTTTCATTGTATATAGAAATGGACTCACTATGTTGCCCAGGCTGGCCTCAAATTCCCGGGCTCAAGTAGTCCTCCCTCCTCTGCCTCTTGAAGTGCTGAGATTATAGGCATGAGACACCACACCTGGATCAAAGGTTAAAAAAATAATGATAAAAGAAGTAAGTTGAGGCTACTGTGGGCACACTGCCCATGGGTTAGCCCTGCTGTGCAAGGATCAGAAAAAAAAAAAAAAAAGAAATTGAAGCTAAGGCCTAATTAACTGGCTTATCTTGTAGAGTTTAGCAGAAGTGACCAAGTTTAGAGTTATACTTTATCTTTTTCTTTCTCTGCCCCCTACTTAATGAAGGACAAAAATGAGTAACATGGCTGGGTGTGGTGGCTCACGCCTGTCATCCCAGCACTTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCATGGCCAACATGATGAAACCAAAATACAAAAGTTAGCCAGGCGTGGTGGCGGGCGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1020;END=239176;SUPPORT=2;COVERAGE=2,2,2,2,4;STRAND=+;AF=1;STDEV_LEN=1.414;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.10SF|chr16;test_2_reheader_POS=Sniffles2.INS.10SF|239176;test_2_reheader_QUAL=Sniffles2.INS.10SF|60;test_2_reheader_FILTERS=Sniffles2.INS.10SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.10SF|test_2|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_INFO=Sniffles2.INS.10SF|PRECISE|SVTYPE:INS|SVLEN:1020|END:239176|SUPPORT:2|COVERAGE:2:2:2:2:4|STRAND:+|AF:1|STDEV_LEN:1.414|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:5:0:2", + "chr16\t318898\tSniffles2.INS.12SF\tN\tGCCAGGGCCTTGGTGAGAGCGGCTCTGACCCCTGGCTGTGCGGAGAGAATGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=53;END=318898;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=2.082;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.12SF|chr16;test_2_reheader_POS=Sniffles2.INS.12SF|318898;test_2_reheader_QUAL=Sniffles2.INS.12SF|60;test_2_reheader_FILTERS=Sniffles2.INS.12SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.12SF|test_2|GT:0/1|GQ:17|DR:8|DV:4;test_2_reheader_INFO=Sniffles2.INS.12SF|PRECISE|SVTYPE:INS|SVLEN:53|END:318898|SUPPORT:4|COVERAGE:12:12:12:12:12|STRAND:+-|AF:0.333|STDEV_LEN:2.082|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:17:8:4", + "chr16\t321645\tSniffles2.INS.13SF\tN\tGGATTCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGCGGATGCCAACCCACGAAGGGTTAAACCCTCTCATAGCTGGGAATATGAGGTAGAAGGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=116;END=321645;SUPPORT=8;COVERAGE=16,16,16,15,16;STRAND=+-;AF=0.5;STDEV_LEN=0.548;STDEV_POS=45.616;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.13SF|chr16;test_2_reheader_POS=Sniffles2.INS.13SF|321645;test_2_reheader_QUAL=Sniffles2.INS.13SF|60;test_2_reheader_FILTERS=Sniffles2.INS.13SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.13SF|test_2|GT:0/1|GQ:57|DR:8|DV:8;test_2_reheader_INFO=Sniffles2.INS.13SF|IMPRECISE|SVTYPE:INS|SVLEN:116|END:321645|SUPPORT:8|COVERAGE:16:16:16:15:16|STRAND:+-|AF:0.5|STDEV_LEN:0.548|STDEV_POS:45.616|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:57:8:8", + "chr16\t362990\tSniffles2.INS.12SF:test_1_reheader|Sniffles2.INS.14SF:test_2_reheader\tN\tGACTTAGCACCGGGGGGTCTCGGGCTGCGGCTGCTCTCCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=42;END=362990;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=0.577;STDEV_POS=9.238;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.14SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.12SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.14SF|chr16;test_1_reheader_POS=Sniffles2.INS.12SF|362990;test_2_reheader_POS=Sniffles2.INS.14SF|362984;test_1_reheader_QUAL=Sniffles2.INS.12SF|60;test_2_reheader_QUAL=Sniffles2.INS.14SF|60;test_1_reheader_FILTERS=Sniffles2.INS.12SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.14SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.12SF|test_1|GT:0/1|GQ:21|DR:3|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.14SF|test_2|GT:0/1|GQ:46|DR:8|DV:12;test_1_reheader_INFO=Sniffles2.INS.12SF|PRECISE|SVTYPE:INS|SVLEN:42|END:362990|SUPPORT:3|COVERAGE:7:6:6:6:5|STRAND:+-|AF:0.5|STDEV_LEN:0.577|STDEV_POS:9.238|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.14SF|PRECISE|SVTYPE:INS|SVLEN:41|END:362984|SUPPORT:12|COVERAGE:20:20:20:20:19|STRAND:+-|AF:0.6|STDEV_LEN:0.408|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:21:3:3\t0/1:46:8:12", + "chr16\t370391\tSniffles2.INS.13SF:test_1_reheader|Sniffles2.INS.16SF:test_2_reheader\tN\tCTACCCTGCCCCGGCTCTCACCCCCTACCCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCTGCCCCCGGCTCTCACCGCTACCCCCCGGCTCTCACCCGCTACCCCGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCCGGCCCCCCGGCTCTCACCTCCTACCCGGCCCCGGCTCTCACCCGCTCCCCCGGCCCCCGGCTCTCACCCGCTCACCCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCTCGGCTCTCACCCCCTACCCCGGCCCCGGCTCTCACCCCCTACCCCTGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGCTCTCACCTCCTACCCCGGCCCGGCTCTCACCCGCTACCCCGGCCCCGGCTCTCACCCCCTACCCCGGCCCCCGGCTCTCACCCGCTACCCCGGCCCCCGGGCTCTCACTCC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=736;END=370391;SUPPORT=7;COVERAGE=7,7,7,7,7;STRAND=+-;AF=1;STDEV_LEN=65.282;STDEV_POS=1.095;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.16SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.13SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.16SF|chr16;test_1_reheader_POS=Sniffles2.INS.13SF|370391;test_2_reheader_POS=Sniffles2.INS.16SF|370391;test_1_reheader_QUAL=Sniffles2.INS.13SF|60;test_2_reheader_QUAL=Sniffles2.INS.16SF|60;test_1_reheader_FILTERS=Sniffles2.INS.13SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.16SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.13SF|test_1|GT:1/1|GQ:19|DR:0|DV:7;test_2_reheader_SAMPLE=Sniffles2.INS.16SF|test_2|GT:1/1|GQ:3|DR:3|DV:12;test_1_reheader_INFO=Sniffles2.INS.13SF|IMPRECISE|SVTYPE:INS|SVLEN:736|END:370391|SUPPORT:7|COVERAGE:7:7:7:7:7|STRAND:+-|AF:1|STDEV_LEN:65.282|STDEV_POS:1.095|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.16SF|IMPRECISE|SVTYPE:INS|SVLEN:648|END:370391|SUPPORT:12|COVERAGE:18:15:15:15:18|STRAND:+-|AF:0.8|STDEV_LEN:59.3|STDEV_POS:1.069|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:19:0:7\t1/1:3:3:12", + "chr16\t378308\tSniffles2.INS.14SF:test_1_reheader|Sniffles2.INS.18SF:test_2_reheader\tN\tCCACTCTGACTGCCATCGCCACTCTGACTGCCATCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=36;END=378308;SUPPORT=4;COVERAGE=17,17,17,18,18;STRAND=+-;AF=0.235;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.18SF:test_2_reheader;set=filterIntest_1_reheader-test_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.14SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.18SF|chr16;test_1_reheader_POS=Sniffles2.INS.14SF|378308;test_2_reheader_POS=Sniffles2.INS.18SF|378308;test_1_reheader_QUAL=Sniffles2.INS.14SF|60;test_2_reheader_QUAL=Sniffles2.INS.18SF|60;test_1_reheader_FILTERS=Sniffles2.INS.14SF|GT;test_2_reheader_FILTERS=Sniffles2.INS.18SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.14SF|test_1|GT:0/1|GQ:3|DR:13|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.18SF|test_2|GT:0/1|GQ:52|DR:10|DV:8;test_1_reheader_INFO=Sniffles2.INS.14SF|PRECISE|SVTYPE:INS|SVLEN:36|END:378308|SUPPORT:4|COVERAGE:17:17:17:18:18|STRAND:+-|AF:0.235|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.18SF|PRECISE|SVTYPE:INS|SVLEN:36|END:378308|SUPPORT:8|COVERAGE:19:18:18:18:18|STRAND:+-|AF:0.444|STDEV_LEN:0.447|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:3:13:4\t0/1:52:10:8", + "chr16\t378517\tSniffles2.INS.15SF:test_1_reheader|Sniffles2.INS.1ASF:test_2_reheader\tN\tGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACACTGCCATCCCCACCCGCACTGCCATCGCCACCCTGACTGCCATCGCCACCCACAATGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCCCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCGCACTGCCATCGCCACCCACACTGCCATC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=240;END=378517;SUPPORT=12;COVERAGE=17,18,18,18,18;STRAND=+-;AF=0.667;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.1ASF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.15SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.1ASF|chr16;test_1_reheader_POS=Sniffles2.INS.15SF|378517;test_2_reheader_POS=Sniffles2.INS.1ASF|378517;test_1_reheader_QUAL=Sniffles2.INS.15SF|60;test_2_reheader_QUAL=Sniffles2.INS.1ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.15SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.1ASF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.15SF|test_1|GT:0/1|GQ:26|DR:6|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.1ASF|test_2|GT:0/0|GQ:11|DR:15|DV:3;test_1_reheader_INFO=Sniffles2.INS.15SF|PRECISE|SVTYPE:INS|SVLEN:240|END:378517|SUPPORT:12|COVERAGE:17:18:18:18:18|STRAND:+-|AF:0.667|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.1ASF|PRECISE|SVTYPE:INS|SVLEN:240|END:378517|SUPPORT:3|COVERAGE:19:18:18:18:18|STRAND:+-|AF:0.167|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:26:6:12\t0/0:11:15:3", + "chr16\t397717\tSniffles2.INS.16SF:test_1_reheader|Sniffles2.INS.1DSF:test_2_reheader\tN\tTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGTGGGGGTGGGGGTGTGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGTGAGGGAGTCGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGTGAGGGAGTCGGGGGGTGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGGGTGAGGGAGTCGGGGGGTGGGGGTGGGGGTGGGGGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=491;END=397717;SUPPORT=3;COVERAGE=3,3,3,3,3;STRAND=+-;AF=1;STDEV_LEN=2.309;STDEV_POS=5.196;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.1DSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.16SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.1DSF|chr16;test_1_reheader_POS=Sniffles2.INS.16SF|397717;test_2_reheader_POS=Sniffles2.INS.1DSF|397727;test_1_reheader_QUAL=Sniffles2.INS.16SF|60;test_2_reheader_QUAL=Sniffles2.INS.1DSF|60;test_1_reheader_FILTERS=Sniffles2.INS.16SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.1DSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.16SF|test_1|GT:1/1|GQ:8|DR:0|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.1DSF|test_2|GT:0/1|GQ:9|DR:4|DV:11;test_1_reheader_INFO=Sniffles2.INS.16SF|PRECISE|SVTYPE:INS|SVLEN:491|END:397717|SUPPORT:3|COVERAGE:3:3:3:3:3|STRAND:+-|AF:1|STDEV_LEN:2.309|STDEV_POS:5.196|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.1DSF|IMPRECISE|SVTYPE:INS|SVLEN:506|END:397727|SUPPORT:11|COVERAGE:18:15:15:15:16|STRAND:+-|AF:0.733|STDEV_LEN:34.854|STDEV_POS:7.448|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:8:0:3\t0/1:9:4:11", + "chr16\t410360\tSniffles2.DEL.99SF\ttcttccgggtgggtgcctcgtgcgctctgtgagaag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=410396;SUPPORT=7;COVERAGE=15,14,14,14,12;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.99SF|chr16;test_2_reheader_POS=Sniffles2.DEL.99SF|410360;test_2_reheader_QUAL=Sniffles2.DEL.99SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.99SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.99SF|test_2|GT:0/1|GQ:50|DR:7|DV:7;test_2_reheader_INFO=Sniffles2.DEL.99SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:410396|SUPPORT:7|COVERAGE:15:14:14:14:12|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:50:7:7", + "chr16\t433138\tSniffles2.INS.21SF\tN\tATTCTCCTGCCTCAGCCTCCCAAGAAGCTGGGACTACAGGCGCCCGCCACCACGCCCGGCTAATTTTTATATTTTTAGTAGAGACGAAGTTTCACCATGTTAGCCAGGATGGTCTCCATCTCCTGACCTCGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCTACTGTGCCCGGCCTGTCATTTTTATATATTGGGAAAGTTTTGAGTCCTTTCTCTAGGTATGTTGAAATATACAGGCATGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCCGAGGCGGGTGAATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAAAATTAGCCAGGCATGGTGGTGGGCGCCTGTAGTCCCAGCTACTCCAGAGGCTGAGGCAGGAGAATGGCGTGAACCTGAGCTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACTGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAATATACAATATATTGTTGTTAAATTTAGTCACCCTACTCTGCTACCAAACATTAGAACTTATCCTTTGTCTCATTGTAATTTTTTTTTTTTTGAGATGGGGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCTATCTTGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=725;END=433138;SUPPORT=2;COVERAGE=4,4,4,4,3;STRAND=+-;AF=0.5;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.21SF|chr16;test_2_reheader_POS=Sniffles2.INS.21SF|433138;test_2_reheader_QUAL=Sniffles2.INS.21SF|60;test_2_reheader_FILTERS=Sniffles2.INS.21SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.21SF|test_2|GT:0/1|GQ:14|DR:2|DV:2;test_2_reheader_INFO=Sniffles2.INS.21SF|PRECISE|SVTYPE:INS|SVLEN:725|END:433138|SUPPORT:2|COVERAGE:4:4:4:4:3|STRAND:+-|AF:0.5|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:14:2:2", + "chr16\t433317\tSniffles2.DEL.9CSF\tcaccgctcattgcatatttctaaccattaaccgtgctctttaccctcctgatgcttcccagcctctgatatcaatcgctctattctctacctccattagatccacttttctagctcccacataagagtaaaaacgtgatatttgtctttctctgcctgtct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-161;END=433478;SUPPORT=2;COVERAGE=4,4,4,3,3;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.9CSF|chr16;test_2_reheader_POS=Sniffles2.DEL.9CSF|433317;test_2_reheader_QUAL=Sniffles2.DEL.9CSF|60;test_2_reheader_FILTERS=Sniffles2.DEL.9CSF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.9CSF|test_2|GT:0/1|GQ:14|DR:2|DV:2;test_2_reheader_INFO=Sniffles2.DEL.9CSF|PRECISE|SVTYPE:DEL|SVLEN:-161|END:433478|SUPPORT:2|COVERAGE:4:4:4:3:3|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:14:2:2", + "chr16\t492363\tSniffles2.INS.22SF\tN\tTCCCGGGGGACCCGAGGCCACCCCGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGCGAGGCCGCCCAGAGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGGGAGCGATCCCAGGGCCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCCAAGCCCTCCCCGGGAGACCCGAGGCCGTCCAGGGCCCTTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCGGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCGGGAGACCCGAGGCCGCCCAGAGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCCAGGGCCCTCCCCGGGAGACCCGAGGCCGCCCAGGGCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=1083;END=492363;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=4.243;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.22SF|chr16;test_2_reheader_POS=Sniffles2.INS.22SF|492363;test_2_reheader_QUAL=Sniffles2.INS.22SF|60;test_2_reheader_FILTERS=Sniffles2.INS.22SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.22SF|test_2|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_INFO=Sniffles2.INS.22SF|PRECISE|SVTYPE:INS|SVLEN:1083|END:492363|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:+|AF:1|STDEV_LEN:4.243|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:5:0:2", + "chr16\t494828\tSniffles2.INS.23SF\tN\tGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGCAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATAGCATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGATCCTGGGAGGTCGAGGCTGCTGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGAGGATCACATGAGCCGGGGAGGTCGAGGCTGCAGAGGTGGGGCGGATCACATGAGCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=2706;END=494828;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+;AF=1;STDEV_LEN=2.121;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.23SF|chr16;test_2_reheader_POS=Sniffles2.INS.23SF|494828;test_2_reheader_QUAL=Sniffles2.INS.23SF|60;test_2_reheader_FILTERS=Sniffles2.INS.23SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.23SF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_INFO=Sniffles2.INS.23SF|PRECISE|SVTYPE:INS|SVLEN:2706|END:494828|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:+|AF:1|STDEV_LEN:2.121|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t504280\tSniffles2.INS.17SF:test_1_reheader|Sniffles2.INS.24SF:test_2_reheader\tN\tTCCATCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCTGTA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=74;END=504280;SUPPORT=4;COVERAGE=4,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.24SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.17SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.24SF|chr16;test_1_reheader_POS=Sniffles2.INS.17SF|504280;test_2_reheader_POS=Sniffles2.INS.24SF|504280;test_1_reheader_QUAL=Sniffles2.INS.17SF|60;test_2_reheader_QUAL=Sniffles2.INS.24SF|60;test_1_reheader_FILTERS=Sniffles2.INS.17SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.24SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.17SF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.24SF|test_2|GT:0/1|GQ:0|DR:2|DV:7;test_1_reheader_INFO=Sniffles2.INS.17SF|PRECISE|SVTYPE:INS|SVLEN:74|END:504280|SUPPORT:4|COVERAGE:4:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.24SF|PRECISE|SVTYPE:INS|SVLEN:74|END:504280|SUPPORT:7|COVERAGE:9:9:9:10:13|STRAND:+-|AF:0.778|STDEV_LEN:0|STDEV_POS:13.416|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t0/1:0:2:7", + "chr16\t504419\tSniffles2.INS.18SF:test_1_reheader|Sniffles2.INS.26SF:test_2_reheader\tN\tTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTTGTGCACCCCCTCACCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCTCACCTCCTCCTGTACCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=256;END=504419;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.26SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.18SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.26SF|chr16;test_1_reheader_POS=Sniffles2.INS.18SF|504419;test_2_reheader_POS=Sniffles2.INS.26SF|504419;test_1_reheader_QUAL=Sniffles2.INS.18SF|60;test_2_reheader_QUAL=Sniffles2.INS.26SF|60;test_1_reheader_FILTERS=Sniffles2.INS.18SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.26SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.18SF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.26SF|test_2|GT:0/1|GQ:20|DR:4|DV:7;test_1_reheader_INFO=Sniffles2.INS.18SF|PRECISE|SVTYPE:INS|SVLEN:256|END:504419|SUPPORT:4|COVERAGE:4:4:4:4:5|STRAND:+-|AF:1|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.26SF|PRECISE|SVTYPE:INS|SVLEN:224|END:504419|SUPPORT:7|COVERAGE:9:10:11:11:13|STRAND:+-|AF:0.636|STDEV_LEN:15.566|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t0/1:20:4:7", + "chr16\t507740\tSniffles2.INS.28SF\tN\tCGTTTCCCGTTTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGTCATCCTAAGGTCC\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=81;END=507740;SUPPORT=3;COVERAGE=14,14,14,14,16;STRAND=+;AF=0.214;STDEV_LEN=0;STDEV_POS=0.577;SUPPORT_LONG=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.28SF|chr16;test_2_reheader_POS=Sniffles2.INS.28SF|507740;test_2_reheader_QUAL=Sniffles2.INS.28SF|60;test_2_reheader_FILTERS=Sniffles2.INS.28SF|GT;test_2_reheader_SAMPLE=Sniffles2.INS.28SF|test_2|GT:0/0|GQ:0|DR:11|DV:3;test_2_reheader_INFO=Sniffles2.INS.28SF|PRECISE|SVTYPE:INS|SVLEN:81|END:507740|SUPPORT:3|COVERAGE:14:14:14:14:16|STRAND:+|AF:0.214|STDEV_LEN:0|STDEV_POS:0.577|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:0:11:3", + "chr16\t507831\tSniffles2.INS.19SF\tN\tTTCAGTATCATCTGCCCGTTCTGAGCCATTTGCTCTCTAGCCCTACCATACAGCTGCCATCCTAAGAGTACGTTTCCCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=81;END=507831;SUPPORT=4;COVERAGE=5,5,5,5,7;STRAND=+-;AF=0.8;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.19SF|chr16;test_1_reheader_POS=Sniffles2.INS.19SF|507831;test_1_reheader_QUAL=Sniffles2.INS.19SF|60;test_1_reheader_FILTERS=Sniffles2.INS.19SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.19SF|test_1|GT:1/1|GQ:1|DR:1|DV:4;test_1_reheader_INFO=Sniffles2.INS.19SF|PRECISE|SVTYPE:INS|SVLEN:81|END:507831|SUPPORT:4|COVERAGE:5:5:5:5:7|STRAND:+-|AF:0.8|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t1/1:1:1:4\t./.:.:.:.", + "chr16\t534179\tSniffles2.INS.1ASF:test_1_reheader|Sniffles2.INS.2CSF:test_2_reheader\tN\tGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACGGGGCCGTGGTCCTGTCGTGGGAGGCGACGGTGAGGGCGGCCCGGGGTCCCGACG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=162;END=534179;SUPPORT=5;COVERAGE=5,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1ASF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2CSF|chr16;test_1_reheader_POS=Sniffles2.INS.1ASF|534179;test_2_reheader_POS=Sniffles2.INS.2CSF|534179;test_1_reheader_QUAL=Sniffles2.INS.1ASF|60;test_2_reheader_QUAL=Sniffles2.INS.2CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.1ASF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1ASF|test_1|GT:1/1|GQ:13|DR:0|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.2CSF|test_2|GT:1/1|GQ:11|DR:3|DV:15;test_1_reheader_INFO=Sniffles2.INS.1ASF|PRECISE|SVTYPE:INS|SVLEN:162|END:534179|SUPPORT:5|COVERAGE:5:5:5:5:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2CSF|PRECISE|SVTYPE:INS|SVLEN:216|END:534179|SUPPORT:15|COVERAGE:19:18:18:17:17|STRAND:+-|AF:0.833|STDEV_LEN:18.992|STDEV_POS:1.897|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:13:0:5\t1/1:11:3:15", + "chr16\t544781\tSniffles2.INS.1BSF:test_1_reheader|Sniffles2.INS.2DSF:test_2_reheader\tN\tCGTCTCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCGTCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCCACGTCGCCTCCCCTCACGTCGCCTCCCCCACGTCGTCGCCTCCCCCACGTCGTCGC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=344;END=544781;SUPPORT=8;COVERAGE=8,8,8,8,8;STRAND=+-;AF=1;STDEV_LEN=4.69;STDEV_POS=25.5;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2DSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2DSF|chr16;test_1_reheader_POS=Sniffles2.INS.1BSF|544781;test_2_reheader_POS=Sniffles2.INS.2DSF|544781;test_1_reheader_QUAL=Sniffles2.INS.1BSF|60;test_2_reheader_QUAL=Sniffles2.INS.2DSF|60;test_1_reheader_FILTERS=Sniffles2.INS.1BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2DSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1BSF|test_1|GT:1/1|GQ:22|DR:0|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.2DSF|test_2|GT:1/1|GQ:21|DR:2|DV:15;test_1_reheader_INFO=Sniffles2.INS.1BSF|IMPRECISE|SVTYPE:INS|SVLEN:344|END:544781|SUPPORT:8|COVERAGE:8:8:8:8:8|STRAND:+-|AF:1|STDEV_LEN:4.69|STDEV_POS:25.5|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2DSF|IMPRECISE|SVTYPE:INS|SVLEN:348|END:544781|SUPPORT:15|COVERAGE:17:17:17:17:17|STRAND:+-|AF:0.882|STDEV_LEN:5.196|STDEV_POS:28.465|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:22:0:8\t1/1:21:2:15", + "chr16\t550769\tSniffles2.INS.1CSF:test_1_reheader|Sniffles2.INS.2ESF:test_2_reheader\tN\tCGGTGAGGGTCCCCGGTCGGTGAGGGCGCCCCGTCAGTGAGGGTCCCGGTCAGTGAGGGCCCCGGTCGGTGAGGGTCCCCGGTCGGTGAGGGCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGACCCGGTCGGTGAGGGCCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGCCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCCTGTCGGTGAGGGTCCCGGTCGGTGAGGGCCCCGGTCGGTGAGGGTGCCCCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=280;END=550769;SUPPORT=13;COVERAGE=13,13,13,13,13;STRAND=+-;AF=1;STDEV_LEN=1;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1CSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2ESF|chr16;test_1_reheader_POS=Sniffles2.INS.1CSF|550769;test_2_reheader_POS=Sniffles2.INS.2ESF|550769;test_1_reheader_QUAL=Sniffles2.INS.1CSF|60;test_2_reheader_QUAL=Sniffles2.INS.2ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.1CSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1CSF|test_1|GT:1/1|GQ:36|DR:0|DV:13;test_2_reheader_SAMPLE=Sniffles2.INS.2ESF|test_2|GT:1/1|GQ:38|DR:2|DV:21;test_1_reheader_INFO=Sniffles2.INS.1CSF|PRECISE|SVTYPE:INS|SVLEN:280|END:550769|SUPPORT:13|COVERAGE:13:13:13:13:13|STRAND:+-|AF:1|STDEV_LEN:1|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2ESF|PRECISE|SVTYPE:INS|SVLEN:280|END:550769|SUPPORT:21|COVERAGE:23:23:23:23:24|STRAND:+-|AF:0.913|STDEV_LEN:0.65|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:36:0:13\t1/1:38:2:21", + "chr16\t553057\tSniffles2.INS.1DSF:test_1_reheader|Sniffles2.INS.2FSF:test_2_reheader\tN\tTGCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCGTGCCCCCCCACCCCTGCACAGGTGCCCCCTCCCCTACCCCGCTGCACCCACACCCAACTCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=121;END=553057;SUPPORT=6;COVERAGE=12,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.2FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1DSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.2FSF|chr16;test_1_reheader_POS=Sniffles2.INS.1DSF|553057;test_2_reheader_POS=Sniffles2.INS.2FSF|553059;test_1_reheader_QUAL=Sniffles2.INS.1DSF|60;test_2_reheader_QUAL=Sniffles2.INS.2FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.1DSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.2FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1DSF|test_1|GT:0/1|GQ:33|DR:5|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.2FSF|test_2|GT:0/1|GQ:59|DR:11|DV:9;test_1_reheader_INFO=Sniffles2.INS.1DSF|PRECISE|SVTYPE:INS|SVLEN:121|END:553057|SUPPORT:6|COVERAGE:12:11:11:11:10|STRAND:+-|AF:0.545|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.2FSF|PRECISE|SVTYPE:INS|SVLEN:122|END:553059|SUPPORT:9|COVERAGE:21:20:20:20:19|STRAND:+-|AF:0.45|STDEV_LEN:0.983|STDEV_POS:9.709|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:33:5:6\t0/1:59:11:9", + "chr16\t571110\tSniffles2.INS.1FSF:test_1_reheader|Sniffles2.INS.30SF:test_2_reheader\tN\tTGGCTAGCCTGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTGTGTGTGTGTGTGTGTGTCTGGCTAGCTGGCGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTATGTATGTGTCTGGCTAGCCTGGTGCCCGTGGCTAGCCTGGTGCCCGTGTGTGTGTGTGTGGGGGGGGCTAGCCTTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTCTGGCTAGCGTGTGTGTGTGTGTCTGGCTAGCCTGTGTGTGTGTGTGTGCTAGCCTGGCGCCCGTGTGTGTGTGTGTGTGTGTCTGGCTAGCCTGGCACCG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=358;END=571110;SUPPORT=16;COVERAGE=18,17,16,16,18;STRAND=+-;AF=1;STDEV_LEN=3.78;STDEV_POS=14.714;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.30SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.1FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.30SF|chr16;test_1_reheader_POS=Sniffles2.INS.1FSF|571110;test_2_reheader_POS=Sniffles2.INS.30SF|571110;test_1_reheader_QUAL=Sniffles2.INS.1FSF|60;test_2_reheader_QUAL=Sniffles2.INS.30SF|60;test_1_reheader_FILTERS=Sniffles2.INS.1FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.30SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.1FSF|test_1|GT:1/1|GQ:44|DR:0|DV:16;test_2_reheader_SAMPLE=Sniffles2.INS.30SF|test_2|GT:0/1|GQ:27|DR:5|DV:8;test_1_reheader_INFO=Sniffles2.INS.1FSF|PRECISE|SVTYPE:INS|SVLEN:358|END:571110|SUPPORT:16|COVERAGE:18:17:16:16:18|STRAND:+-|AF:1|STDEV_LEN:3.78|STDEV_POS:14.714|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.30SF|PRECISE|SVTYPE:INS|SVLEN:356|END:571110|SUPPORT:8|COVERAGE:15:13:13:13:13|STRAND:+-|AF:0.615|STDEV_LEN:3.578|STDEV_POS:15.652|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:44:0:16\t0/1:27:5:8", + "chr16\t579380\tSniffles2.DEL.62SF\tcagagaagagacagacacacagccccgaaggtggtgcaggcacaggccctagaggtgccccgggcccagagactagagatgccccgggcccggagactagaggtgccccgggcccggaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-120;END=579500;SUPPORT=6;COVERAGE=11,11,11,11,10;STRAND=+-;AF=0.545;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.62SF|chr16;test_1_reheader_POS=Sniffles2.DEL.62SF|579380;test_1_reheader_QUAL=Sniffles2.DEL.62SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.62SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.62SF|test_1|GT:0/1|GQ:33|DR:5|DV:6;test_1_reheader_INFO=Sniffles2.DEL.62SF|PRECISE|SVTYPE:DEL|SVLEN:-120|END:579500|SUPPORT:6|COVERAGE:11:11:11:11:10|STRAND:+-|AF:0.545|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:33:5:6\t./.:.:.:.", + "chr16\t579477\tSniffles2.DEL.A0SF\ttagaggtgccccgggcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagact\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-73;END=579550;SUPPORT=16;COVERAGE=18,18,20,22,22;STRAND=+-;AF=0.8;STDEV_LEN=18.145;STDEV_POS=50.055;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A0SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A0SF|579477;test_2_reheader_QUAL=Sniffles2.DEL.A0SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A0SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A0SF|test_2|GT:1/1|GQ:4|DR:4|DV:16;test_2_reheader_INFO=Sniffles2.DEL.A0SF|IMPRECISE|SVTYPE:DEL|SVLEN:-73|END:579550|SUPPORT:16|COVERAGE:18:18:20:22:22|STRAND:+-|AF:0.8|STDEV_LEN:18.145|STDEV_POS:50.055|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:4:4:16", + "chr16\t579636\tSniffles2.DEL.61SF\tcccggagactagaggtgccccgggcccggagactagaggtgccccgggcccggagacttgaggtgccccggg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-72;END=579708;SUPPORT=5;COVERAGE=11,11,11,10,10;STRAND=+-;AF=0.455;STDEV_LEN=11.5;STDEV_POS=105.434;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.61SF|chr16;test_1_reheader_POS=Sniffles2.DEL.61SF|579636;test_1_reheader_QUAL=Sniffles2.DEL.61SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.61SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.61SF|test_1|GT:0/1|GQ:33|DR:6|DV:5;test_1_reheader_INFO=Sniffles2.DEL.61SF|IMPRECISE|SVTYPE:DEL|SVLEN:-72|END:579708|SUPPORT:5|COVERAGE:11:11:11:10:10|STRAND:+-|AF:0.455|STDEV_LEN:11.5|STDEV_POS:105.434|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:33:6:5\t./.:.:.:.", + "chr16\t584946\tSniffles2.DEL.A2SF\tctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtg\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-155;END=585101;SUPPORT=18;COVERAGE=23,23,23,22,21;STRAND=+-;AF=0.783;STDEV_LEN=0.775;STDEV_POS=76.512;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A2SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A2SF|584946;test_2_reheader_QUAL=Sniffles2.DEL.A2SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A2SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A2SF|test_2|GT:1/1|GQ:0|DR:5|DV:18;test_2_reheader_INFO=Sniffles2.DEL.A2SF|IMPRECISE|SVTYPE:DEL|SVLEN:-155|END:585101|SUPPORT:18|COVERAGE:23:23:23:22:21|STRAND:+-|AF:0.783|STDEV_LEN:0.775|STDEV_POS:76.512|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:0:5:18", + "chr16\t585059\tSniffles2.DEL.63SF\tcccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctccccccagctgcccaccgggtccaccaacacccccaacctgtgcctcccgctc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-156;END=585215;SUPPORT=6;COVERAGE=6,6,6,6,6;STRAND=+-;AF=1;STDEV_LEN=0.5;STDEV_POS=56.518;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.63SF|chr16;test_1_reheader_POS=Sniffles2.DEL.63SF|585059;test_1_reheader_QUAL=Sniffles2.DEL.63SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.63SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.63SF|test_1|GT:1/1|GQ:16|DR:0|DV:6;test_1_reheader_INFO=Sniffles2.DEL.63SF|IMPRECISE|SVTYPE:DEL|SVLEN:-156|END:585215|SUPPORT:6|COVERAGE:6:6:6:6:6|STRAND:+-|AF:1|STDEV_LEN:0.5|STDEV_POS:56.518|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t1/1:16:0:6\t./.:.:.:.", + "chr16\t587440\tSniffles2.INS.20SF:test_1_reheader|Sniffles2.INS.33SF:test_2_reheader\tN\tTCCCTCCCTTCACTGGGCCTGCTGCCCCAGAGTCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=36;END=587440;SUPPORT=5;COVERAGE=5,5,5,5,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=41.569;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.33SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.20SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.33SF|chr16;test_1_reheader_POS=Sniffles2.INS.20SF|587440;test_2_reheader_POS=Sniffles2.INS.33SF|587440;test_1_reheader_QUAL=Sniffles2.INS.20SF|60;test_2_reheader_QUAL=Sniffles2.INS.33SF|60;test_1_reheader_FILTERS=Sniffles2.INS.20SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.33SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.20SF|test_1|GT:1/1|GQ:13|DR:0|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.33SF|test_2|GT:1/1|GQ:24|DR:2|DV:16;test_1_reheader_INFO=Sniffles2.INS.20SF|IMPRECISE|SVTYPE:INS|SVLEN:36|END:587440|SUPPORT:5|COVERAGE:5:5:5:5:5|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:41.569|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.33SF|IMPRECISE|SVTYPE:INS|SVLEN:36|END:587440|SUPPORT:16|COVERAGE:20:20:18:17:17|STRAND:+-|AF:0.889|STDEV_LEN:0|STDEV_POS:29.087|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:13:0:5\t1/1:24:2:16", + "chr16\t599821\tSniffles2.INS.34SF\tN\tAAGGTTTGTTTCCTCGTGGCATCAGTCAGCGTGGATTGGGCAAGGTTTTGTTCCCTCGTGGCATCAGTCAGCGTGGACG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=81;END=599821;SUPPORT=9;COVERAGE=10,10,10,10,8;STRAND=+-;AF=0.9;STDEV_LEN=1.169;STDEV_POS=76.821;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.34SF|chr16;test_2_reheader_POS=Sniffles2.INS.34SF|599821;test_2_reheader_QUAL=Sniffles2.INS.34SF|60;test_2_reheader_FILTERS=Sniffles2.INS.34SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.34SF|test_2|GT:1/1|GQ:15|DR:1|DV:9;test_2_reheader_INFO=Sniffles2.INS.34SF|IMPRECISE|SVTYPE:INS|SVLEN:81|END:599821|SUPPORT:9|COVERAGE:10:10:10:10:8|STRAND:+-|AF:0.9|STDEV_LEN:1.169|STDEV_POS:76.821|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:15:1:9", + "chr16\t606435\tSniffles2.INS.35SF\tN\tCAGTCCTGCTTTTCTTGGTCCCTCAGTCCAGTGTGGGTTTCCCTGGGCTGAAGTCAAGGTGTTGGCTGACACA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=66;END=606435;SUPPORT=10;COVERAGE=8,10,10,10,14;STRAND=+-;AF=1;STDEV_LEN=1.225;STDEV_POS=97.931;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.35SF|chr16;test_2_reheader_POS=Sniffles2.INS.35SF|606435;test_2_reheader_QUAL=Sniffles2.INS.35SF|60;test_2_reheader_FILTERS=Sniffles2.INS.35SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.35SF|test_2|GT:1/1|GQ:27|DR:0|DV:10;test_2_reheader_INFO=Sniffles2.INS.35SF|IMPRECISE|SVTYPE:INS|SVLEN:66|END:606435|SUPPORT:10|COVERAGE:8:10:10:10:14|STRAND:+-|AF:1|STDEV_LEN:1.225|STDEV_POS:97.931|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:27:0:10", + "chr16\t611747\tSniffles2.DEL.A4SF\tgcctgtagattcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-69;END=611816;SUPPORT=7;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.583;STDEV_LEN=0;STDEV_POS=49.641;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A4SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A4SF|611747;test_2_reheader_QUAL=Sniffles2.DEL.A4SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A4SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A4SF|test_2|GT:0/1|GQ:30|DR:5|DV:7;test_2_reheader_INFO=Sniffles2.DEL.A4SF|IMPRECISE|SVTYPE:DEL|SVLEN:-69|END:611816|SUPPORT:7|COVERAGE:12:12:12:12:12|STRAND:+-|AF:0.583|STDEV_LEN:0|STDEV_POS:49.641|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:30:5:7", + "chr16\t611801\tSniffles2.DEL.64SF:test_1_reheader|Sniffles2.DEL.A8SF:test_2_reheader\tgggacagccgccttcgcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcacgggacagccgccctggcctgtagaatcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-243;END=612044;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0.707;STDEV_POS=14.142;FOUND_IN=sniffles;VARID=Sniffles2.DEL.A8SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.64SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.A8SF|chr16;test_1_reheader_POS=Sniffles2.DEL.64SF|611801;test_2_reheader_POS=Sniffles2.DEL.A8SF|611793;test_1_reheader_QUAL=Sniffles2.DEL.64SF|60;test_2_reheader_QUAL=Sniffles2.DEL.A8SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.64SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.A8SF|GT;test_1_reheader_SAMPLE=Sniffles2.DEL.64SF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.DEL.A8SF|test_2|GT:0/0|GQ:7|DR:10|DV:2;test_1_reheader_INFO=Sniffles2.DEL.64SF|PRECISE|SVTYPE:DEL|SVLEN:-243|END:612044|SUPPORT:4|COVERAGE:3:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0.707|STDEV_POS:14.142|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.A8SF|PRECISE|SVTYPE:DEL|SVLEN:-242|END:612035|SUPPORT:2|COVERAGE:12:12:12:12:12|STRAND:-|AF:0.167|STDEV_LEN:0.707|STDEV_POS:7.778|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t0/0:7:10:2", + "chr16\t611989\tSniffles2.DEL.A5SF\tgcctgtagaatcaagagcaagggacagccgccttt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=612024;SUPPORT=4;COVERAGE=12,12,12,12,12;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A5SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A5SF|611989;test_2_reheader_QUAL=Sniffles2.DEL.A5SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A5SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.A5SF|test_2|GT:0/1|GQ:17|DR:8|DV:4;test_2_reheader_INFO=Sniffles2.DEL.A5SF|PRECISE|SVTYPE:DEL|SVLEN:-35|END:612024|SUPPORT:4|COVERAGE:12:12:12:12:12|STRAND:+-|AF:0.333|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:17:8:4", + "chr16\t612007\tSniffles2.DEL.A6SF\taagggacagccgcctttgcctgtagaatcaagagcagggacagccgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-70;END=612077;SUPPORT=2;COVERAGE=12,12,12,12,12;STRAND=-;AF=0.167;STDEV_LEN=1.414;STDEV_POS=26.87;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.A6SF|chr16;test_2_reheader_POS=Sniffles2.DEL.A6SF|612007;test_2_reheader_QUAL=Sniffles2.DEL.A6SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.A6SF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.A6SF|test_2|GT:0/0|GQ:7|DR:10|DV:2;test_2_reheader_INFO=Sniffles2.DEL.A6SF|IMPRECISE|SVTYPE:DEL|SVLEN:-70|END:612077|SUPPORT:2|COVERAGE:12:12:12:12:12|STRAND:-|AF:0.167|STDEV_LEN:1.414|STDEV_POS:26.87|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:7:10:2", + "chr16\t612374\tSniffles2.DEL.ABSF\tttcaagagcagggacagccgccctggcctgtagaatcaagagcaagggacagccgccttcgcctgtaga\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-69;END=612443;SUPPORT=3;COVERAGE=12,12,12,12,13;STRAND=+-;AF=0.25;STDEV_LEN=0.577;STDEV_POS=5.196;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.ABSF|chr16;test_2_reheader_POS=Sniffles2.DEL.ABSF|612374;test_2_reheader_QUAL=Sniffles2.DEL.ABSF|60;test_2_reheader_FILTERS=Sniffles2.DEL.ABSF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.ABSF|test_2|GT:0/1|GQ:4|DR:9|DV:3;test_2_reheader_INFO=Sniffles2.DEL.ABSF|PRECISE|SVTYPE:DEL|SVLEN:-69|END:612443|SUPPORT:3|COVERAGE:12:12:12:12:13|STRAND:+-|AF:0.25|STDEV_LEN:0.577|STDEV_POS:5.196|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:4:9:3", + "chr16\t612593\tSniffles2.DEL.AFSF:test_2_reheader|Sniffles2.DEL.AESF:test_2_reheader\tggacagccgccctggcctgtagaatcaagagcaagggacagccgcctttgcctgtagaatcaagagcagggacagctgccctggcctgtagcatcaagagca\tN\t60\tGT\tIMPRECISE;SVTYPE=DEL;SVLEN=-102;END=612695;SUPPORT=2;COVERAGE=12,12,12,12,13;STRAND=-;AF=0.167;STDEV_LEN=26.163;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.AESF:test_2_reheader;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.AFSF|chr16,Sniffles2.DEL.AESF|chr16;test_2_reheader_POS=Sniffles2.DEL.AFSF|612593,Sniffles2.DEL.AESF|612625;test_2_reheader_QUAL=Sniffles2.DEL.AFSF|60,Sniffles2.DEL.AESF|60;test_2_reheader_FILTERS=Sniffles2.DEL.AFSF|GT,Sniffles2.DEL.AESF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.AFSF|test_2|GT:0/0|GQ:7|DR:10|DV:2,Sniffles2.DEL.AESF|test_2|GT:0/1|GQ:30|DR:5|DV:7;test_2_reheader_INFO=Sniffles2.DEL.AFSF|IMPRECISE|SVTYPE:DEL|SVLEN:-102|END:612695|SUPPORT:2|COVERAGE:12:12:12:12:13|STRAND:-|AF:0.167|STDEV_LEN:26.163|STDEV_POS:0|FOUND_IN:sniffles,Sniffles2.DEL.AESF|PRECISE|SVTYPE:DEL|SVLEN:-70|END:612695|SUPPORT:7|COVERAGE:12:12:12:12:13|STRAND:+-|AF:0.583|STDEV_LEN:0.894|STDEV_POS:2.683|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:7:10:2", + "chr16\t631728\tSniffles2.DEL.65SF:test_1_reheader|Sniffles2.DEL.B3SF:test_2_reheader\tcttctcccaccccttcactgcctctccttccatcctctcctcccaccctctcctcccatccactcctcccatccacttcttccatcct\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-88;END=631816;SUPPORT=17;COVERAGE=17,17,17,17,16;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.B3SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.65SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.B3SF|chr16;test_1_reheader_POS=Sniffles2.DEL.65SF|631728;test_2_reheader_POS=Sniffles2.DEL.B3SF|631728;test_1_reheader_QUAL=Sniffles2.DEL.65SF|60;test_2_reheader_QUAL=Sniffles2.DEL.B3SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.65SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.B3SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.65SF|test_1|GT:1/1|GQ:47|DR:0|DV:17;test_2_reheader_SAMPLE=Sniffles2.DEL.B3SF|test_2|GT:1/1|GQ:39|DR:0|DV:14;test_1_reheader_INFO=Sniffles2.DEL.65SF|PRECISE|SVTYPE:DEL|SVLEN:-88|END:631816|SUPPORT:17|COVERAGE:17:17:17:17:16|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.B3SF|PRECISE|SVTYPE:DEL|SVLEN:-88|END:631816|SUPPORT:14|COVERAGE:13:13:12:14:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:47:0:17\t1/1:39:0:14", + "chr16\t660943\tSniffles2.INS.23SF:test_1_reheader|Sniffles2.INS.3ASF:test_2_reheader\tN\tCCCCCTGTTCGGCCCCTCCCCAGGCCCCCCCCCGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAGGCCCGGCCTCAGGCCCCGCCCCCTGTTCGGCCCCTCCCCAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=115;END=660943;SUPPORT=17;COVERAGE=16,16,15,16,16;STRAND=+-;AF=1;STDEV_LEN=1.803;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.3ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.23SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3ASF|chr16;test_1_reheader_POS=Sniffles2.INS.23SF|660943;test_2_reheader_POS=Sniffles2.INS.3ASF|660943;test_1_reheader_QUAL=Sniffles2.INS.23SF|60;test_2_reheader_QUAL=Sniffles2.INS.3ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.23SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.23SF|test_1|GT:1/1|GQ:47|DR:0|DV:17;test_2_reheader_SAMPLE=Sniffles2.INS.3ASF|test_2|GT:0/1|GQ:15|DR:6|DV:16;test_1_reheader_INFO=Sniffles2.INS.23SF|PRECISE|SVTYPE:INS|SVLEN:115|END:660943|SUPPORT:17|COVERAGE:16:16:15:16:16|STRAND:+-|AF:1|STDEV_LEN:1.803|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3ASF|IMPRECISE|SVTYPE:INS|SVLEN:111|END:660943|SUPPORT:16|COVERAGE:22:22:22:22:19|STRAND:+-|AF:0.727|STDEV_LEN:9.233|STDEV_POS:23.011|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:47:0:17\t0/1:15:6:16", + "chr16\t665215\tSniffles2.DEL.66SF:test_1_reheader|Sniffles2.DEL.B4SF:test_2_reheader\tcctcagtctgcagcctgctagggacgcacggccacactcctgtctttcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-50;END=665265;SUPPORT=22;COVERAGE=19,21,22,22,21;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.B4SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.66SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.B4SF|chr16;test_1_reheader_POS=Sniffles2.DEL.66SF|665215;test_2_reheader_POS=Sniffles2.DEL.B4SF|665215;test_1_reheader_QUAL=Sniffles2.DEL.66SF|60;test_2_reheader_QUAL=Sniffles2.DEL.B4SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.66SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.B4SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.66SF|test_1|GT:1/1|GQ:60|DR:0|DV:22;test_2_reheader_SAMPLE=Sniffles2.DEL.B4SF|test_2|GT:1/1|GQ:10|DR:4|DV:18;test_1_reheader_INFO=Sniffles2.DEL.66SF|PRECISE|SVTYPE:DEL|SVLEN:-50|END:665265|SUPPORT:22|COVERAGE:19:21:22:22:21|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.B4SF|PRECISE|SVTYPE:DEL|SVLEN:-50|END:665265|SUPPORT:18|COVERAGE:22:22:22:22:22|STRAND:+-|AF:0.818|STDEV_LEN:0|STDEV_POS:2.53|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:60:0:22\t1/1:10:4:18", + "chr16\t696679\tSniffles2.INS.24SF:test_1_reheader|Sniffles2.INS.3CSF:test_2_reheader\tN\tCCCACCCCAAAGCCACCATCCGCTCCCACCTCCATAGGGTTGCTGCTGCCCGCCCCTGCCCCCCAGCCCTGTCCCCCCCACCACCCAGCCTGGGCGCACACCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=105;END=696679;SUPPORT=10;COVERAGE=11,10,10,10,10;STRAND=+-;AF=1;STDEV_LEN=0.408;STDEV_POS=1.633;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.3CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.24SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3CSF|chr16;test_1_reheader_POS=Sniffles2.INS.24SF|696679;test_2_reheader_POS=Sniffles2.INS.3CSF|696679;test_1_reheader_QUAL=Sniffles2.INS.24SF|60;test_2_reheader_QUAL=Sniffles2.INS.3CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.24SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.24SF|test_1|GT:1/1|GQ:27|DR:0|DV:10;test_2_reheader_SAMPLE=Sniffles2.INS.3CSF|test_2|GT:1/1|GQ:14|DR:3|DV:16;test_1_reheader_INFO=Sniffles2.INS.24SF|PRECISE|SVTYPE:INS|SVLEN:105|END:696679|SUPPORT:10|COVERAGE:11:10:10:10:10|STRAND:+-|AF:1|STDEV_LEN:0.408|STDEV_POS:1.633|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3CSF|PRECISE|SVTYPE:INS|SVLEN:105|END:696679|SUPPORT:16|COVERAGE:19:19:19:19:18|STRAND:+-|AF:0.842|STDEV_LEN:0.833|STDEV_POS:22.394|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:27:0:10\t1/1:14:3:16", + "chr16\t746237\tSniffles2.DEL.67SF:test_1_reheader|Sniffles2.DEL.B7SF:test_2_reheader\tgaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcgggtctgcctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctggctgggcagcaggaggggagaggtggggtcactgcgggtctgcagggctgcaggaggggagaggtggggtcactgcaggtctgtctggctgggcagcaggagaggaggtgggttcactgcaggtctgtctgggcgggctgcaggagaggaggtggggtcactgcgggtctgtctgggcgggctgcaggagag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-307;END=746544;SUPPORT=7;COVERAGE=13,13,13,13,11;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.B7SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.67SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.B7SF|chr16;test_1_reheader_POS=Sniffles2.DEL.67SF|746237;test_2_reheader_POS=Sniffles2.DEL.B7SF|746243;test_1_reheader_QUAL=Sniffles2.DEL.67SF|60;test_2_reheader_QUAL=Sniffles2.DEL.B7SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.67SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.B7SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.67SF|test_1|GT:0/1|GQ:40|DR:6|DV:7;test_2_reheader_SAMPLE=Sniffles2.DEL.B7SF|test_2|GT:0/1|GQ:18|DR:15|DV:6;test_1_reheader_INFO=Sniffles2.DEL.67SF|PRECISE|SVTYPE:DEL|SVLEN:-307|END:746544|SUPPORT:7|COVERAGE:13:13:13:13:11|STRAND:+-|AF:0.538|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.B7SF|PRECISE|SVTYPE:DEL|SVLEN:-306|END:746549|SUPPORT:6|COVERAGE:21:21:21:21:21|STRAND:+-|AF:0.286|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:40:6:7\t0/1:18:15:6", + "chr16\t760502\tSniffles2.INS.25SF:test_1_reheader|Sniffles2.INS.3ESF:test_2_reheader\tN\tAGCCATGAAACCTGGGCCCGGGCTCCCACTCACACCCCACCCCCACCCAGGGCAGCCGTGAAACCTGGGCCCTGGGCTCCCACCCACGCCCCACACCCACCCAGGGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=107;END=760502;SUPPORT=16;COVERAGE=16,16,16,16,17;STRAND=+-;AF=1;STDEV_LEN=0.518;STDEV_POS=11.667;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.3ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.25SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3ESF|chr16;test_1_reheader_POS=Sniffles2.INS.25SF|760502;test_2_reheader_POS=Sniffles2.INS.3ESF|760502;test_1_reheader_QUAL=Sniffles2.INS.25SF|60;test_2_reheader_QUAL=Sniffles2.INS.3ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.25SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.25SF|test_1|GT:1/1|GQ:44|DR:0|DV:16;test_2_reheader_SAMPLE=Sniffles2.INS.3ESF|test_2|GT:1/1|GQ:32|DR:2|DV:19;test_1_reheader_INFO=Sniffles2.INS.25SF|PRECISE|SVTYPE:INS|SVLEN:107|END:760502|SUPPORT:16|COVERAGE:16:16:16:16:17|STRAND:+-|AF:1|STDEV_LEN:0.518|STDEV_POS:11.667|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3ESF|PRECISE|SVTYPE:INS|SVLEN:107|END:760502|SUPPORT:19|COVERAGE:20:20:21:21:23|STRAND:+-|AF:0.905|STDEV_LEN:0.674|STDEV_POS:4.221|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:44:0:16\t1/1:32:2:19", + "chr16\t763776\tSniffles2.INS.26SF:test_1_reheader|Sniffles2.INS.3FSF:test_2_reheader\tN\tGCATCCCATCCCCCGTCCCCTCCCCCACACCCCTCCCCCACCCCCACGTCCCCTCCCCACCCCTCCCCCACACCCTCCCCCACCCCTCCCCATGTCCCCTCCCCTACCTCCTCCCCCCGCATCCCCTCCCCCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=133;END=763776;SUPPORT=20;COVERAGE=19,19,20,20,20;STRAND=+-;AF=1;STDEV_LEN=0.789;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.3FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.26SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.3FSF|chr16;test_1_reheader_POS=Sniffles2.INS.26SF|763776;test_2_reheader_POS=Sniffles2.INS.3FSF|763776;test_1_reheader_QUAL=Sniffles2.INS.26SF|60;test_2_reheader_QUAL=Sniffles2.INS.3FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.26SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.3FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.26SF|test_1|GT:1/1|GQ:55|DR:0|DV:20;test_2_reheader_SAMPLE=Sniffles2.INS.3FSF|test_2|GT:1/1|GQ:48|DR:1|DV:21;test_1_reheader_INFO=Sniffles2.INS.26SF|PRECISE|SVTYPE:INS|SVLEN:133|END:763776|SUPPORT:20|COVERAGE:19:19:20:20:20|STRAND:+-|AF:1|STDEV_LEN:0.789|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.3FSF|PRECISE|SVTYPE:INS|SVLEN:133|END:763776|SUPPORT:21|COVERAGE:22:22:22:22:23|STRAND:+-|AF:0.955|STDEV_LEN:1.092|STDEV_POS:1.391|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:55:0:20\t1/1:48:1:21", + "chr16\t767712\tSniffles2.INS.2ASF\tN\tGCGCATGGGGGGCGTGGGAGGGGGGTGCGTGGAGGAGGGGCGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGCACGTGGAGGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=130;END=767712;SUPPORT=5;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.333;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.2ASF|chr16;test_1_reheader_POS=Sniffles2.INS.2ASF|767712;test_1_reheader_QUAL=Sniffles2.INS.2ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.2ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2ASF|test_1|GT:0/1|GQ:22|DR:10|DV:5;test_1_reheader_INFO=Sniffles2.INS.2ASF|PRECISE|SVTYPE:INS|SVLEN:130|END:767712|SUPPORT:5|COVERAGE:15:15:15:15:14|STRAND:+-|AF:0.333|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:22:10:5\t./.:.:.:.", + "chr16\t767829\tSniffles2.INS.29SF:test_1_reheader|Sniffles2.INS.41SF:test_2_reheader\tN\tGGTGTGGAGGGGGGCGCGTGGGGGTGTGTGGGGGGGGGCACGTGGAGGGGGCGTGTGGGGGGGTGCGTGGAGGAGGGGCGCGTGGAGGA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=89;END=767829;SUPPORT=9;COVERAGE=15,15,15,15,14;STRAND=+-;AF=0.6;STDEV_LEN=3.715;STDEV_POS=36.697;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.41SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.29SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.41SF|chr16;test_1_reheader_POS=Sniffles2.INS.29SF|767829;test_2_reheader_POS=Sniffles2.INS.41SF|767868;test_1_reheader_QUAL=Sniffles2.INS.29SF|60;test_2_reheader_QUAL=Sniffles2.INS.41SF|60;test_1_reheader_FILTERS=Sniffles2.INS.29SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.41SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.29SF|test_1|GT:0/1|GQ:34|DR:6|DV:9;test_2_reheader_SAMPLE=Sniffles2.INS.41SF|test_2|GT:0/1|GQ:16|DR:12|DV:5;test_1_reheader_INFO=Sniffles2.INS.29SF|IMPRECISE|SVTYPE:INS|SVLEN:89|END:767829|SUPPORT:9|COVERAGE:15:15:15:15:14|STRAND:+-|AF:0.6|STDEV_LEN:3.715|STDEV_POS:36.697|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.41SF|IMPRECISE|SVTYPE:INS|SVLEN:135|END:767868|SUPPORT:5|COVERAGE:23:16:17:16:17|STRAND:+-|AF:0.294|STDEV_LEN:3.215|STDEV_POS:90.067|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:34:6:9\t0/1:16:12:5", + "chr16\t767989\tSniffles2.INS.28SF:test_1_reheader|Sniffles2.INS.40SF:test_2_reheader\tN\tGGGGCACATGGGGGTGCGTGGGGGGCGTGTGGGGGGTGCGTGGAGGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=767989;SUPPORT=6;COVERAGE=15,15,15,14,14;STRAND=+-;AF=0.4;STDEV_LEN=1.5;STDEV_POS=11.547;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.40SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.28SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.40SF|chr16;test_1_reheader_POS=Sniffles2.INS.28SF|767989;test_2_reheader_POS=Sniffles2.INS.40SF|767969;test_1_reheader_QUAL=Sniffles2.INS.28SF|60;test_2_reheader_QUAL=Sniffles2.INS.40SF|60;test_1_reheader_FILTERS=Sniffles2.INS.28SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.40SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.28SF|test_1|GT:0/1|GQ:34|DR:9|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.40SF|test_2|GT:0/1|GQ:6|DR:4|DV:12;test_1_reheader_INFO=Sniffles2.INS.28SF|PRECISE|SVTYPE:INS|SVLEN:47|END:767989|SUPPORT:6|COVERAGE:15:15:15:14:14|STRAND:+-|AF:0.4|STDEV_LEN:1.5|STDEV_POS:11.547|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.40SF|IMPRECISE|SVTYPE:INS|SVLEN:45|END:767969|SUPPORT:12|COVERAGE:21:17:16:16:17|STRAND:+-|AF:0.75|STDEV_LEN:16.098|STDEV_POS:66.865|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:34:9:6\t0/1:6:4:12", + "chr16\t769171\tSniffles2.INS.2BSF:test_1_reheader|Sniffles2.INS.42SF:test_2_reheader\tN\tCCCCGGCCCCGGCCCCAGCCCCGGCCCCACCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCACCCCCGGCCCCAGCCCCAGCCCCAGCCCCAGCCCCGGCCCCACCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCACCCCCGGCCCCGGCCCCAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=197;END=769171;SUPPORT=6;COVERAGE=14,13,13,13,13;STRAND=+-;AF=0.462;STDEV_LEN=0.816;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.42SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.42SF|chr16;test_1_reheader_POS=Sniffles2.INS.2BSF|769171;test_2_reheader_POS=Sniffles2.INS.42SF|769187;test_1_reheader_QUAL=Sniffles2.INS.2BSF|60;test_2_reheader_QUAL=Sniffles2.INS.42SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.42SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2BSF|test_1|GT:0/1|GQ:40|DR:7|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.42SF|test_2|GT:0/1|GQ:52|DR:10|DV:8;test_1_reheader_INFO=Sniffles2.INS.2BSF|PRECISE|SVTYPE:INS|SVLEN:197|END:769171|SUPPORT:6|COVERAGE:14:13:13:13:13|STRAND:+-|AF:0.462|STDEV_LEN:0.816|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.42SF|PRECISE|SVTYPE:INS|SVLEN:193|END:769187|SUPPORT:8|COVERAGE:17:18:18:18:18|STRAND:+-|AF:0.444|STDEV_LEN:0.577|STDEV_POS:5|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:40:7:6\t0/1:52:10:8", + "chr16\t795446\tSniffles2.INS.2CSF:test_1_reheader|Sniffles2.INS.44SF:test_2_reheader\tN\tCCCCCGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGCGCCCTTCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=87;END=795446;SUPPORT=8;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.615;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.44SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2CSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.44SF|chr16;test_1_reheader_POS=Sniffles2.INS.2CSF|795446;test_2_reheader_POS=Sniffles2.INS.44SF|795446;test_1_reheader_QUAL=Sniffles2.INS.2CSF|60;test_2_reheader_QUAL=Sniffles2.INS.44SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2CSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.44SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2CSF|test_1|GT:0/1|GQ:27|DR:5|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.44SF|test_2|GT:0/1|GQ:39|DR:11|DV:7;test_1_reheader_INFO=Sniffles2.INS.2CSF|PRECISE|SVTYPE:INS|SVLEN:87|END:795446|SUPPORT:8|COVERAGE:13:13:13:13:13|STRAND:+-|AF:0.615|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.44SF|PRECISE|SVTYPE:INS|SVLEN:86|END:795446|SUPPORT:7|COVERAGE:20:18:18:18:18|STRAND:+-|AF:0.389|STDEV_LEN:0.816|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:27:5:8\t0/1:39:11:7", + "chr16\t795594\tSniffles2.INS.2DSF:test_1_reheader|Sniffles2.INS.46SF:test_2_reheader\tN\tGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCGCCCCCCTGTGCTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCTCCCCCCAAACACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCTTCTCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCCCCCCCAACCACACTGCCCGTGTGGCTGCCCCCGGCCCCGTGCCGCCCCGCCCCGCCCCTCCCCTCCCCCCCCCCCGC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=621;END=795594;SUPPORT=5;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.385;STDEV_LEN=2.646;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.46SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2DSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.46SF|chr16;test_1_reheader_POS=Sniffles2.INS.2DSF|795594;test_2_reheader_POS=Sniffles2.INS.46SF|795594;test_1_reheader_QUAL=Sniffles2.INS.2DSF|60;test_2_reheader_QUAL=Sniffles2.INS.46SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2DSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.46SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2DSF|test_1|GT:0/1|GQ:27|DR:8|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.46SF|test_2|GT:0/1|GQ:26|DR:12|DV:6;test_1_reheader_INFO=Sniffles2.INS.2DSF|PRECISE|SVTYPE:INS|SVLEN:621|END:795594|SUPPORT:5|COVERAGE:13:13:13:13:13|STRAND:+-|AF:0.385|STDEV_LEN:2.646|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.46SF|PRECISE|SVTYPE:INS|SVLEN:617|END:795594|SUPPORT:6|COVERAGE:20:18:18:18:18|STRAND:+-|AF:0.333|STDEV_LEN:2.5|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:27:8:5\t0/1:26:12:6", + "chr16\t818868\tSniffles2.INS.2ESF:test_1_reheader|Sniffles2.INS.47SF:test_2_reheader\tN\tTGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGTGATGATGGTGGTGAAGACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTAGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGGTGAACACTGTAGTGATGTTGATATTGGTGATGAAGACTATAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGAGGTGAGACTATCGTGATGGTGATGATAATGGTGAAGACTATAGTGATGTTGATGTCGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTGTAGTGATGGTGATGATGGTGAAGACTATCGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAAGACTGTAGTGATGTTAATGGTGAAGGCTATAGTGATGTTGATGGTGGTGAAGACTGTAGCAATGGTTATGATGTTGGTGAAGACAATAGTGATGGTGATGATGGTGAAGACTATAGTGATGGTGATGATGGTGGTGAAGACTGTAGTGATGGTGATGATAGTGGTGAGGACTGTTAGTGATGATAGTGGTGAAGACTGTAGTGATGATGATGGTGAAGACTATAATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCAATGATGATGGTGAAGACTATAGTGATGTTGAGTTGGTGGTGAAGACTGTAGCGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGTTGAAGACTATAGTGATGATGATGGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGCTGATGTTGGTGGTGAAGACTGTAGTGATGGTGATGATGATGGTGAAGACTATAGTGATGATGATGGTGAAGACTATAGTGATGATGATGTGAAGACCGCCGTGATGGTGATGATGGTGAAGACTGTAGCGATGATGATGGTGAAGACTATAGTGATGTTGATGTTGG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1173;END=818868;SUPPORT=12;COVERAGE=13,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=90.396;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.47SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.47SF|chr16;test_1_reheader_POS=Sniffles2.INS.2ESF|818868;test_2_reheader_POS=Sniffles2.INS.47SF|818868;test_1_reheader_QUAL=Sniffles2.INS.2ESF|60;test_2_reheader_QUAL=Sniffles2.INS.47SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.47SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2ESF|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.47SF|test_2|GT:1/1|GQ:5|DR:2|DV:9;test_1_reheader_INFO=Sniffles2.INS.2ESF|IMPRECISE|SVTYPE:INS|SVLEN:1173|END:818868|SUPPORT:12|COVERAGE:13:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:90.396|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.47SF|IMPRECISE|SVTYPE:INS|SVLEN:1180|END:818868|SUPPORT:9|COVERAGE:14:11:11:11:11|STRAND:+-|AF:0.818|STDEV_LEN:66.808|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:5:2:9", + "chr16\t824382\tSniffles2.INS.2FSF:test_1_reheader|Sniffles2.INS.48SF:test_2_reheader|Sniffles2.INS.49SF:test_2_reheader\tN\tTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCTCGTCACACTAGGCCCACGACGGCCAGCAGCGGGGGGAGCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=150;END=824382;SUPPORT=2;COVERAGE=3,3,3,3,2;STRAND=-;AF=0.667;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.48SF:test_2_reheader|Sniffles2.INS.49SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.2FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.48SF|chr16,Sniffles2.INS.49SF|chr16;test_1_reheader_POS=Sniffles2.INS.2FSF|824382;test_2_reheader_POS=Sniffles2.INS.48SF|824382,Sniffles2.INS.49SF|824382;test_1_reheader_QUAL=Sniffles2.INS.2FSF|60;test_2_reheader_QUAL=Sniffles2.INS.48SF|60,Sniffles2.INS.49SF|60;test_1_reheader_FILTERS=Sniffles2.INS.2FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.48SF|GT,Sniffles2.INS.49SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.2FSF|test_1|GT:0/1|GQ:4|DR:1|DV:2;test_2_reheader_SAMPLE=Sniffles2.INS.48SF|test_2|GT:0/1|GQ:3|DR:6|DV:2,Sniffles2.INS.49SF|test_2|GT:0/1|GQ:28|DR:4|DV:4;test_1_reheader_INFO=Sniffles2.INS.2FSF|PRECISE|SVTYPE:INS|SVLEN:150|END:824382|SUPPORT:2|COVERAGE:3:3:3:3:2|STRAND:-|AF:0.667|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.48SF|PRECISE|SVTYPE:INS|SVLEN:152|END:824382|SUPPORT:2|COVERAGE:9:8:8:8:8|STRAND:+|AF:0.25|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.49SF|PRECISE|SVTYPE:INS|SVLEN:475|END:824382|SUPPORT:4|COVERAGE:9:8:8:8:8|STRAND:+-|AF:0.5|STDEV_LEN:4.031|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:4:1:2\t0/1:28:4:4", + "chr16\t824874\tSniffles2.INS.31SF:test_1_reheader|Sniffles2.INS.4ASF:test_2_reheader\tN\tCGTCCCGTCCGCGGCACCACCGTCCCATCTGTGGCACCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=40;END=824874;SUPPORT=2;COVERAGE=3,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.4ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.31SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.4ASF|chr16;test_1_reheader_POS=Sniffles2.INS.31SF|824874;test_2_reheader_POS=Sniffles2.INS.4ASF|824874;test_1_reheader_QUAL=Sniffles2.INS.31SF|60;test_2_reheader_QUAL=Sniffles2.INS.4ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.31SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.4ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.31SF|test_1|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_SAMPLE=Sniffles2.INS.4ASF|test_2|GT:0/1|GQ:3|DR:2|DV:6;test_1_reheader_INFO=Sniffles2.INS.31SF|PRECISE|SVTYPE:INS|SVLEN:40|END:824874|SUPPORT:2|COVERAGE:3:2:2:2:2|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.4ASF|PRECISE|SVTYPE:INS|SVLEN:40|END:824874|SUPPORT:6|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:5:0:2\t0/1:3:2:6", + "chr16\t828085\tSniffles2.INS.4BSF\tN\tCCGGGGGAAATGAACTCTCGGCCTCCAGGGCAGCCAGGCAGGGGTCTGGCCCAGTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=58;END=828085;SUPPORT=4;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.5;STDEV_LEN=1.5;STDEV_POS=22.765;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.4BSF|chr16;test_2_reheader_POS=Sniffles2.INS.4BSF|828085;test_2_reheader_QUAL=Sniffles2.INS.4BSF|60;test_2_reheader_FILTERS=Sniffles2.INS.4BSF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.4BSF|test_2|GT:0/1|GQ:28|DR:4|DV:4;test_2_reheader_INFO=Sniffles2.INS.4BSF|PRECISE|SVTYPE:INS|SVLEN:58|END:828085|SUPPORT:4|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.5|STDEV_LEN:1.5|STDEV_POS:22.765|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:28:4:4", + "chr16\t828906\tSniffles2.DEL.68SF:test_1_reheader|Sniffles2.DEL.BBSF:test_2_reheader\tgcccactggggcccacatcccgcccactgggaccgacatccc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=828948;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.BBSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.68SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.BBSF|chr16;test_1_reheader_POS=Sniffles2.DEL.68SF|828906;test_2_reheader_POS=Sniffles2.DEL.BBSF|828906;test_1_reheader_QUAL=Sniffles2.DEL.68SF|60;test_2_reheader_QUAL=Sniffles2.DEL.BBSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.68SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.BBSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.68SF|test_1|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_SAMPLE=Sniffles2.DEL.BBSF|test_2|GT:0/1|GQ:3|DR:2|DV:6;test_1_reheader_INFO=Sniffles2.DEL.68SF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:828948|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.BBSF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:828948|SUPPORT:6|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:5:0:2\t0/1:3:2:6", + "chr16\t886663\tSniffles2.INS.35SF:test_1_reheader|Sniffles2.INS.34SF:test_1_reheader|Sniffles2.INS.4DSF:test_2_reheader\tN\tCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCCGGCGTTCCCCAGGCCCCTCCCACCCTAGGCCCCGGCGTTCCCCAGGCCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=134;END=886663;SUPPORT=8;COVERAGE=10,10,10,10,11;STRAND=+-;AF=0.8;STDEV_LEN=0.5;STDEV_POS=22.234;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.34SF:test_1_reheader|Sniffles2.INS.4DSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.35SF|chr16,Sniffles2.INS.34SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.4DSF|chr16;test_1_reheader_POS=Sniffles2.INS.35SF|886663,Sniffles2.INS.34SF|886674;test_2_reheader_POS=Sniffles2.INS.4DSF|886701;test_1_reheader_QUAL=Sniffles2.INS.35SF|60,Sniffles2.INS.34SF|60;test_2_reheader_QUAL=Sniffles2.INS.4DSF|60;test_1_reheader_FILTERS=Sniffles2.INS.35SF|PASS,Sniffles2.INS.34SF|GT;test_2_reheader_FILTERS=Sniffles2.INS.4DSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.35SF|test_1|GT:1/1|GQ:2|DR:2|DV:8,Sniffles2.INS.34SF|test_1|GT:0/0|GQ:2|DR:8|DV:2;test_2_reheader_SAMPLE=Sniffles2.INS.4DSF|test_2|GT:0/1|GQ:12|DR:4|DV:10;test_1_reheader_INFO=Sniffles2.INS.35SF|PRECISE|SVTYPE:INS|SVLEN:134|END:886663|SUPPORT:8|COVERAGE:10:10:10:10:11|STRAND:+-|AF:0.8|STDEV_LEN:0.5|STDEV_POS:22.234|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.34SF|IMPRECISE|SVTYPE:INS|SVLEN:66|END:886674|SUPPORT:2|COVERAGE:10:10:10:10:11|STRAND:+-|AF:0.2|STDEV_LEN:19.348|STDEV_POS:113.694|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.4DSF|IMPRECISE|SVTYPE:INS|SVLEN:131|END:886701|SUPPORT:10|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.714|STDEV_LEN:16.561|STDEV_POS:60.663|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:2:2:8\t0/1:12:4:10", + "chr16\t894215\tSniffles2.INS.36SF:test_1_reheader|Sniffles2.INS.53SF:test_2_reheader\tN\tCTGGCTGTCCGCCCACCCATCCCCTGTCCACCGGACCGTCCGCCCACCCGTCCCCATGTCCATCAGACCGTCCGTCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCATTCGCCCACCCATCCCCCTGTCCACCTGGCCATCCGCCCACCTGTCTCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACTGTCCGCCCACCTGTCCCCCTGTCCCCTGTCCACCGGACCGTCTGCCCACCCGTCCCCCTGTCCACCTGGCCATCCGCCCACCCATCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGGTCCCCCTGTCCAGCGGACCGTCCACCCACCCGTCCCCCTGTCCACTGGACCGTCCGCCCACCTGTCCCCCTGTCCACCTGGCAGTGCGCCCACCCATCCCCTGTCCACCGGACCGTCCACCCACCCGTCCCCCTGTCCAGCGGACCGTCCACCCACCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=521;END=894215;SUPPORT=17;COVERAGE=17,17,17,17,17;STRAND=+-;AF=1;STDEV_LEN=57.393;STDEV_POS=5.5;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.53SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.36SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.53SF|chr16;test_1_reheader_POS=Sniffles2.INS.36SF|894215;test_2_reheader_POS=Sniffles2.INS.53SF|894226;test_1_reheader_QUAL=Sniffles2.INS.36SF|60;test_2_reheader_QUAL=Sniffles2.INS.53SF|60;test_1_reheader_FILTERS=Sniffles2.INS.36SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.53SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.36SF|test_1|GT:1/1|GQ:47|DR:0|DV:17;test_2_reheader_SAMPLE=Sniffles2.INS.53SF|test_2|GT:0/1|GQ:54|DR:8|DV:9;test_1_reheader_INFO=Sniffles2.INS.36SF|IMPRECISE|SVTYPE:INS|SVLEN:521|END:894215|SUPPORT:17|COVERAGE:17:17:17:17:17|STRAND:+-|AF:1|STDEV_LEN:57.393|STDEV_POS:5.5|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.53SF|IMPRECISE|SVTYPE:INS|SVLEN:532|END:894226|SUPPORT:9|COVERAGE:17:17:17:17:17|STRAND:+-|AF:0.529|STDEV_LEN:71.587|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:47:0:17\t0/1:54:8:9", + "chr16\t895843\tSniffles2.INS.37SF:test_1_reheader|Sniffles2.INS.39SF:test_1_reheader|Sniffles2.INS.57SF:test_2_reheader|Sniffles2.INS.55SF:test_2_reheader\tN\tACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACAG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=59;END=895843;SUPPORT=4;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.39SF:test_1_reheader|Sniffles2.INS.57SF:test_2_reheader|Sniffles2.INS.55SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.37SF|chr16,Sniffles2.INS.39SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.57SF|chr16,Sniffles2.INS.55SF|chr16;test_1_reheader_POS=Sniffles2.INS.37SF|895843,Sniffles2.INS.39SF|895843;test_2_reheader_POS=Sniffles2.INS.57SF|895843,Sniffles2.INS.55SF|895870;test_1_reheader_QUAL=Sniffles2.INS.37SF|60,Sniffles2.INS.39SF|60;test_2_reheader_QUAL=Sniffles2.INS.57SF|60,Sniffles2.INS.55SF|60;test_1_reheader_FILTERS=Sniffles2.INS.37SF|PASS,Sniffles2.INS.39SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.57SF|PASS,Sniffles2.INS.55SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.37SF|test_1|GT:0/1|GQ:6|DR:12|DV:4,Sniffles2.INS.39SF|test_1|GT:0/1|GQ:57|DR:8|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.57SF|test_2|GT:0/1|GQ:34|DR:9|DV:6,Sniffles2.INS.55SF|test_2|GT:0/1|GQ:22|DR:10|DV:5;test_1_reheader_INFO=Sniffles2.INS.37SF|PRECISE|SVTYPE:INS|SVLEN:59|END:895843|SUPPORT:4|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.25|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.39SF|PRECISE|SVTYPE:INS|SVLEN:177|END:895843|SUPPORT:8|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.57SF|PRECISE|SVTYPE:INS|SVLEN:177|END:895843|SUPPORT:6|COVERAGE:15:15:15:15:15|STRAND:+-|AF:0.4|STDEV_LEN:1.949|STDEV_POS:8.944|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.55SF|PRECISE|SVTYPE:INS|SVLEN:59|END:895870|SUPPORT:5|COVERAGE:15:15:15:15:15|STRAND:+-|AF:0.333|STDEV_LEN:0|STDEV_POS:15.588|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:6:12:4\t0/1:22:10:5", + "chr16\t896053\tSniffles2.INS.3BSF:test_1_reheader|Sniffles2.INS.3ASF:test_1_reheader|Sniffles2.INS.56SF:test_2_reheader\tN\tCCACACGCAGGCTGCACGGTCCACAGACACGCCTCGGAGGGGTTGTGAGGCTCAGCCACCCACACGCAGGCTGCACGGTCCACACACACGCCTCGGAGGGGTTGTGAGGCTCAGCCAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=118;END=896053;SUPPORT=8;COVERAGE=17,16,16,16,14;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.3ASF:test_1_reheader|Sniffles2.INS.56SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.3BSF|chr16,Sniffles2.INS.3ASF|chr16;test_2_reheader_CHROM=Sniffles2.INS.56SF|chr16;test_1_reheader_POS=Sniffles2.INS.3BSF|896053,Sniffles2.INS.3ASF|896059;test_2_reheader_POS=Sniffles2.INS.56SF|896053;test_1_reheader_QUAL=Sniffles2.INS.3BSF|60,Sniffles2.INS.3ASF|60;test_2_reheader_QUAL=Sniffles2.INS.56SF|60;test_1_reheader_FILTERS=Sniffles2.INS.3BSF|PASS,Sniffles2.INS.3ASF|GT;test_2_reheader_FILTERS=Sniffles2.INS.56SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.3BSF|test_1|GT:0/1|GQ:57|DR:8|DV:8,Sniffles2.INS.3ASF|test_1|GT:0/0|GQ:6|DR:13|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.56SF|test_2|GT:0/1|GQ:34|DR:9|DV:6;test_1_reheader_INFO=Sniffles2.INS.3BSF|PRECISE|SVTYPE:INS|SVLEN:118|END:896053|SUPPORT:8|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.3ASF|IMPRECISE|SVTYPE:INS|SVLEN:58|END:896059|SUPPORT:3|COVERAGE:17:16:16:16:14|STRAND:+-|AF:0.188|STDEV_LEN:0.577|STDEV_POS:38.553|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.56SF|IMPRECISE|SVTYPE:INS|SVLEN:118|END:896053|SUPPORT:6|COVERAGE:15:15:15:15:15|STRAND:+-|AF:0.4|STDEV_LEN:0.447|STDEV_POS:64.631|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:57:8:8\t0/1:34:9:6", + "chr16\t903595\tSniffles2.INS.3ESF:test_1_reheader|Sniffles2.INS.5ASF:test_2_reheader\tN\tGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=600;END=903595;SUPPORT=6;COVERAGE=8,8,8,8,8;STRAND=+-;AF=0.75;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.5ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.3ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.5ASF|chr16;test_1_reheader_POS=Sniffles2.INS.3ESF|903595;test_2_reheader_POS=Sniffles2.INS.5ASF|903595;test_1_reheader_QUAL=Sniffles2.INS.3ESF|60;test_2_reheader_QUAL=Sniffles2.INS.5ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.3ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.5ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.3ESF|test_1|GT:0/1|GQ:3|DR:2|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.5ASF|test_2|GT:0/1|GQ:6|DR:5|DV:2;test_1_reheader_INFO=Sniffles2.INS.3ESF|PRECISE|SVTYPE:INS|SVLEN:600|END:903595|SUPPORT:6|COVERAGE:8:8:8:8:8|STRAND:+-|AF:0.75|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.5ASF|IMPRECISE|SVTYPE:INS|SVLEN:600|END:903595|SUPPORT:2|COVERAGE:7:7:7:7:7|STRAND:+-|AF:0.286|STDEV_LEN:0.707|STDEV_POS:54.447|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:3:2:6\t0/1:6:5:2", + "chr16\t904025\tSniffles2.INS.5DSF\tN\tGCCCGCTGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGCTACCTCCTCCCCGCGGCATCGCCCACAGGACGCCTGCGTCCCTGCTGCGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGGCGACCTCTGCATCGCCACAGGACGCCTATCTCTGCTGTGTGGTGGTGACCTTTGCACTGCCCGTGGGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCTGTGGGGACGCCCGTCTCTGCTGTGTGGTGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGGGTGACCTCTGCATCGCCCACAGGACGCCTGTCTCTGCTGCGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTCTGCACTGCCCACAGGACGCCTGTCTCTGCTGTGTGGTGGTGACCTTTGCATG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=613;END=904025;SUPPORT=2;COVERAGE=7,7,7,7,7;STRAND=+-;AF=0.286;STDEV_LEN=7.071;STDEV_POS=25.456;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.5DSF|chr16;test_2_reheader_POS=Sniffles2.INS.5DSF|904025;test_2_reheader_QUAL=Sniffles2.INS.5DSF|60;test_2_reheader_FILTERS=Sniffles2.INS.5DSF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.5DSF|test_2|GT:0/1|GQ:6|DR:5|DV:2;test_2_reheader_INFO=Sniffles2.INS.5DSF|IMPRECISE|SVTYPE:INS|SVLEN:613|END:904025|SUPPORT:2|COVERAGE:7:7:7:7:7|STRAND:+-|AF:0.286|STDEV_LEN:7.071|STDEV_POS:25.456|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:6:5:2", + "chr16\t949510\tSniffles2.DEL.6ESF\taatgacagagtcagccaacgacagagtcagagccaacgacagagtcagagacaatgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaacgacagagtcagagacaacgacagagtcagagccaacgacagagtcagagacgaaagactcagagccaatgacagagtcagagccaatgacagagtcagccaacgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacagcgacagagttagagacaat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-731;END=950241;SUPPORT=14;COVERAGE=22,22,22,23,22;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.6ESF|chr16;test_1_reheader_POS=Sniffles2.DEL.6ESF|949510;test_1_reheader_QUAL=Sniffles2.DEL.6ESF|60;test_1_reheader_FILTERS=Sniffles2.DEL.6ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.6ESF|test_1|GT:0/1|GQ:40|DR:8|DV:14;test_1_reheader_INFO=Sniffles2.DEL.6ESF|PRECISE|SVTYPE:DEL|SVLEN:-731|END:950241|SUPPORT:14|COVERAGE:22:22:22:23:22|STRAND:+-|AF:0.636|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:40:8:14\t./.:.:.:.", + "chr16\t949565\tSniffles2.DEL.C0SF\tgacagagtcagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-100;END=949665;SUPPORT=8;COVERAGE=31,30,32,32,32;STRAND=+-;AF=0.258;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.C0SF|chr16;test_2_reheader_POS=Sniffles2.DEL.C0SF|949565;test_2_reheader_QUAL=Sniffles2.DEL.C0SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.C0SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.C0SF|test_2|GT:0/1|GQ:15|DR:23|DV:8;test_2_reheader_INFO=Sniffles2.DEL.C0SF|PRECISE|SVTYPE:DEL|SVLEN:-100|END:949665|SUPPORT:8|COVERAGE:31:30:32:32:32|STRAND:+-|AF:0.258|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:15:23:8", + "chr16\t949708\tSniffles2.DEL.C3SF\tagagacaacgacagagtcagagacgacagagtcagagacgacagagtcagagccaatgacagagtcagccaatgacagagtcagagccaacgacagagtcagccaatgacagagtcagagacaacgacagagttagagacaacgacagagtcagccaaggacagcgtcagccaacgacagaatcagagacaacgacagagtcagccaacgacagagtcagagccaatgagagtcagagccaacgacagagtcagagacgacagagtcag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-269;END=949977;SUPPORT=8;COVERAGE=31,32,32,32,32;STRAND=+-;AF=0.25;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.C3SF|chr16;test_2_reheader_POS=Sniffles2.DEL.C3SF|949708;test_2_reheader_QUAL=Sniffles2.DEL.C3SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.C3SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.C3SF|test_2|GT:0/1|GQ:13|DR:24|DV:8;test_2_reheader_INFO=Sniffles2.DEL.C3SF|PRECISE|SVTYPE:DEL|SVLEN:-269|END:949977|SUPPORT:8|COVERAGE:31:32:32:32:32|STRAND:+-|AF:0.25|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:13:24:8", + "chr16\t950298\tSniffles2.DEL.C6SF\ttcagccaatgacagagtcagagacaacgacagagtcagccaacaacagtcagccaacgacagagtcaggccaacgacagagtcagccaatgacagagtcagagccaacgacagagtcagagacaacgacagagttagagacaacgacagagtc\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-153;END=950451;SUPPORT=10;COVERAGE=32,32,32,32,32;STRAND=+-;AF=0.312;STDEV_LEN=7.311;STDEV_POS=128.469;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.C6SF|chr16;test_2_reheader_POS=Sniffles2.DEL.C6SF|950298;test_2_reheader_QUAL=Sniffles2.DEL.C6SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.C6SF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.C6SF|test_2|GT:0/1|GQ:38|DR:22|DV:10;test_2_reheader_INFO=Sniffles2.DEL.C6SF|IMPRECISE|SVTYPE:DEL|SVLEN:-153|END:950451|SUPPORT:10|COVERAGE:32:32:32:32:32|STRAND:+-|AF:0.312|STDEV_LEN:7.311|STDEV_POS:128.469|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:38:22:10", + "chr16\t950488\tSniffles2.INS.40SF\tN\tCAACGACAGAGTCAGAGACAACGACAGAGTCAGAGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=36;END=950488;SUPPORT=14;COVERAGE=22,23,23,23,23;STRAND=+-;AF=0.609;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.40SF|chr16;test_1_reheader_POS=Sniffles2.INS.40SF|950488;test_1_reheader_QUAL=Sniffles2.INS.40SF|60;test_1_reheader_FILTERS=Sniffles2.INS.40SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.40SF|test_1|GT:0/1|GQ:50|DR:9|DV:14;test_1_reheader_INFO=Sniffles2.INS.40SF|PRECISE|SVTYPE:INS|SVLEN:36|END:950488|SUPPORT:14|COVERAGE:22:23:23:23:23|STRAND:+-|AF:0.609|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:50:9:14\t./.:.:.:.", + "chr16\t952880\tSniffles2.DEL.71SF:test_1_reheader|Sniffles2.DEL.C8SF:test_2_reheader\ttccacacagacacccaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-178;END=953058;SUPPORT=16;COVERAGE=24,24,25,25,25;STRAND=+-;AF=0.64;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.C8SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.71SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.C8SF|chr16;test_1_reheader_POS=Sniffles2.DEL.71SF|952880;test_2_reheader_POS=Sniffles2.DEL.C8SF|952880;test_1_reheader_QUAL=Sniffles2.DEL.71SF|60;test_2_reheader_QUAL=Sniffles2.DEL.C8SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.71SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.C8SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.71SF|test_1|GT:0/1|GQ:45|DR:9|DV:16;test_2_reheader_SAMPLE=Sniffles2.DEL.C8SF|test_2|GT:0/1|GQ:41|DR:21|DV:10;test_1_reheader_INFO=Sniffles2.DEL.71SF|PRECISE|SVTYPE:DEL|SVLEN:-178|END:953058|SUPPORT:16|COVERAGE:24:24:25:25:25|STRAND:+-|AF:0.64|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.C8SF|PRECISE|SVTYPE:DEL|SVLEN:-178|END:953058|SUPPORT:10|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.323|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:45:9:16\t0/1:41:21:10", + "chr16\t953293\tSniffles2.DEL.72SF:test_1_reheader|Sniffles2.DEL.C9SF:test_2_reheader\tcaaaccagcctcctacacgtccacacagacacccaccccaaaccagcttcctacacgttcacacagacacgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-72;END=953365;SUPPORT=15;COVERAGE=24,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.C9SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.72SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.C9SF|chr16;test_1_reheader_POS=Sniffles2.DEL.72SF|953293;test_2_reheader_POS=Sniffles2.DEL.C9SF|953293;test_1_reheader_QUAL=Sniffles2.DEL.72SF|60;test_2_reheader_QUAL=Sniffles2.DEL.C9SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.72SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.C9SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.72SF|test_1|GT:0/1|GQ:58|DR:10|DV:15;test_2_reheader_SAMPLE=Sniffles2.DEL.C9SF|test_2|GT:0/1|GQ:41|DR:21|DV:10;test_1_reheader_INFO=Sniffles2.DEL.72SF|PRECISE|SVTYPE:DEL|SVLEN:-72|END:953365|SUPPORT:15|COVERAGE:24:25:25:25:25|STRAND:+-|AF:0.6|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.C9SF|PRECISE|SVTYPE:DEL|SVLEN:-72|END:953365|SUPPORT:10|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.323|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:58:10:15\t0/1:41:21:10", + "chr16\t953349\tSniffles2.DEL.75SF:test_1_reheader|Sniffles2.DEL.CDSF:test_2_reheader\tgttcacacagacacggaccccaaaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctacacgttcacacagacacggaccccacaccagcctcctacacgtccacacagacacccaccccaaaccagcctcctgcacgtccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacagacacccactccaaaccagcctcctacacgtccacacagacaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacatgtccacacagacacccaccccaaaccagcctcctacat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-440;END=953789;SUPPORT=9;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.36;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.CDSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.75SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.CDSF|chr16;test_1_reheader_POS=Sniffles2.DEL.75SF|953349;test_2_reheader_POS=Sniffles2.DEL.CDSF|953349;test_1_reheader_QUAL=Sniffles2.DEL.75SF|60;test_2_reheader_QUAL=Sniffles2.DEL.CDSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.75SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.CDSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.75SF|test_1|GT:0/1|GQ:45|DR:16|DV:9;test_2_reheader_SAMPLE=Sniffles2.DEL.CDSF|test_2|GT:0/1|GQ:60|DR:15|DV:16;test_1_reheader_INFO=Sniffles2.DEL.75SF|PRECISE|SVTYPE:DEL|SVLEN:-440|END:953789|SUPPORT:9|COVERAGE:25:25:25:25:25|STRAND:+-|AF:0.36|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.CDSF|PRECISE|SVTYPE:DEL|SVLEN:-440|END:953789|SUPPORT:16|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.516|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:45:16:9\t0/1:60:15:16", + "chr16\t953507\tSniffles2.DEL.73SF:test_1_reheader|Sniffles2.DEL.CBSF:test_2_reheader\tacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacatatccacacagacaccccaaaccagcctcctacacgtccacacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-106;END=953613;SUPPORT=15;COVERAGE=25,25,25,25,25;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.CBSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.73SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.CBSF|chr16;test_1_reheader_POS=Sniffles2.DEL.73SF|953507;test_2_reheader_POS=Sniffles2.DEL.CBSF|953507;test_1_reheader_QUAL=Sniffles2.DEL.73SF|60;test_2_reheader_QUAL=Sniffles2.DEL.CBSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.73SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.CBSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.73SF|test_1|GT:0/1|GQ:58|DR:10|DV:15;test_2_reheader_SAMPLE=Sniffles2.DEL.CBSF|test_2|GT:0/1|GQ:28|DR:22|DV:9;test_1_reheader_INFO=Sniffles2.DEL.73SF|PRECISE|SVTYPE:DEL|SVLEN:-106|END:953613|SUPPORT:15|COVERAGE:25:25:25:25:25|STRAND:+-|AF:0.6|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.CBSF|PRECISE|SVTYPE:DEL|SVLEN:-106|END:953613|SUPPORT:9|COVERAGE:31:31:31:31:31|STRAND:+-|AF:0.29|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:58:10:15\t0/1:28:22:9", + "chr16\t954972\tSniffles2.INS.41SF:test_1_reheader|Sniffles2.INS.60SF:test_2_reheader\tN\tCTAAGCGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGGGGTCTGTGCACACACACACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=71;END=954972;SUPPORT=13;COVERAGE=25,24,24,26,26;STRAND=+-;AF=0.542;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.60SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.41SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.60SF|chr16;test_1_reheader_POS=Sniffles2.INS.41SF|954972;test_2_reheader_POS=Sniffles2.INS.60SF|954972;test_1_reheader_QUAL=Sniffles2.INS.41SF|60;test_2_reheader_QUAL=Sniffles2.INS.60SF|60;test_1_reheader_FILTERS=Sniffles2.INS.41SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.60SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.41SF|test_1|GT:0/1|GQ:60|DR:11|DV:13;test_2_reheader_SAMPLE=Sniffles2.INS.60SF|test_2|GT:0/1|GQ:15|DR:23|DV:8;test_1_reheader_INFO=Sniffles2.INS.41SF|PRECISE|SVTYPE:INS|SVLEN:71|END:954972|SUPPORT:13|COVERAGE:25:24:24:26:26|STRAND:+-|AF:0.542|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.60SF|IMPRECISE|SVTYPE:INS|SVLEN:71|END:954972|SUPPORT:8|COVERAGE:32:31:31:32:33|STRAND:+-|AF:0.258|STDEV_LEN:2.345|STDEV_POS:27.353|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:11:13\t0/1:15:23:8", + "chr16\t955127\tSniffles2.INS.44SF:test_1_reheader|Sniffles2.INS.61SF:test_2_reheader\tN\tAACCAGACACGTTACATAAAATGCGTGCCTGCTGCAGACGTGGTGTGTGTATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCACAGCAGACGCGGTGTGTGCGTACACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGACGCAGTGTGTGCATACACATCTAAGTG\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=284;END=955127;SUPPORT=13;COVERAGE=27,26,26,26,27;STRAND=+-;AF=0.5;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.61SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.44SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.61SF|chr16;test_1_reheader_POS=Sniffles2.INS.44SF|955127;test_2_reheader_POS=Sniffles2.INS.61SF|955136;test_1_reheader_QUAL=Sniffles2.INS.44SF|60;test_2_reheader_QUAL=Sniffles2.INS.61SF|60;test_1_reheader_FILTERS=Sniffles2.INS.44SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.61SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.44SF|test_1|GT:0/1|GQ:60|DR:13|DV:13;test_2_reheader_SAMPLE=Sniffles2.INS.61SF|test_2|GT:0/1|GQ:48|DR:22|DV:11;test_1_reheader_INFO=Sniffles2.INS.44SF|PRECISE|SVTYPE:INS|SVLEN:284|END:955127|SUPPORT:13|COVERAGE:27:26:26:26:27|STRAND:+-|AF:0.5|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.61SF|IMPRECISE|SVTYPE:INS|SVLEN:286|END:955136|SUPPORT:11|COVERAGE:30:32:33:33:33|STRAND:+-|AF:0.333|STDEV_LEN:3.599|STDEV_POS:75.588|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:13:13\t0/1:48:22:11", + "chr16\t955473\tSniffles2.INS.45SF:test_1_reheader|Sniffles2.INS.64SF:test_2_reheader\tN\tACACACACACACACACATCTAAGTGAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGATGCGGTGTGTGCATACACACACACACATCTAAGTAAACCAGACACGTTACATAAAATGCGTGCCTGCAGCAGACGTAGTGTGTGCATCCACACACACACATCTAAGTAAACTAGACACGTTACATAAAATGCGTGCCCGCAGCAGAGACGGTGTGTGCGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=223;END=955473;SUPPORT=15;COVERAGE=24,26,26,27,27;STRAND=+-;AF=0.577;STDEV_LEN=0.5;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.64SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.45SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.64SF|chr16;test_1_reheader_POS=Sniffles2.INS.45SF|955473;test_2_reheader_POS=Sniffles2.INS.64SF|955473;test_1_reheader_QUAL=Sniffles2.INS.45SF|60;test_2_reheader_QUAL=Sniffles2.INS.64SF|60;test_1_reheader_FILTERS=Sniffles2.INS.45SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.64SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.45SF|test_1|GT:0/1|GQ:60|DR:11|DV:15;test_2_reheader_SAMPLE=Sniffles2.INS.64SF|test_2|GT:0/1|GQ:60|DR:21|DV:12;test_1_reheader_INFO=Sniffles2.INS.45SF|PRECISE|SVTYPE:INS|SVLEN:223|END:955473|SUPPORT:15|COVERAGE:24:26:26:27:27|STRAND:+-|AF:0.577|STDEV_LEN:0.5|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.64SF|PRECISE|SVTYPE:INS|SVLEN:223|END:955473|SUPPORT:12|COVERAGE:31:33:33:33:33|STRAND:+-|AF:0.364|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:11:15\t0/1:60:21:12", + "chr16\t955933\tSniffles2.INS.46SF:test_1_reheader|Sniffles2.INS.65SF:test_2_reheader\tN\tCACGGCACCCACCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=57;END=955933;SUPPORT=12;COVERAGE=26,27,27,29,29;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.65SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.46SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.65SF|chr16;test_1_reheader_POS=Sniffles2.INS.46SF|955933;test_2_reheader_POS=Sniffles2.INS.65SF|955933;test_1_reheader_QUAL=Sniffles2.INS.46SF|60;test_2_reheader_QUAL=Sniffles2.INS.65SF|60;test_1_reheader_FILTERS=Sniffles2.INS.46SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.65SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.46SF|test_1|GT:0/1|GQ:60|DR:15|DV:12;test_2_reheader_SAMPLE=Sniffles2.INS.65SF|test_2|GT:0/1|GQ:60|DR:21|DV:12;test_1_reheader_INFO=Sniffles2.INS.46SF|PRECISE|SVTYPE:INS|SVLEN:57|END:955933|SUPPORT:12|COVERAGE:26:27:27:29:29|STRAND:+-|AF:0.444|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.65SF|IMPRECISE|SVTYPE:INS|SVLEN:57|END:955933|SUPPORT:12|COVERAGE:33:33:33:31:31|STRAND:+-|AF:0.364|STDEV_LEN:0.756|STDEV_POS:42.601|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:15:12\t0/1:60:21:12", + "chr16\t956173\tSniffles2.INS.47SF\tN\tCCCACGACGGCTCTCTCACATCCACAGGTCTCCGAGTTCACGTCTCACGGCGCCCA\t60\tGT\tPRECISE;SVTYPE=INS;SVLEN=57;END=956173;SUPPORT=5;COVERAGE=27,29,29,29,29;STRAND=+-;AF=0.172;STDEV_LEN=0.577;STDEV_POS=10.392;SUPPORT_LONG=0;FOUND_IN=sniffles;set=filterIntest_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.INS.47SF|chr16;test_1_reheader_POS=Sniffles2.INS.47SF|956173;test_1_reheader_QUAL=Sniffles2.INS.47SF|60;test_1_reheader_FILTERS=Sniffles2.INS.47SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.47SF|test_1|GT:0/0|GQ:16|DR:24|DV:5;test_1_reheader_INFO=Sniffles2.INS.47SF|PRECISE|SVTYPE:INS|SVLEN:57|END:956173|SUPPORT:5|COVERAGE:27:29:29:29:29|STRAND:+-|AF:0.172|STDEV_LEN:0.577|STDEV_POS:10.392|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/0:16:24:5\t./.:.:.:.", + "chr16\t960401\tSniffles2.DEL.7CSF:test_1_reheader|Sniffles2.DEL.D3SF:test_2_reheader\tacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacactggatcacaacccagacaccatctcatggtgacaacacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagac\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-864;END=961265;SUPPORT=13;COVERAGE=31,31,31,30,30;STRAND=+-;AF=0.419;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.D3SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7CSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D3SF|chr16;test_1_reheader_POS=Sniffles2.DEL.7CSF|960401;test_2_reheader_POS=Sniffles2.DEL.D3SF|960552;test_1_reheader_QUAL=Sniffles2.DEL.7CSF|60;test_2_reheader_QUAL=Sniffles2.DEL.D3SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.7CSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D3SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7CSF|test_1|GT:0/1|GQ:60|DR:18|DV:13;test_2_reheader_SAMPLE=Sniffles2.DEL.D3SF|test_2|GT:0/1|GQ:60|DR:16|DV:11;test_1_reheader_INFO=Sniffles2.DEL.7CSF|PRECISE|SVTYPE:DEL|SVLEN:-864|END:961265|SUPPORT:13|COVERAGE:31:31:31:30:30|STRAND:+-|AF:0.419|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D3SF|IMPRECISE|SVTYPE:DEL|SVLEN:-713|END:961265|SUPPORT:11|COVERAGE:27:27:27:27:27|STRAND:+-|AF:0.407|STDEV_LEN:61.173|STDEV_POS:14.697|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:18:13\t0/1:60:16:11", + "chr16\t960535\tSniffles2.DEL.78SF:test_1_reheader|Sniffles2.DEL.D1SF:test_2_reheader\tcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacaacacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacagcacgggatcacgacccagacagactcacggtgacagcacgggatcacgacccagacacagactcacggtgacag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-262;END=960797;SUPPORT=14;COVERAGE=31,31,31,31,30;STRAND=+-;AF=0.452;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.D1SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.78SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D1SF|chr16;test_1_reheader_POS=Sniffles2.DEL.78SF|960535;test_2_reheader_POS=Sniffles2.DEL.D1SF|960535;test_1_reheader_QUAL=Sniffles2.DEL.78SF|60;test_2_reheader_QUAL=Sniffles2.DEL.D1SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.78SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D1SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.78SF|test_1|GT:0/1|GQ:60|DR:17|DV:14;test_2_reheader_SAMPLE=Sniffles2.DEL.D1SF|test_2|GT:0/1|GQ:60|DR:15|DV:12;test_1_reheader_INFO=Sniffles2.DEL.78SF|PRECISE|SVTYPE:DEL|SVLEN:-262|END:960797|SUPPORT:14|COVERAGE:31:31:31:31:30|STRAND:+-|AF:0.452|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D1SF|IMPRECISE|SVTYPE:DEL|SVLEN:-262|END:960797|SUPPORT:12|COVERAGE:27:27:27:27:27|STRAND:+-|AF:0.444|STDEV_LEN:1.833|STDEV_POS:50.328|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:17:14\t0/1:60:15:12", + "chr16\t961793\tSniffles2.DEL.7ESF:test_1_reheader|Sniffles2.DEL.D4SF:test_2_reheader\tacagactcacggtgacagcacgggatcacgacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=961829;SUPPORT=13;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.433;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.D4SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7ESF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D4SF|chr16;test_1_reheader_POS=Sniffles2.DEL.7ESF|961793;test_2_reheader_POS=Sniffles2.DEL.D4SF|961793;test_1_reheader_QUAL=Sniffles2.DEL.7ESF|60;test_2_reheader_QUAL=Sniffles2.DEL.D4SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.7ESF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D4SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7ESF|test_1|GT:0/1|GQ:60|DR:17|DV:13;test_2_reheader_SAMPLE=Sniffles2.DEL.D4SF|test_2|GT:0/1|GQ:14|DR:20|DV:7;test_1_reheader_INFO=Sniffles2.DEL.7ESF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:961829|SUPPORT:13|COVERAGE:30:30:30:30:30|STRAND:+-|AF:0.433|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D4SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:961829|SUPPORT:7|COVERAGE:27:27:27:27:27|STRAND:+-|AF:0.259|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:17:13\t0/1:14:20:7", + "chr16\t961981\tSniffles2.DEL.7FSF:test_1_reheader|Sniffles2.DEL.D5SF:test_2_reheader\tacagactcacggtgacagcacgggatcaccacccag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=962017;SUPPORT=12;COVERAGE=30,30,30,30,30;STRAND=+-;AF=0.4;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.D5SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7FSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.D5SF|chr16;test_1_reheader_POS=Sniffles2.DEL.7FSF|961981;test_2_reheader_POS=Sniffles2.DEL.D5SF|961981;test_1_reheader_QUAL=Sniffles2.DEL.7FSF|60;test_2_reheader_QUAL=Sniffles2.DEL.D5SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.7FSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.D5SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7FSF|test_1|GT:0/1|GQ:60|DR:18|DV:12;test_2_reheader_SAMPLE=Sniffles2.DEL.D5SF|test_2|GT:0/1|GQ:14|DR:20|DV:7;test_1_reheader_INFO=Sniffles2.DEL.7FSF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:962017|SUPPORT:12|COVERAGE:30:30:30:30:30|STRAND:+-|AF:0.4|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.D5SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:962017|SUPPORT:7|COVERAGE:27:27:27:27:26|STRAND:+-|AF:0.259|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:18:12\t0/1:14:20:7", + "chr16\t1040567\tSniffles2.INS.67SF\tN\tCCTGCCAAAGTCCCCACCGAGGTTCCCTCCGAGGTTCCCGCCGAGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=47;END=1040567;SUPPORT=2;COVERAGE=2,2,2,2,2;STRAND=-;AF=1;STDEV_LEN=0.707;STDEV_POS=5.657;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.67SF|chr16;test_2_reheader_POS=Sniffles2.INS.67SF|1040567;test_2_reheader_QUAL=Sniffles2.INS.67SF|60;test_2_reheader_FILTERS=Sniffles2.INS.67SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.67SF|test_2|GT:1/1|GQ:5|DR:0|DV:2;test_2_reheader_INFO=Sniffles2.INS.67SF|PRECISE|SVTYPE:INS|SVLEN:47|END:1040567|SUPPORT:2|COVERAGE:2:2:2:2:2|STRAND:-|AF:1|STDEV_LEN:0.707|STDEV_POS:5.657|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:5:0:2", + "chr16\t1043243\tSniffles2.DEL.DBSF\tggtcagggacccctcgggtcagccttggggccgttctggggggtggtcagggacccctcgggtcagccttggggccgttccaggggggt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-89;END=1043332;SUPPORT=4;COVERAGE=4,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.DBSF|chr16;test_2_reheader_POS=Sniffles2.DEL.DBSF|1043243;test_2_reheader_QUAL=Sniffles2.DEL.DBSF|60;test_2_reheader_FILTERS=Sniffles2.DEL.DBSF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.DBSF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_INFO=Sniffles2.DEL.DBSF|PRECISE|SVTYPE:DEL|SVLEN:-89|END:1043332|SUPPORT:4|COVERAGE:4:4:4:4:5|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t1/1:11:0:4", + "chr16\t1075978\tSniffles2.INS.4ASF:test_1_reheader|Sniffles2.INS.6ASF:test_2_reheader\tN\tCCCTCCTCCCCTCCCCCTCCTTTCCCTCCCTCTCTCCCTCTCTCCTCCCCGCCTCCCCATCCCTCTCCCTCTCCCTCCTCTCTCTCTCCCCTACCCTGTCTTTCTCTCTGCCTCCCCGCCTCCCCTTCCCTCTCCCCATACCCTGTCTTTCTCTCTCCCT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=160;END=1075978;SUPPORT=5;COVERAGE=8,5,5,5,4;STRAND=+-;AF=1;STDEV_LEN=1.155;STDEV_POS=8.737;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.6ASF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.4ASF|chr16;test_2_reheader_CHROM=Sniffles2.INS.6ASF|chr16;test_1_reheader_POS=Sniffles2.INS.4ASF|1075978;test_2_reheader_POS=Sniffles2.INS.6ASF|1075983;test_1_reheader_QUAL=Sniffles2.INS.4ASF|60;test_2_reheader_QUAL=Sniffles2.INS.6ASF|60;test_1_reheader_FILTERS=Sniffles2.INS.4ASF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.6ASF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.4ASF|test_1|GT:1/1|GQ:13|DR:0|DV:5;test_2_reheader_SAMPLE=Sniffles2.INS.6ASF|test_2|GT:1/1|GQ:6|DR:3|DV:13;test_1_reheader_INFO=Sniffles2.INS.4ASF|PRECISE|SVTYPE:INS|SVLEN:160|END:1075978|SUPPORT:5|COVERAGE:8:5:5:5:4|STRAND:+-|AF:1|STDEV_LEN:1.155|STDEV_POS:8.737|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.6ASF|IMPRECISE|SVTYPE:INS|SVLEN:157|END:1075983|SUPPORT:13|COVERAGE:17:17:16:16:16|STRAND:+-|AF:0.812|STDEV_LEN:38.003|STDEV_POS:38.833|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:13:0:5\t1/1:6:3:13", + "chr16\t1076128\tSniffles2.DEL.84SF\tcctccccgcctccccatccctctccctctccctcctctctctctccccctaccctgttttctctctc\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1076195;SUPPORT=2;COVERAGE=6,5,4,4,3;STRAND=+;AF=0.5;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.84SF|chr16;test_1_reheader_POS=Sniffles2.DEL.84SF|1076128;test_1_reheader_QUAL=Sniffles2.DEL.84SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.84SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.84SF|test_1|GT:0/1|GQ:14|DR:2|DV:2;test_1_reheader_INFO=Sniffles2.DEL.84SF|PRECISE|SVTYPE:DEL|SVLEN:-67|END:1076195|SUPPORT:2|COVERAGE:6:5:4:4:3|STRAND:+|AF:0.5|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:14:2:2\t./.:.:.:.", + "chr16\t1185669\tSniffles2.INS.6ESF\tN\tGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGTGTGGACGGGGCGGGTGAGTACGGTCGGCGTGCGCAGGGGCGGAGCGGGGTACGTGGGGGGCGGGTGAGAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTAGACGGGGCGGGTGAGTAGACGGTCGGCGGGGTACGTGGGGGGCGGGTGAGGGCAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGTAGGCGCGCGCGGACGGGGCGGGTGAGTAGACGGTCGGTGCGGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGAGGACGGCGTGCGTAGGGCGCAGGCGGTGTGCAGACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCAGGTAGACGGCGGTGCATAGGGGCCGGAGGGTGGGTGTGCACGGGCGGGCGAG\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=725;END=1185669;SUPPORT=3;COVERAGE=5,6,6,6,7;STRAND=+-;AF=0.5;STDEV_LEN=55.154;STDEV_POS=139.3;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.6ESF|chr16;test_2_reheader_POS=Sniffles2.INS.6ESF|1185669;test_2_reheader_QUAL=Sniffles2.INS.6ESF|60;test_2_reheader_FILTERS=Sniffles2.INS.6ESF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.6ESF|test_2|GT:0/1|GQ:21|DR:3|DV:3;test_2_reheader_INFO=Sniffles2.INS.6ESF|IMPRECISE|SVTYPE:INS|SVLEN:725|END:1185669|SUPPORT:3|COVERAGE:5:6:6:6:7|STRAND:+-|AF:0.5|STDEV_LEN:55.154|STDEV_POS:139.3|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:21:3:3", + "chr16\t1185837\tSniffles2.INS.6FSF\tN\tGGGTGCAGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCAAGGGCAGGGGTGCGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGGGGCGGGGTGTGTACGGGGCGGGTGAATAGACGGTCGGCATGCATAGGGCCGGGGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGGATTGGGGCCGAAGGCAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTATAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTCAGCGTGGGGCCGACGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGAGCGAGGTGGACGTGGGGGGCGGGTGAGTAGACGGCATGTGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTTGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGGAGGCGGGGAGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCAGCGTGCGTAGGGGCCGGAGGCGGGCCGGGTACGTGGGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGTGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGGAGGCGGGGTACGTGGGGGGCGGGTGAGTAGACGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCATAGGGGCCGAAGGCGGGGTGTGTACGGGGCGCATGTAGACGGCGTAGGGGCCAGAGGCGGGGTGTGTACGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCAGGTGAGTAGACGGCGTGCATAGGGGCCGGAGGCGGGGTGTGTATGGGGCGGGTGAGTAGACGGTCGGCGTGCGTAGGGGCCGGAGGCGGGGTGTGTACGGGGCGGGTGAGTACGCGTGGGGACGGGCGTGTGGGCGGGTGGGTGGGGAGGGGTGGGCGGGCCGGGGCGCTCGGGGCAGGTGGGTGGCGGGGTGGCGCGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=1414;END=1185837;SUPPORT=5;COVERAGE=6,6,7,7,7;STRAND=+-;AF=0.714;STDEV_LEN=153.895;STDEV_POS=111.482;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.6FSF|chr16;test_2_reheader_POS=Sniffles2.INS.6FSF|1185837;test_2_reheader_QUAL=Sniffles2.INS.6FSF|60;test_2_reheader_FILTERS=Sniffles2.INS.6FSF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.6FSF|test_2|GT:0/1|GQ:6|DR:2|DV:5;test_2_reheader_INFO=Sniffles2.INS.6FSF|IMPRECISE|SVTYPE:INS|SVLEN:1414|END:1185837|SUPPORT:5|COVERAGE:6:6:7:7:7|STRAND:+-|AF:0.714|STDEV_LEN:153.895|STDEV_POS:111.482|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:6:2:5", + "chr16\t1190923\tSniffles2.INS.4ESF:test_1_reheader|Sniffles2.INS.70SF:test_2_reheader\tN\tGGGTTTCGCTGACCCAGCAGGCTGGCCTGGTTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTGACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTCTTACTCAGCAGGCTGGCCTGGCTGTGTGGCCTCCGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTTTCGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCAGGGTTTTGGTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTTGGGGTCTCTGACCCAGTAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTCGGGGTCTCTGACCCAGCAGGCTGGCCTGGCTGTGTGGCCTCAGGCACACTC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=523;END=1190923;SUPPORT=3;COVERAGE=10,10,10,10,11;STRAND=+;AF=0.3;STDEV_LEN=2.646;STDEV_POS=50.013;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.70SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.4ESF|chr16;test_2_reheader_CHROM=Sniffles2.INS.70SF|chr16;test_1_reheader_POS=Sniffles2.INS.4ESF|1190923;test_2_reheader_POS=Sniffles2.INS.70SF|1190943;test_1_reheader_QUAL=Sniffles2.INS.4ESF|60;test_2_reheader_QUAL=Sniffles2.INS.70SF|60;test_1_reheader_FILTERS=Sniffles2.INS.4ESF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.70SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.4ESF|test_1|GT:0/1|GQ:10|DR:7|DV:3;test_2_reheader_SAMPLE=Sniffles2.INS.70SF|test_2|GT:0/1|GQ:36|DR:5|DV:5;test_1_reheader_INFO=Sniffles2.INS.4ESF|IMPRECISE|SVTYPE:INS|SVLEN:523|END:1190923|SUPPORT:3|COVERAGE:10:10:10:10:11|STRAND:+|AF:0.3|STDEV_LEN:2.646|STDEV_POS:50.013|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.70SF|IMPRECISE|SVTYPE:INS|SVLEN:524|END:1190943|SUPPORT:5|COVERAGE:9:10:10:10:10|STRAND:+-|AF:0.5|STDEV_LEN:2.887|STDEV_POS:35.907|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:10:7:3\t0/1:36:5:5", + "chr16\t1191001\tSniffles2.DEL.86SF\tcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctgg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191211;SUPPORT=7;COVERAGE=10,10,11,11,11;STRAND=+-;AF=0.636;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.86SF|chr16;test_1_reheader_POS=Sniffles2.DEL.86SF|1191001;test_1_reheader_QUAL=Sniffles2.DEL.86SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.86SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.86SF|test_1|GT:0/1|GQ:20|DR:4|DV:7;test_1_reheader_INFO=Sniffles2.DEL.86SF|PRECISE|SVTYPE:DEL|SVLEN:-210|END:1191211|SUPPORT:7|COVERAGE:10:10:11:11:11|STRAND:+-|AF:0.636|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:20:4:7\t./.:.:.:.", + "chr16\t1191090\tSniffles2.DEL.DESF\tgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctctgactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctcttactcagcaggctggcctggctgtgtggcctcaggcacactcggggtctctgacccagcaggctggcctggctgtgtggcctcaggcacactcggggtctctct\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-210;END=1191300;SUPPORT=3;COVERAGE=9,10,10,10,10;STRAND=+-;AF=0.3;STDEV_LEN=0.577;STDEV_POS=51.384;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.DESF|chr16;test_2_reheader_POS=Sniffles2.DEL.DESF|1191090;test_2_reheader_QUAL=Sniffles2.DEL.DESF|60;test_2_reheader_FILTERS=Sniffles2.DEL.DESF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.DESF|test_2|GT:0/1|GQ:10|DR:7|DV:3;test_2_reheader_INFO=Sniffles2.DEL.DESF|IMPRECISE|SVTYPE:DEL|SVLEN:-210|END:1191300|SUPPORT:3|COVERAGE:9:10:10:10:10|STRAND:+-|AF:0.3|STDEV_LEN:0.577|STDEV_POS:51.384|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:10:7:3", + "chr16\t1204953\tSniffles2.INS.50SF:test_1_reheader|Sniffles2.INS.4FSF:test_1_reheader|Sniffles2.INS.74SF:test_2_reheader|Sniffles2.INS.73SF:test_2_reheader\tN\tGGGCCCCAGATCAGTGCCGGGGAGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGTGGGGCCCCAGATCAGTGCCGGGGAGGGGTGGGAGCCGCGGGT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=418;END=1204953;SUPPORT=8;COVERAGE=17,16,15,15,15;STRAND=+-;AF=0.533;STDEV_LEN=0.816;STDEV_POS=64;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.4FSF:test_1_reheader|Sniffles2.INS.74SF:test_2_reheader|Sniffles2.INS.73SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.50SF|chr16,Sniffles2.INS.4FSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.74SF|chr16,Sniffles2.INS.73SF|chr16;test_1_reheader_POS=Sniffles2.INS.50SF|1204953,Sniffles2.INS.4FSF|1204961;test_2_reheader_POS=Sniffles2.INS.74SF|1204953,Sniffles2.INS.73SF|1204971;test_1_reheader_QUAL=Sniffles2.INS.50SF|60,Sniffles2.INS.4FSF|60;test_2_reheader_QUAL=Sniffles2.INS.74SF|60,Sniffles2.INS.73SF|60;test_1_reheader_FILTERS=Sniffles2.INS.50SF|PASS,Sniffles2.INS.4FSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.74SF|PASS,Sniffles2.INS.73SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.50SF|test_1|GT:0/1|GQ:47|DR:7|DV:8,Sniffles2.INS.4FSF|test_1|GT:0/1|GQ:47|DR:7|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.74SF|test_2|GT:0/1|GQ:32|DR:6|DV:10,Sniffles2.INS.73SF|test_2|GT:0/1|GQ:6|DR:12|DV:4;test_1_reheader_INFO=Sniffles2.INS.50SF|IMPRECISE|SVTYPE:INS|SVLEN:418|END:1204953|SUPPORT:8|COVERAGE:17:16:15:15:15|STRAND:+-|AF:0.533|STDEV_LEN:0.816|STDEV_POS:64|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.4FSF|IMPRECISE|SVTYPE:INS|SVLEN:209|END:1204961|SUPPORT:8|COVERAGE:17:16:15:15:15|STRAND:+-|AF:0.533|STDEV_LEN:0.577|STDEV_POS:91.065|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.74SF|IMPRECISE|SVTYPE:INS|SVLEN:417|END:1204953|SUPPORT:10|COVERAGE:17:16:16:16:16|STRAND:+-|AF:0.625|STDEV_LEN:5.563|STDEV_POS:20.004|SUPPORT_LONG:0|FOUND_IN:sniffles,Sniffles2.INS.73SF|IMPRECISE|SVTYPE:INS|SVLEN:210|END:1204971|SUPPORT:4|COVERAGE:17:16:16:16:16|STRAND:+-|AF:0.25|STDEV_LEN:0|STDEV_POS:72.125|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:47:7:8\t0/1:6:12:4", + "chr16\t1230996\tSniffles2.DEL.E1SF\tccccagcccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctgcccatggactagtcccagccccagccccagctccccatggactcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcgcagcccccggccccagctccccatggtctcacccccag\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-232;END=1231228;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.E1SF|chr16;test_2_reheader_POS=Sniffles2.DEL.E1SF|1230996;test_2_reheader_QUAL=Sniffles2.DEL.E1SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.E1SF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.E1SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_2_reheader_INFO=Sniffles2.DEL.E1SF|PRECISE|SVTYPE:DEL|SVLEN:-232|END:1231228|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:10:11:2", + "chr16\t1231234\tSniffles2.INS.52SF:test_1_reheader|Sniffles2.INS.76SF:test_2_reheader\tN\tCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=132;END=1231234;SUPPORT=4;COVERAGE=14,14,14,14,14;STRAND=-;AF=0.286;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.INS.76SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.52SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.76SF|chr16;test_1_reheader_POS=Sniffles2.INS.52SF|1231234;test_2_reheader_POS=Sniffles2.INS.76SF|1231235;test_1_reheader_QUAL=Sniffles2.INS.52SF|60;test_2_reheader_QUAL=Sniffles2.INS.76SF|60;test_1_reheader_FILTERS=Sniffles2.INS.52SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.76SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.52SF|test_1|GT:0/1|GQ:12|DR:10|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.76SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_1_reheader_INFO=Sniffles2.INS.52SF|PRECISE|SVTYPE:INS|SVLEN:132|END:1231234|SUPPORT:4|COVERAGE:14:14:14:14:14|STRAND:-|AF:0.286|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.76SF|IMPRECISE|SVTYPE:INS|SVLEN:135|END:1231235|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:2.121|STDEV_POS:29.698|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:12:10:4\t0/0:10:11:2", + "chr16\t1231287\tSniffles2.DEL.E2SF\tcccccagccccagcccagctccccatggactagtcccatcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccagccccagcccagctccccatggactcacccccagccccagcccagctccccatggactagtcccagcccccggccccagctccccatggtctcacccccagccccagcccagctccccatggtctcacccccggccccagctccctgtggacttg\tN\t60\tGT\tPRECISE;SVTYPE=DEL;SVLEN=-261;END=1231548;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=-;AF=0.154;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.E2SF|chr16;test_2_reheader_POS=Sniffles2.DEL.E2SF|1231287;test_2_reheader_QUAL=Sniffles2.DEL.E2SF|60;test_2_reheader_FILTERS=Sniffles2.DEL.E2SF|GT;test_2_reheader_SAMPLE=Sniffles2.DEL.E2SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_2_reheader_INFO=Sniffles2.DEL.E2SF|PRECISE|SVTYPE:DEL|SVLEN:-261|END:1231548|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:10:11:2", + "chr16\t1231356\tSniffles2.INS.78SF\tN\tCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCATCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tGT\tIMPRECISE;SVTYPE=INS;SVLEN=385;END=1231356;SUPPORT=2;COVERAGE=13,13,13,13,13;STRAND=+-;AF=0.154;STDEV_LEN=7.778;STDEV_POS=24.749;SUPPORT_LONG=0;FOUND_IN=sniffles;set=filterIntest_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.78SF|chr16;test_2_reheader_POS=Sniffles2.INS.78SF|1231356;test_2_reheader_QUAL=Sniffles2.INS.78SF|60;test_2_reheader_FILTERS=Sniffles2.INS.78SF|GT;test_2_reheader_SAMPLE=Sniffles2.INS.78SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_2_reheader_INFO=Sniffles2.INS.78SF|IMPRECISE|SVTYPE:INS|SVLEN:385|END:1231356|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:+-|AF:0.154|STDEV_LEN:7.778|STDEV_POS:24.749|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/0:10:11:2", + "chr16\t1231416\tSniffles2.INS.53SF:test_1_reheader|Sniffles2.INS.77SF:test_2_reheader\tN\tCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCGCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGTCTCACCCCCAGCCCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCCGGCCCCAGCTCCCCATGGTCTCACCCCCAGCTCCAGCCCAGCTCCCCATGGACTAGTCCCAGCCCCAGCCCAGCTCCCCATGGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=252;END=1231416;SUPPORT=4;COVERAGE=14,14,14,14,13;STRAND=-;AF=0.286;STDEV_LEN=0.707;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.77SF:test_2_reheader;set=test_1_reheader-filterIntest_2_reheader;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.53SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.77SF|chr16;test_1_reheader_POS=Sniffles2.INS.53SF|1231416;test_2_reheader_POS=Sniffles2.INS.77SF|1231446;test_1_reheader_QUAL=Sniffles2.INS.53SF|60;test_2_reheader_QUAL=Sniffles2.INS.77SF|60;test_1_reheader_FILTERS=Sniffles2.INS.53SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.77SF|GT;test_1_reheader_SAMPLE=Sniffles2.INS.53SF|test_1|GT:0/1|GQ:12|DR:10|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.77SF|test_2|GT:0/0|GQ:10|DR:11|DV:2;test_1_reheader_INFO=Sniffles2.INS.53SF|PRECISE|SVTYPE:INS|SVLEN:252|END:1231416|SUPPORT:4|COVERAGE:14:14:14:14:13|STRAND:-|AF:0.286|STDEV_LEN:0.707|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.77SF|PRECISE|SVTYPE:INS|SVLEN:256|END:1231446|SUPPORT:2|COVERAGE:13:13:13:13:13|STRAND:-|AF:0.154|STDEV_LEN:2.121|STDEV_POS:21.213|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:12:10:4\t0/0:10:11:2", + "chr16\t1238068\tSniffles2.INS.79SF\tN\tGTGTGTGAATGTGTGCATGTGTTCGTGTGTGCATGTGAACATCCGTGTGTGCATATGTGCATGTGAGTGCACAGATGTGCGGTGTGTGTGCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=92;END=1238068;SUPPORT=3;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.375;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.79SF|chr16;test_2_reheader_POS=Sniffles2.INS.79SF|1238068;test_2_reheader_QUAL=Sniffles2.INS.79SF|60;test_2_reheader_FILTERS=Sniffles2.INS.79SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.79SF|test_2|GT:0/1|GQ:16|DR:5|DV:3;test_2_reheader_INFO=Sniffles2.INS.79SF|PRECISE|SVTYPE:INS|SVLEN:92|END:1238068|SUPPORT:3|COVERAGE:8:8:8:8:2|STRAND:+-|AF:0.375|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:16:5:3", + "chr16\t1238210\tSniffles2.INS.7ASF\tN\tGTGCATATGTGTGCGTGTGTGCACACACGTGTGTACATGTGTGA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=44;END=1238210;SUPPORT=6;COVERAGE=8,8,8,8,2;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.7ASF|chr16;test_2_reheader_POS=Sniffles2.INS.7ASF|1238210;test_2_reheader_QUAL=Sniffles2.INS.7ASF|60;test_2_reheader_FILTERS=Sniffles2.INS.7ASF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.7ASF|test_2|GT:0/1|GQ:3|DR:2|DV:6;test_2_reheader_INFO=Sniffles2.INS.7ASF|PRECISE|SVTYPE:INS|SVLEN:44|END:1238210|SUPPORT:6|COVERAGE:8:8:8:8:2|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:3:2:6", + "chr16\t1248124\tSniffles2.DEL.8CSF:test_1_reheader|Sniffles2.DEL.ECSF:test_2_reheader\tcactcacacatgtacacatgtgtgtgcacacacgcacacatatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=1248168;SUPPORT=4;COVERAGE=1,4,4,4,5;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.ECSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.8CSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.ECSF|chr16;test_1_reheader_POS=Sniffles2.DEL.8CSF|1248124;test_2_reheader_POS=Sniffles2.DEL.ECSF|1248124;test_1_reheader_QUAL=Sniffles2.DEL.8CSF|60;test_2_reheader_QUAL=Sniffles2.DEL.ECSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.8CSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.ECSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.8CSF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.DEL.ECSF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_1_reheader_INFO=Sniffles2.DEL.8CSF|PRECISE|SVTYPE:DEL|SVLEN:-44|END:1248168|SUPPORT:4|COVERAGE:1:4:4:4:5|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.ECSF|PRECISE|SVTYPE:DEL|SVLEN:-44|END:1248168|SUPPORT:4|COVERAGE:2:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t1/1:11:0:4", + "chr16\t1248322\tSniffles2.DEL.8DSF:test_1_reheader|Sniffles2.DEL.EDSF:test_2_reheader\tgcacatatgcacacacggatgttcacatgcacacacgaacacatgcacacattcacaca\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-59;END=1248381;SUPPORT=4;COVERAGE=4,4,4,4,6;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.EDSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.8DSF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.EDSF|chr16;test_1_reheader_POS=Sniffles2.DEL.8DSF|1248322;test_2_reheader_POS=Sniffles2.DEL.EDSF|1248302;test_1_reheader_QUAL=Sniffles2.DEL.8DSF|60;test_2_reheader_QUAL=Sniffles2.DEL.EDSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.8DSF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.EDSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.8DSF|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.DEL.EDSF|test_2|GT:1/1|GQ:11|DR:0|DV:4;test_1_reheader_INFO=Sniffles2.DEL.8DSF|PRECISE|SVTYPE:DEL|SVLEN:-59|END:1248381|SUPPORT:4|COVERAGE:4:4:4:4:6|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.EDSF|PRECISE|SVTYPE:DEL|SVLEN:-59|END:1248361|SUPPORT:4|COVERAGE:3:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t1/1:11:0:4", + "chr16\t1254908\tSniffles2.DEL.8ESF:test_1_reheader|Sniffles2.DEL.EESF:test_2_reheader\tccatggggagctggggccgggggctgggactagtccatggggagctgggctggggctgggggtgaga\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-67;END=1254975;SUPPORT=8;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.571;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.EESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.8ESF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.EESF|chr16;test_1_reheader_POS=Sniffles2.DEL.8ESF|1254908;test_2_reheader_POS=Sniffles2.DEL.EESF|1254909;test_1_reheader_QUAL=Sniffles2.DEL.8ESF|60;test_2_reheader_QUAL=Sniffles2.DEL.EESF|60;test_1_reheader_FILTERS=Sniffles2.DEL.8ESF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.EESF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.8ESF|test_1|GT:0/1|GQ:37|DR:6|DV:8;test_2_reheader_SAMPLE=Sniffles2.DEL.EESF|test_2|GT:0/1|GQ:11|DR:3|DV:2;test_1_reheader_INFO=Sniffles2.DEL.8ESF|PRECISE|SVTYPE:DEL|SVLEN:-67|END:1254975|SUPPORT:8|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.571|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.EESF|PRECISE|SVTYPE:DEL|SVLEN:-66|END:1254975|SUPPORT:2|COVERAGE:5:5:5:5:7|STRAND:-|AF:0.4|STDEV_LEN:0.707|STDEV_POS:11.314|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:37:6:8\t0/1:11:3:2", + "chr16\t1254975\tSniffles2.INS.57SF:test_1_reheader|Sniffles2.INS.7CSF:test_2_reheader\tN\tCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGAGCTGGGCTGGGGCTGGGACTAGTCCATGGGGAGCTGGGCTGGGGCTGGGACTAGTTCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGTCCATGGGGAGCTGGGCTGGGGCTGGGGGTGAGT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=225;END=1254975;SUPPORT=6;COVERAGE=14,14,14,14,14;STRAND=+-;AF=0.429;STDEV_LEN=0.577;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.7CSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.57SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.7CSF|chr16;test_1_reheader_POS=Sniffles2.INS.57SF|1254975;test_2_reheader_POS=Sniffles2.INS.7CSF|1254975;test_1_reheader_QUAL=Sniffles2.INS.57SF|60;test_2_reheader_QUAL=Sniffles2.INS.7CSF|60;test_1_reheader_FILTERS=Sniffles2.INS.57SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.7CSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.57SF|test_1|GT:0/1|GQ:37|DR:8|DV:6;test_2_reheader_SAMPLE=Sniffles2.INS.7CSF|test_2|GT:0/1|GQ:11|DR:3|DV:2;test_1_reheader_INFO=Sniffles2.INS.57SF|PRECISE|SVTYPE:INS|SVLEN:225|END:1254975|SUPPORT:6|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.429|STDEV_LEN:0.577|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.7CSF|PRECISE|SVTYPE:INS|SVLEN:226|END:1254975|SUPPORT:2|COVERAGE:5:5:5:5:7|STRAND:+-|AF:0.4|STDEV_LEN:0.707|STDEV_POS:21.92|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:37:8:6\t0/1:11:3:2", + "chr16\t1258684\tSniffles2.INS.58SF:test_1_reheader|Sniffles2.INS.7ESF:test_2_reheader\tN\tTGAGCCCCCTCCCCCACCCTGAGCCCCCTCCCCTGTCTTGAGCCCCTGCTCCATCCTGAGTCCCCTCCCCCACACTGAGCCCCCTCCCCTTTCTTGAGCCCCTCATCCATCCTGAGCCCCTCCTCCATCCTGAGCCCCCTCCCCCATCCTGGGCCCCCTCCCCTTTCTTGAGCCCCCCTCCCCCACCCTGAGCCCCCTCCCCTTTCTTGAGCCCCCTCCCCCACCTGAGCCCCTTCCCCTTTCTTGAGTCCCTCCTCCATCCTGAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCTTGAGCCCCTCCTCCACCCTCAGCCCCCTCCCCTTTCT\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=355;END=1258684;SUPPORT=14;COVERAGE=14,14,14,14,14;STRAND=+-;AF=1;STDEV_LEN=37.175;STDEV_POS=1.69;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.7ESF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.58SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.7ESF|chr16;test_1_reheader_POS=Sniffles2.INS.58SF|1258684;test_2_reheader_POS=Sniffles2.INS.7ESF|1258685;test_1_reheader_QUAL=Sniffles2.INS.58SF|60;test_2_reheader_QUAL=Sniffles2.INS.7ESF|60;test_1_reheader_FILTERS=Sniffles2.INS.58SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.7ESF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.58SF|test_1|GT:1/1|GQ:39|DR:0|DV:14;test_2_reheader_SAMPLE=Sniffles2.INS.7ESF|test_2|GT:1/1|GQ:30|DR:0|DV:11;test_1_reheader_INFO=Sniffles2.INS.58SF|IMPRECISE|SVTYPE:INS|SVLEN:355|END:1258684|SUPPORT:14|COVERAGE:14:14:14:14:14|STRAND:+-|AF:1|STDEV_LEN:37.175|STDEV_POS:1.69|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.7ESF|IMPRECISE|SVTYPE:INS|SVLEN:424|END:1258685|SUPPORT:11|COVERAGE:9:11:11:11:15|STRAND:+-|AF:1|STDEV_LEN:34.141|STDEV_POS:1.89|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:39:0:14\t1/1:30:0:11", + "chr16\t1260690\tSniffles2.INS.59SF:test_1_reheader|Sniffles2.INS.7FSF:test_2_reheader\tN\tAGCCCGGAGACCCACGTCCACACACAGCCCGGAGACCCACATCCACACAC\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=50;END=1260690;SUPPORT=7;COVERAGE=15,15,15,16,16;STRAND=+-;AF=0.467;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.7FSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.59SF|chr16;test_2_reheader_CHROM=Sniffles2.INS.7FSF|chr16;test_1_reheader_POS=Sniffles2.INS.59SF|1260690;test_2_reheader_POS=Sniffles2.INS.7FSF|1260690;test_1_reheader_QUAL=Sniffles2.INS.59SF|60;test_2_reheader_QUAL=Sniffles2.INS.7FSF|60;test_1_reheader_FILTERS=Sniffles2.INS.59SF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.7FSF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.59SF|test_1|GT:0/1|GQ:47|DR:8|DV:7;test_2_reheader_SAMPLE=Sniffles2.INS.7FSF|test_2|GT:0/1|GQ:54|DR:9|DV:8;test_1_reheader_INFO=Sniffles2.INS.59SF|PRECISE|SVTYPE:INS|SVLEN:50|END:1260690|SUPPORT:7|COVERAGE:15:15:15:16:16|STRAND:+-|AF:0.467|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.7FSF|PRECISE|SVTYPE:INS|SVLEN:50|END:1260690|SUPPORT:8|COVERAGE:17:17:17:17:16|STRAND:+-|AF:0.471|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:47:8:7\t0/1:54:9:8", + "chr16\t1264730\tSniffles2.DEL.90SF:test_1_reheader|Sniffles2.DEL.EFSF:test_2_reheader\ttgtgtgtatgcgtgtgcatatgtaaggatgtgtgcg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1264766;SUPPORT=6;COVERAGE=15,15,13,12,12;STRAND=+-;AF=0.462;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.EFSF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.90SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.EFSF|chr16;test_1_reheader_POS=Sniffles2.DEL.90SF|1264730;test_2_reheader_POS=Sniffles2.DEL.EFSF|1264730;test_1_reheader_QUAL=Sniffles2.DEL.90SF|60;test_2_reheader_QUAL=Sniffles2.DEL.EFSF|60;test_1_reheader_FILTERS=Sniffles2.DEL.90SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.EFSF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.90SF|test_1|GT:0/1|GQ:40|DR:7|DV:6;test_2_reheader_SAMPLE=Sniffles2.DEL.EFSF|test_2|GT:0/1|GQ:37|DR:6|DV:8;test_1_reheader_INFO=Sniffles2.DEL.90SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1264766|SUPPORT:6|COVERAGE:15:15:13:12:12|STRAND:+-|AF:0.462|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.EFSF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1264766|SUPPORT:8|COVERAGE:14:14:14:14:14|STRAND:+-|AF:0.571|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:40:7:6\t0/1:37:6:8", + "chr16\t1285139\tSniffles2.INS.80SF\tN\tACTCTCCACTATTCCAGGGCCTCATCCCACTCCAGGGCCCTCTCACTATTCCAGGGCCCTCTCCCCCCA\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=80;END=1285139;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=12.53;STDEV_POS=50.013;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.80SF|chr16;test_2_reheader_POS=Sniffles2.INS.80SF|1285139;test_2_reheader_QUAL=Sniffles2.INS.80SF|60;test_2_reheader_FILTERS=Sniffles2.INS.80SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.80SF|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.80SF|IMPRECISE|SVTYPE:INS|SVLEN:80|END:1285139|SUPPORT:3|COVERAGE:4:4:4:4:4|STRAND:+-|AF:0.75|STDEV_LEN:12.53|STDEV_POS:50.013|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3", + "chr16\t1285239\tSniffles2.INS.81SF\tN\tCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACTCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACCCCAGGGCCCTCTCCACTATTCCAGGGCCCTCTCCACCACC\t60\tPASS\tIMPRECISE;SVTYPE=INS;SVLEN=182;END=1285239;SUPPORT=3;COVERAGE=4,4,4,4,4;STRAND=+-;AF=0.75;STDEV_LEN=3.055;STDEV_POS=222.264;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.81SF|chr16;test_2_reheader_POS=Sniffles2.INS.81SF|1285239;test_2_reheader_QUAL=Sniffles2.INS.81SF|60;test_2_reheader_FILTERS=Sniffles2.INS.81SF|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.81SF|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.81SF|IMPRECISE|SVTYPE:INS|SVLEN:182|END:1285239|SUPPORT:3|COVERAGE:4:4:4:4:4|STRAND:+-|AF:0.75|STDEV_LEN:3.055|STDEV_POS:222.264|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3", + "chr16\t1308390\tSniffles2.DEL.91SF:test_1_reheader|Sniffles2.DEL.F1SF:test_2_reheader\ttgagtgagggagggaatgagtgagggagggaatgag\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-36;END=1308426;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.F1SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.91SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.F1SF|chr16;test_1_reheader_POS=Sniffles2.DEL.91SF|1308390;test_2_reheader_POS=Sniffles2.DEL.F1SF|1308390;test_1_reheader_QUAL=Sniffles2.DEL.91SF|60;test_2_reheader_QUAL=Sniffles2.DEL.F1SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.91SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.F1SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.91SF|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.DEL.F1SF|test_2|GT:1/1|GQ:11|DR:3|DV:15;test_1_reheader_INFO=Sniffles2.DEL.91SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1308426|SUPPORT:12|COVERAGE:12:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.F1SF|PRECISE|SVTYPE:DEL|SVLEN:-36|END:1308426|SUPPORT:15|COVERAGE:18:18:18:19:19|STRAND:+-|AF:0.833|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:11:3:15", + "chr16\t1345656\tSniffles2.INS.5BSF:test_1_reheader|Sniffles2.INS.84SF:test_2_reheader\tN\tGCAACCCCAGCCTCCCCAGCCTCCCCAGCAACCCCAGCCTCCCCAGCAACCCCAGCCTCCTCA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=63;END=1345656;SUPPORT=14;COVERAGE=26,26,26,25,24;STRAND=+-;AF=0.538;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.84SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.5BSF|chr16;test_2_reheader_CHROM=Sniffles2.INS.84SF|chr16;test_1_reheader_POS=Sniffles2.INS.5BSF|1345656;test_2_reheader_POS=Sniffles2.INS.84SF|1345656;test_1_reheader_QUAL=Sniffles2.INS.5BSF|60;test_2_reheader_QUAL=Sniffles2.INS.84SF|60;test_1_reheader_FILTERS=Sniffles2.INS.5BSF|PASS;test_2_reheader_FILTERS=Sniffles2.INS.84SF|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.5BSF|test_1|GT:0/1|GQ:60|DR:12|DV:14;test_2_reheader_SAMPLE=Sniffles2.INS.84SF|test_2|GT:0/1|GQ:49|DR:11|DV:8;test_1_reheader_INFO=Sniffles2.INS.5BSF|PRECISE|SVTYPE:INS|SVLEN:63|END:1345656|SUPPORT:14|COVERAGE:26:26:26:25:24|STRAND:+-|AF:0.538|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.84SF|PRECISE|SVTYPE:INS|SVLEN:63|END:1345656|SUPPORT:8|COVERAGE:19:19:19:19:18|STRAND:+-|AF:0.421|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:60:12:14\t0/1:49:11:8", + "chr16\t1356874\tSniffles2.DEL.93SF:test_1_reheader|Sniffles2.DEL.F9SF:test_2_reheader\t.\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-42;END=1356916;SUPPORT=3;COVERAGE=6,5,5,5,5;STRAND=+-;AF=0.6;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.F9SF:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.93SF|chr16;test_2_reheader_CHROM=Sniffles2.DEL.F9SF|chr16;test_1_reheader_POS=Sniffles2.DEL.93SF|1356874;test_2_reheader_POS=Sniffles2.DEL.F9SF|1356874;test_1_reheader_QUAL=Sniffles2.DEL.93SF|60;test_2_reheader_QUAL=Sniffles2.DEL.F9SF|60;test_1_reheader_FILTERS=Sniffles2.DEL.93SF|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.F9SF|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.93SF|test_1|GT:0/1|GQ:11|DR:2|DV:3;test_2_reheader_SAMPLE=Sniffles2.DEL.F9SF|test_2|GT:0/1|GQ:23|DR:6|DV:4;test_1_reheader_INFO=Sniffles2.DEL.93SF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:1356916|SUPPORT:3|COVERAGE:6:5:5:5:5|STRAND:+-|AF:0.6|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.F9SF|PRECISE|SVTYPE:DEL|SVLEN:-42|END:1356916|SUPPORT:4|COVERAGE:10:10:10:10:8|STRAND:+-|AF:0.4|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:11:2:3\t0/1:23:6:4", + "chr16\t1367562\tSniffles2.DEL.FASF\t.\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-53;END=1367615;SUPPORT=2;COVERAGE=3,3,3,3,3;STRAND=+-;AF=0.667;STDEV_LEN=2.121;STDEV_POS=5.657;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.DEL.FASF|chr16;test_2_reheader_POS=Sniffles2.DEL.FASF|1367562;test_2_reheader_QUAL=Sniffles2.DEL.FASF|60;test_2_reheader_FILTERS=Sniffles2.DEL.FASF|PASS;test_2_reheader_SAMPLE=Sniffles2.DEL.FASF|test_2|GT:0/1|GQ:4|DR:1|DV:2;test_2_reheader_INFO=Sniffles2.DEL.FASF|PRECISE|SVTYPE:DEL|SVLEN:-53|END:1367615|SUPPORT:2|COVERAGE:3:3:3:3:3|STRAND:+-|AF:0.667|STDEV_LEN:2.121|STDEV_POS:5.657|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:4:1:2", + "chr20\t2659083\tSniffles2.INS.0S13:test_1_reheader|Sniffles2.INS.0S13:test_2_reheader\tN\tGCAGATCAGAGGCAGGATGTGGCTACCGAGCAGGCAAAGATGATGGGAAAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=51;END=2659083;SUPPORT=8;COVERAGE=21,18,18,18,18;STRAND=+-;AF=0.444;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.0S13:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.0S13|chr20;test_2_reheader_CHROM=Sniffles2.INS.0S13|chr20;test_1_reheader_POS=Sniffles2.INS.0S13|2659083;test_2_reheader_POS=Sniffles2.INS.0S13|2659083;test_1_reheader_QUAL=Sniffles2.INS.0S13|60;test_2_reheader_QUAL=Sniffles2.INS.0S13|60;test_1_reheader_FILTERS=Sniffles2.INS.0S13|PASS;test_2_reheader_FILTERS=Sniffles2.INS.0S13|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.0S13|test_1|GT:0/1|GQ:52|DR:10|DV:8;test_2_reheader_SAMPLE=Sniffles2.INS.0S13|test_2|GT:0/1|GQ:60|DR:18|DV:12;test_1_reheader_INFO=Sniffles2.INS.0S13|PRECISE|SVTYPE:INS|SVLEN:51|END:2659083|SUPPORT:8|COVERAGE:21:18:18:18:18|STRAND:+-|AF:0.444|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.0S13|PRECISE|SVTYPE:INS|SVLEN:51|END:2659083|SUPPORT:12|COVERAGE:30:30:30:30:29|STRAND:+-|AF:0.4|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t0/1:52:10:8\t0/1:60:18:12", + "chrX\t3036626\tSniffles2.DEL.2S16\ttatatataatatatataatattttatataaaatat\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-35;END=3036661;SUPPORT=2;COVERAGE=7,7,7,7,6;STRAND=+-;AF=0.286;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.2S16|chrX;test_1_reheader_POS=Sniffles2.DEL.2S16|3036626;test_1_reheader_QUAL=Sniffles2.DEL.2S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.2S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.2S16|test_1|GT:0/1|GQ:6|DR:5|DV:2;test_1_reheader_INFO=Sniffles2.DEL.2S16|PRECISE|SVTYPE:DEL|SVLEN:-35|END:3036661|SUPPORT:2|COVERAGE:7:7:7:7:6|STRAND:+-|AF:0.286|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:6:5:2\t./.:.:.:.", + "chrX\t3037125\tSniffles2.DEL.5S16\ttataatattatatataaaatatatataatatatata\tN\t60\tPASS\tIMPRECISE;SVTYPE=DEL;SVLEN=-36;END=3037161;SUPPORT=3;COVERAGE=7,6,6,6,5;STRAND=+-;AF=0.5;STDEV_LEN=6.928;STDEV_POS=45.033;FOUND_IN=sniffles;set=test_1_reheader;FOUNDBY=1;test_1_reheader_CHROM=Sniffles2.DEL.5S16|chrX;test_1_reheader_POS=Sniffles2.DEL.5S16|3037125;test_1_reheader_QUAL=Sniffles2.DEL.5S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.5S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.5S16|test_1|GT:0/1|GQ:21|DR:3|DV:3;test_1_reheader_INFO=Sniffles2.DEL.5S16|IMPRECISE|SVTYPE:DEL|SVLEN:-36|END:3037161|SUPPORT:3|COVERAGE:7:6:6:6:5|STRAND:+-|AF:0.5|STDEV_LEN:6.928|STDEV_POS:45.033|FOUND_IN:sniffles;svdb_origin=test_1_reheader;SUPP_VEC=10\tGT:GQ:DR:DV\t0/1:21:3:3\t./.:.:.:.", + "chrX\t3080256\tSniffles2.DEL.6S16:test_1_reheader|Sniffles2.DEL.9S16:test_2_reheader\tatgaggtccggagatgcagaccatcctggccaacatg\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-37;END=3080293;SUPPORT=12;COVERAGE=12,12,12,12,12;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.9S16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.6S16|chrX;test_2_reheader_CHROM=Sniffles2.DEL.9S16|chrX;test_1_reheader_POS=Sniffles2.DEL.6S16|3080256;test_2_reheader_POS=Sniffles2.DEL.9S16|3080256;test_1_reheader_QUAL=Sniffles2.DEL.6S16|60;test_2_reheader_QUAL=Sniffles2.DEL.9S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.6S16|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.9S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.6S16|test_1|GT:1/1|GQ:33|DR:0|DV:12;test_2_reheader_SAMPLE=Sniffles2.DEL.9S16|test_2|GT:1/1|GQ:8|DR:0|DV:3;test_1_reheader_INFO=Sniffles2.DEL.6S16|PRECISE|SVTYPE:DEL|SVLEN:-37|END:3080293|SUPPORT:12|COVERAGE:12:12:12:12:12|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.9S16|PRECISE|SVTYPE:DEL|SVLEN:-37|END:3080293|SUPPORT:3|COVERAGE:3:3:3:3:3|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:33:0:12\t1/1:8:0:3", + "chrX\t9964280\tSniffles2.DEL.7S16:test_1_reheader|Sniffles2.DEL.CS16:test_2_reheader\tccttccttccttccttccttccttccttccttccttccttcctt\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-44;END=9964324;SUPPORT=19;COVERAGE=19,19,19,19,19;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;FOUND_IN=sniffles;VARID=Sniffles2.DEL.CS16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.7S16|chrX;test_2_reheader_CHROM=Sniffles2.DEL.CS16|chrX;test_1_reheader_POS=Sniffles2.DEL.7S16|9964280;test_2_reheader_POS=Sniffles2.DEL.CS16|9964280;test_1_reheader_QUAL=Sniffles2.DEL.7S16|60;test_2_reheader_QUAL=Sniffles2.DEL.CS16|60;test_1_reheader_FILTERS=Sniffles2.DEL.7S16|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.CS16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.7S16|test_1|GT:1/1|GQ:52|DR:0|DV:19;test_2_reheader_SAMPLE=Sniffles2.DEL.CS16|test_2|GT:1/1|GQ:36|DR:0|DV:13;test_1_reheader_INFO=Sniffles2.DEL.7S16|PRECISE|SVTYPE:DEL|SVLEN:-44|END:9964324|SUPPORT:19|COVERAGE:19:19:19:19:19|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.CS16|PRECISE|SVTYPE:DEL|SVLEN:-44|END:9964324|SUPPORT:13|COVERAGE:13:13:13:13:13|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:52:0:19\t1/1:36:0:13", + "chrX\t11163883\tSniffles2.INS.0S16:test_1_reheader|Sniffles2.INS.1S16:test_2_reheader\tN\tAAAGAAATCAGCAGTCGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACGAGGTCAAGAGATCGAGACCATCCCGGCTAAAACGGTGAAAACCCCGTCTCTACTAAAAATACAAAAAAATTAGCCGGGCGTAGTGGCGGGCGCCTGTAGTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCCGAGATCCCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAAAAAAAAAA\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=316;END=11163883;SUPPORT=4;COVERAGE=3,4,4,4,4;STRAND=+-;AF=1;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;VARID=Sniffles2.INS.1S16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.INS.0S16|chrX;test_2_reheader_CHROM=Sniffles2.INS.1S16|chrX;test_1_reheader_POS=Sniffles2.INS.0S16|11163883;test_2_reheader_POS=Sniffles2.INS.1S16|11163883;test_1_reheader_QUAL=Sniffles2.INS.0S16|60;test_2_reheader_QUAL=Sniffles2.INS.1S16|60;test_1_reheader_FILTERS=Sniffles2.INS.0S16|PASS;test_2_reheader_FILTERS=Sniffles2.INS.1S16|PASS;test_1_reheader_SAMPLE=Sniffles2.INS.0S16|test_1|GT:1/1|GQ:11|DR:0|DV:4;test_2_reheader_SAMPLE=Sniffles2.INS.1S16|test_2|GT:1/1|GQ:8|DR:0|DV:3;test_1_reheader_INFO=Sniffles2.INS.0S16|PRECISE|SVTYPE:INS|SVLEN:316|END:11163883|SUPPORT:4|COVERAGE:3:4:4:4:4|STRAND:+-|AF:1|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.INS.1S16|PRECISE|SVTYPE:INS|SVLEN:318|END:11163883|SUPPORT:3|COVERAGE:3:3:3:3:4|STRAND:+-|AF:1|STDEV_LEN:2.646|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:11:0:4\t1/1:8:0:3", + "chrX\t12621974\tSniffles2.DEL.9S16:test_1_reheader|Sniffles2.DEL.14S16:test_2_reheader\tgaaagaaagaaagaaagaaagaaagaaagaaagaaagaaagaaaggaaggaaggaaggaaggaaggaaggaaggaaggaaggaaggaaagaaggaaagaaagaaggaaagaagaagaaaagaggagaagagaggagaggaaaggagaggagaggagaggagaggtgaactataaaaagaaccaaacagaaatcctggagctaaagaatacaatgacaaaactaaacattttaatagcttcaacagcagactcaattatgcagaagaatcagcaaatgtgaagacaggctatttgaaattacccagttagaggaacagaaagtaaaaagaataaaaaagagtaaaggaagcatacaggtcctatgagataccatcaattgaatgaatatatgcattatgggaatattagaaggagaaaaggaaaaaaggggaaaaagcttatttaaagaaataatggctgaaacgtcctaaatcttggaagggatatggacatccagatttatacaaatcaaagggtctcaagcagaatcaatccaaagactactctaagacacattataaccaaatttttaaaagccaaacacagacatagaatattgcccctaagagatatcatttgagatatataaattacatgaaaaataatacaaaataatcaccttaatgaagctcagtgggatacaagagaacacagaccaccaagaaaaacaaaaagcaatacataaacaaaataaaaagtttaataaagaaatacaggtcaggcgtggtgattcacatttgtaattccagcactttgggaggccaaggcaggcagatggctttgagcccaaaagttcaagactagcctgggcaacatggcaaaaccccatctctacaaaaattagccagatgtggtggcccgaatctgtagtcccagcaacttgggaggctgaggtgggaggatgacttgagcccaggaggcagaggtttcagtgagccaagatcacaccactgcactgtagcctgggcaacatagccagaccctgtttcaaaaaaagaaaagaaaagaaaggaaaaaggaaaggaagtaataaggaaaggaaaaaggaaaggaagggaagggaagtgaagggaagggaagtgaagggaagggaaaggaagggaggaagaaagaaagaaagagagagagagagaaagaaagaaagagaaagaa\tN\t60\tPASS\tPRECISE;SVTYPE=DEL;SVLEN=-1191;END=12623165;SUPPORT=5;COVERAGE=7,7,6,6,6;STRAND=+-;AF=0.833;STDEV_LEN=0.577;STDEV_POS=2.309;FOUND_IN=sniffles;IMPRECISE;VARID=Sniffles2.DEL.14S16:test_2_reheader;set=Intersection;FOUNDBY=2;test_1_reheader_CHROM=Sniffles2.DEL.9S16|chrX;test_2_reheader_CHROM=Sniffles2.DEL.14S16|chrX;test_1_reheader_POS=Sniffles2.DEL.9S16|12621974;test_2_reheader_POS=Sniffles2.DEL.14S16|12622162;test_1_reheader_QUAL=Sniffles2.DEL.9S16|60;test_2_reheader_QUAL=Sniffles2.DEL.14S16|60;test_1_reheader_FILTERS=Sniffles2.DEL.9S16|PASS;test_2_reheader_FILTERS=Sniffles2.DEL.14S16|PASS;test_1_reheader_SAMPLE=Sniffles2.DEL.9S16|test_1|GT:1/1|GQ:3|DR:1|DV:5;test_2_reheader_SAMPLE=Sniffles2.DEL.14S16|test_2|GT:1/1|GQ:20|DR:1|DV:11;test_1_reheader_INFO=Sniffles2.DEL.9S16|PRECISE|SVTYPE:DEL|SVLEN:-1191|END:12623165|SUPPORT:5|COVERAGE:7:7:6:6:6|STRAND:+-|AF:0.833|STDEV_LEN:0.577|STDEV_POS:2.309|FOUND_IN:sniffles;test_2_reheader_INFO=Sniffles2.DEL.14S16|IMPRECISE|SVTYPE:DEL|SVLEN:-1187|END:12623349|SUPPORT:11|COVERAGE:13:12:12:12:12|STRAND:+-|AF:0.917|STDEV_LEN:2.582|STDEV_POS:142.789|FOUND_IN:sniffles;svdb_origin=test_1_reheader|test_2_reheader;SUPP_VEC=11\tGT:GQ:DR:DV\t1/1:3:1:5\t1/1:20:1:11", + "chrX\t14631916\tSniffles2.INS.4S16\tN\tATATGTATATGTATATATATAGACATACATATGTATATGTCTATATAGACATACATATACGTATGTCTATATAGACATACATATACGTATGTCTATATAGACATACATATATGTATGTCTATATACAAGACATATATATCTATATATACACATATACGTATATATAGACATATACGTATATGTGTATATATAGACATATACGTATATGTGTATATATAGACATATACGTATATGTGTATATATAGACATATATATGTATATGTGTAT\t60\tPASS\tPRECISE;SVTYPE=INS;SVLEN=267;END=14631916;SUPPORT=3;COVERAGE=4,4,4,2,1;STRAND=+-;AF=0.75;STDEV_LEN=0;STDEV_POS=0;SUPPORT_LONG=0;FOUND_IN=sniffles;set=test_2_reheader;FOUNDBY=1;test_2_reheader_CHROM=Sniffles2.INS.4S16|chrX;test_2_reheader_POS=Sniffles2.INS.4S16|14631916;test_2_reheader_QUAL=Sniffles2.INS.4S16|60;test_2_reheader_FILTERS=Sniffles2.INS.4S16|PASS;test_2_reheader_SAMPLE=Sniffles2.INS.4S16|test_2|GT:0/1|GQ:1|DR:1|DV:3;test_2_reheader_INFO=Sniffles2.INS.4S16|PRECISE|SVTYPE:INS|SVLEN:267|END:14631916|SUPPORT:3|COVERAGE:4:4:4:2:1|STRAND:+-|AF:0.75|STDEV_LEN:0|STDEV_POS:0|SUPPORT_LONG:0|FOUND_IN:sniffles;svdb_origin=test_2_reheader;SUPP_VEC=01\tGT:GQ:DR:DV\t./.:.:.:.\t0/1:1:1:3" + ], + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:26:28.586336982" + }, + "1 sample - [bam, bai], fasta, fai, [], bed - sniffles -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:29:17.841219039" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - severus -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:29:47.72768953" + }, + "1 sample - [bam, bai], fasta, fai, [], [] - sniffles": { + "content": [ + "7cd0730159250c8945e2007da414651e", + "46a46d863d6d0d0ac83778dfbf4e969f", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:25:50.038358587" + }, + "1 sample - [bam, bai], fasta, fai, bed, [] - severus": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]", + "d64a5438fe54c0239613976f8826897b", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=53, phased=false, phasedAutodetect=false]", + "c37e6c17e6d1ccf07c23476f13c3e5ef", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:27:21.812768584" + }, + "1 sample - [bam, bai], fasta, fai, [], bed - sniffles": { + "content": [ + "7cd0730159250c8945e2007da414651e", + "46a46d863d6d0d0ac83778dfbf4e969f", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:26:44.491561807" + }, + "2 samples - [bam, bai], fasta, fai, [], [] - severus -stub": { + "content": [ + "[test_1_reheader.vcf.gz, test_2_reheader.vcf.gz]", + [ + [ + { + "id": "test_1", + "single_end": false, + "family_id": "family" + }, + "test_1_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test_2", + "single_end": false, + "family_id": "family" + }, + "test_2_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:30:32.349238883" + }, + "1 sample - [bam, bai], fasta, fai, bed, [] - severus -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ], + "family_tbi": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "family_vcf": [ + [ + { + "id": "family" + }, + "family_svs.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "sample_tbi": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sample_vcf": [ + [ + { + "id": "test", + "single_end": false, + "family_id": "family" + }, + "test_reheader.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:30:16.946977312" + }, + "2 samples - [bam, bai], fasta, fai, [], [] - severus": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=56, phased=false, phasedAutodetect=false]", + "1294e2ab468789a0bd56e8bcaf578a4", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=71, phased=false, phasedAutodetect=false]", + "1c9a74feb498450766db003698579ded", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=2, variantCount=80, phased=false, phasedAutodetect=false]", + "bb2aa63da770c7f58eb5efa1a36101b8", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f", + "versions.yml:md5,dab46ec91d22db3eee78879773b88f1f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:28:33.091100608" + }, + "1 sample - [bam, bai], fasta, fai, bed, [] - sniffles": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=84, phased=false, phasedAutodetect=false]", + "3cb4ba0bf05ab17ef02c4b51e70e4e6e", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=83, phased=false, phasedAutodetect=false]", + "e1908dac54d273f92eb06162a574a217", + [ + "versions.yml:md5,0c2f48bb23bdcc814171177730552a0b", + "versions.yml:md5,110bc7290a8aa06aea1c1fd2bad26324", + "versions.yml:md5,589fd8607c7131f786d565deb2846f0c", + "versions.yml:md5,7090d52a64ab671fdb51c6af429628f4", + "versions.yml:md5,ad7a1d3e0b9738f34f6f4cf8c7a5a7ff", + "versions.yml:md5,cff333ea42eb748bf5dcc2c2a7d59c5f", + "versions.yml:md5,d6665112b721f1651ae340c644f9a27c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:26:07.339172165" + } +} \ No newline at end of file diff --git a/subworkflows/local/call_svs/tests/nextflow.config b/subworkflows/local/call_svs/tests/nextflow.config new file mode 100644 index 00000000..6065d7ee --- /dev/null +++ b/subworkflows/local/call_svs/tests/nextflow.config @@ -0,0 +1,33 @@ +process { + + withName: 'ADD_FOUND_IN_TAG' { + ext.args = '--no-version' + ext.args2 = [ + '--output-type b', + '--write-index=csi', + '--no-version' + ].join(' ') + } + + withName: 'CALL_SVS:SVDB_MERGE' { + ext.prefix = { "${meta.id}_svs" } + ext.args = [ + '--bnd_distance 1000', + '--overlap .5' + ].join(' ') + ext.args2 = '--no-version' + } + + withName: 'BCFTOOLS_QUERY' { + ext.args = '--list-samples' + } + + withName: 'CREATE_SAMPLES_FILE' { + ext.prefix = { "${meta.id}_samples_file" } + } + + withName: 'BCFTOOLS_REHEADER' { + ext.prefix = { "${meta.id}_reheader" } + ext.args2 = '--output-type z --write-index=tbi --no-version' + } +} diff --git a/subworkflows/local/cnv.nf b/subworkflows/local/cnv.nf deleted file mode 100644 index 5da2d417..00000000 --- a/subworkflows/local/cnv.nf +++ /dev/null @@ -1,51 +0,0 @@ -include { HIFICNV } from '../../modules/local/pacbio/hificnv' -include { TABIX_TABIX as TABIX_HIFICNV } from '../../modules/nf-core/tabix/tabix/' - -workflow CNV { - - take: - ch_bam_bai_vcf // channel: [ val(meta), [[ bam ], [bai], [vcf] ] - ch_fasta - ch_expected_xy_bed - ch_expected_xx_bed - ch_exclude_bed - - main: - ch_versions = Channel.empty() - - // Split samples if male or female - ch_bam_bai_vcf - .branch{ meta, bam, bai, vcf -> - male: meta.sex == 1 - female: meta.sex == 2 - } - .set{branched_bam} - - // Then merge male with XY-bed - branched_bam - .male - .combine(ch_expected_xy_bed) - .set {branched_bam_male} - - // And female with XX-bed - branched_bam - .female - .combine(ch_expected_xx_bed) - .set {branched_bam_female} - - // Concatenate the two channels - branched_bam_male - .concat(branched_bam_female) - .set{ ch_hificnv_in } - - // Run HiFiCNV - HIFICNV(ch_hificnv_in, ch_fasta, ch_exclude_bed) - ch_versions = ch_versions.mix(HIFICNV.out.versions) - - TABIX_HIFICNV(HIFICNV.out.vcf) - ch_versions = ch_versions.mix(TABIX_HIFICNV.out.versions) - - emit: - versions = ch_versions // channel: [ versions.yml ] -} - diff --git a/subworkflows/local/convert_input_files.nf b/subworkflows/local/convert_input_files.nf index 5c44e521..0cd46bf2 100644 --- a/subworkflows/local/convert_input_files.nf +++ b/subworkflows/local/convert_input_files.nf @@ -4,7 +4,9 @@ include { SAMTOOLS_FASTQ } from '../../modules/nf-core/samtools/fastq/main' workflow CONVERT_INPUT_FILES { take: - ch_sample // channel: [ val(meta), reads ] + ch_sample // channel: [ val(meta), reads ] + convert_bam // bool + convert_fastq // bool main: ch_versions = Channel.empty() @@ -19,15 +21,20 @@ workflow CONVERT_INPUT_FILES { ch_bam = ch_filetypes.bam ch_fastq = ch_filetypes.fastq - SAMTOOLS_FASTQ ( ch_filetypes.bam, false ) - ch_versions = ch_versions.mix(SAMTOOLS_FASTQ.out.versions) + if(convert_bam) { + SAMTOOLS_FASTQ ( ch_filetypes.bam, false ) + ch_versions = ch_versions.mix(SAMTOOLS_FASTQ.out.versions) - SAMTOOLS_IMPORT ( ch_filetypes.fastq ) - ch_versions = ch_versions.mix(SAMTOOLS_IMPORT.out.versions) + // Mix converted files back in + ch_fastq = ch_fastq.mix(SAMTOOLS_FASTQ.out.other) + } + if(convert_fastq) { + SAMTOOLS_IMPORT ( ch_filetypes.fastq ) + ch_versions = ch_versions.mix(SAMTOOLS_IMPORT.out.versions) - // Mix converted files back in - ch_bam = ch_bam.mix(SAMTOOLS_IMPORT.out.bam) - ch_fastq = ch_fastq.mix(SAMTOOLS_FASTQ.out.other) + // Mix converted files back in + ch_bam = ch_bam.mix(SAMTOOLS_IMPORT.out.bam) + } emit: bam = ch_bam // channel: [ val(meta), bam ] diff --git a/subworkflows/local/filter_variants/main.nf b/subworkflows/local/filter_variants/main.nf new file mode 100644 index 00000000..dd87ddf9 --- /dev/null +++ b/subworkflows/local/filter_variants/main.nf @@ -0,0 +1,39 @@ +include { ENSEMBLVEP_FILTERVEP } from '../../../modules/nf-core/ensemblvep/filtervep/main' +include { BCFTOOLS_VIEW } from '../../../modules/nf-core/bcftools/view/main' +include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main.nf' + +workflow FILTER_VARIANTS { + + take: + ch_vcf // channel [optional] [ val(meta), path(vcf) ] + ch_hgnc_ids // channel: [optional] [ val(meta), path(txt) ] + filter_hgnc // bool: should filter_vep be run to filter on hgnc ids + + main: + ch_versions = Channel.empty() + + if ( filter_hgnc ) { + + ENSEMBLVEP_FILTERVEP ( + ch_vcf, + ch_hgnc_ids.map { meta, file -> file } + ) + ch_versions = ch_versions.mix(ENSEMBLVEP_FILTERVEP.out.versions) + + ch_vcf = ENSEMBLVEP_FILTERVEP.out.output + } + + BCFTOOLS_VIEW ( + ch_vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + [], + [], + [] + ) + ch_versions = ch_versions.mix(BCFTOOLS_VIEW.out.versions) + + emit: + vcf = BCFTOOLS_VIEW.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = BCFTOOLS_VIEW.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] +} + diff --git a/subworkflows/local/filter_variants/tests/main.nf.test b/subworkflows/local/filter_variants/tests/main.nf.test new file mode 100644 index 00000000..692cf9ec --- /dev/null +++ b/subworkflows/local/filter_variants/tests/main.nf.test @@ -0,0 +1,150 @@ +nextflow_workflow { + + name "Test Workflow FILTER_VARIANTS" + script "../main.nf" + config "./nextflow.config" + workflow "FILTER_VARIANTS" + + setup { + run("GUNZIP") { + script "../../../../modules/nf-core/gunzip/main.nf" + process { + """ + input[0] = [ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ] + """ + } + } + run("SAMTOOLS_FAIDX") { + script "../../../../modules/nf-core/samtools/faidx/main.nf" + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = [[],[]] + """ + } + } + + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + ] + input[1] = GUNZIP.out.gunzip + input[2] = true + input[3] = 'csi' + input[4] = false + input[5] = false + """ + } + } + + run("SHORT_VARIANT_CALLING") { + script "../../short_variant_calling/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(Channel.of([ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkifexists: true) + ])) + input[1] = GUNZIP.out.gunzip + input[2] = SAMTOOLS_FAIDX.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("UNTAR") { + script "../../../../modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ id: 'vep_cache' ], + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) + ] + """ + } + } + run("SNV_ANNOTATION") { + script "../../snv_annotation/main.nf" + process { + """ + input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[1] = [ + file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) + ] + input[2] = GUNZIP.out.gunzip + input[3] = SAMTOOLS_FAIDX.out.fai + input[4] = UNTAR.out.untar.map { meta, cache -> cache} + input[5] = Channel.value('110') + input[6] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() + input[7] = false + input[8] = Channel.value([]) + input[9] = null + input[10] = null + """ + } + } + } + + test("vcf, [[],[]], false") { + + when { + workflow { + """ + input[0] = SNV_ANNOTATION.out.vcf + input[1] = Channel.of([[],[]]) + input[2] = false + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.versions, + file(workflow.out.tbi.get(0).get(1)).name, + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + } + + test("vcf, hgnc_ids, true") { + tag "hgnc" + when { + workflow { + """ + input[0] = SNV_ANNOTATION.out.vcf + input[1] = Channel.of('HGNC:4826') + .collectFile(name: 'hgnc_ids.txt') + .map { file -> [ [ id: 'hgnc_ids' ], file ] } + input[2] = true + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.versions, + file(workflow.out.tbi.get(0).get(1)).name, + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.vcf.get(0).get(1)).vcf.summary, + ).match() } + ) + } + } +} diff --git a/subworkflows/local/filter_variants/tests/main.nf.test.snap b/subworkflows/local/filter_variants/tests/main.nf.test.snap new file mode 100644 index 00000000..75153877 --- /dev/null +++ b/subworkflows/local/filter_variants/tests/main.nf.test.snap @@ -0,0 +1,33 @@ +{ + "vcf, [[],[]], false": { + "content": [ + [ + "versions.yml:md5,c6563ccec6867a29e00bdbb19abee900" + ], + "test_data.bed_filtered.vcf.gz.tbi", + "28024aed73c5c0fd09c14cf32008a335", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=80, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-06T15:09:53.145300431" + }, + "vcf, hgnc_ids, true": { + "content": [ + [ + "versions.yml:md5,24b641f905e26c567657e04d22f2e337", + "versions.yml:md5,c6563ccec6867a29e00bdbb19abee900" + ], + "test_data.bed_filtered.vcf.gz.tbi", + "77c14f11bd3af0802b1736cd87b949eb", + "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=49, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-06T16:37:39.828165612" + } +} \ No newline at end of file diff --git a/subworkflows/local/filter_variants/tests/nextflow.config b/subworkflows/local/filter_variants/tests/nextflow.config new file mode 100644 index 00000000..b9fd0da1 --- /dev/null +++ b/subworkflows/local/filter_variants/tests/nextflow.config @@ -0,0 +1,80 @@ +process { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT' { + ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } + ext.args = { [ + '--model_type PACBIO', + "--sample_name=${meta.id}", + '-vcf_stats_report=False' + ].join(' ') } + } + + withName: 'SHORT_VARIANT_CALLING:GLNEXUS' { + ext.args = '--config DeepVariant_unfiltered' + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { + ext.prefix = { "${meta.id}_concat" } + ext.args = [ + '--no-version', + '--allow-overlaps' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_MULTISAMPLE' { + ext.prefix = { "${meta.id}_norm_multisample" } + ext.args = [ + '--no-version', + '-m -', + '--output-type u', + '--write-index=csi', + '-w 10000' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { + ext.prefix = { "${meta.id}_norm_singlesample" } + ext.args = [ + '--no-version', + '-m -', + '-w 10000', + '--output-type u', + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + ext.prefix = { "${meta.id}_ac" } + ext.args = [ + '--no-version', + '--output-type u' + ].join(' ') + } + + withName: 'SNV_ANNOTATION:BCFTOOLS_FILLTAGS_ANNO' { + ext.prefix = { "${meta.id}_filltags_anno" } + ext.args = [ + '--no-version', + '--output-type z' + ].join(' ') + } + + withName: 'UNTAR' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'SNV_ANNOTATION:ENSEMBLVEP_SNV' { + ext.args = { [ + '--offline', + '--vcf', + '--compress_output bgzip' + ].join(' ') } + } + + withName: 'FILTER_VARIANTS:ENSEMBLVEP_FILTERVEP' { + ext.args = { "--filter \"HGNC_ID in ${feature_file}\"" } + } + + withName: 'FILTER_VARIANTS:BCFTOOLS_VIEW' { + ext.prefix = { "${meta.id}_filtered" } + ext.args = '-e "INFO/AQ>60" --no-version --output-type z --write-index=tbi' + } +} diff --git a/subworkflows/local/genome_assembly.nf b/subworkflows/local/genome_assembly.nf index 650af99f..2eebc358 100644 --- a/subworkflows/local/genome_assembly.nf +++ b/subworkflows/local/genome_assembly.nf @@ -13,17 +13,15 @@ workflow ASSEMBLY { main: ch_versions = Channel.empty() + ch_hifiasm_empty = Channel.value([ [], [], [] ]) if(params.hifiasm_mode == 'hifi-only') { ch_reads .groupTuple() - .map{ meta, reads -> - [ meta, reads, [], [] ] - } .set { hifiasm_in } - HIFIASM ( hifiasm_in, [], [] ) + HIFIASM ( hifiasm_in, ch_hifiasm_empty, ch_hifiasm_empty ) ch_versions = ch_versions.mix(HIFIASM.out.versions) } else if(params.hifiasm_mode == 'trio-binning') { @@ -98,7 +96,13 @@ workflow ASSEMBLY { hifiasm_trio_in = all_kid_reads.join(paternal_yak_or_empty).join(maternal_yak_or_empty) - HIFIASM ( hifiasm_trio_in, [], [] ) + hifiasm_trio_in + .multiMap { meta, reads, paternal_yak, maternal_yak -> + reads : [meta, reads ] + yak : [meta, paternal_yak, maternal_yak] + } + .set { ch_hifiasm_in } + HIFIASM ( ch_hifiasm_in.reads, ch_hifiasm_in.yak, ch_hifiasm_empty ) ch_versions = ch_versions.mix(HIFIASM.out.versions) } diff --git a/subworkflows/local/methylation.nf b/subworkflows/local/methylation.nf deleted file mode 100644 index 6541a9f4..00000000 --- a/subworkflows/local/methylation.nf +++ /dev/null @@ -1,38 +0,0 @@ -include { MODKIT_PILEUP as MODKIT_PILEUP_UNPHASED } from '../../modules/nf-core/modkit/pileup/main' -include { MODKIT_PILEUP as MODKIT_PILEUP_PHASED } from '../../modules/nf-core/modkit/pileup/main' -include { TABIX_BGZIPTABIX as BGZIP_MODKIT_PILEUP_UNPHASED } from '../../modules/nf-core/tabix/bgziptabix/main' -include { TABIX_BGZIPTABIX as BGZIP_MODKIT_PILEUP_PHASED } from '../../modules/nf-core/tabix/bgziptabix/main' - -workflow METHYLATION { - - take: - ch_haplotagged_bam_bai // channel: [ val(meta), bam, bai ] - ch_fasta // channel: [ val(meta), fasta ] - ch_fai // channel: [ val(meta), fai ] - ch_bed // channel: [ val(meta), bed ] - - main: - ch_versions = Channel.empty() - - // Run modkit pileup once without dividing by HP-tag and once with - MODKIT_PILEUP_UNPHASED (ch_haplotagged_bam_bai, ch_fasta, ch_bed) - ch_versions = ch_versions.mix(MODKIT_PILEUP_UNPHASED.out.versions) - - MODKIT_PILEUP_PHASED (ch_haplotagged_bam_bai, ch_fasta, ch_bed) - ch_versions = ch_versions.mix(MODKIT_PILEUP_PHASED.out.versions) - - // Bgzip and index output "BED" - BGZIP_MODKIT_PILEUP_UNPHASED ( MODKIT_PILEUP_UNPHASED.out.bed ) - ch_versions = ch_versions.mix(BGZIP_MODKIT_PILEUP_UNPHASED.out.versions) - - MODKIT_PILEUP_PHASED.out.bed - .transpose() - .set { ch_bgzip_modkit_pileup_phased_in } - - BGZIP_MODKIT_PILEUP_PHASED ( ch_bgzip_modkit_pileup_phased_in ) - ch_versions = ch_versions.mix(BGZIP_MODKIT_PILEUP_PHASED.out.versions) - - emit: - versions = ch_versions // channel: [ versions.yml ] -} - diff --git a/subworkflows/local/methylation/main.nf b/subworkflows/local/methylation/main.nf new file mode 100644 index 00000000..261af3f1 --- /dev/null +++ b/subworkflows/local/methylation/main.nf @@ -0,0 +1,32 @@ +include { MODKIT_PILEUP } from '../../../modules/nf-core/modkit/pileup/main' +include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/main' + +workflow METHYLATION { + + take: + ch_bam_bai // channel: [ val(meta), bam, bai ] + ch_fasta // channel: [ val(meta), fasta ] + ch_fai // channel: [ val(meta), fai ] + ch_bed // channel: [ val(meta), bed ] + + main: + ch_versions = Channel.empty() + + // Performs pileups per haplotype if the phasing workflow is on, set in config + MODKIT_PILEUP (ch_bam_bai, ch_fasta, ch_bed) + ch_versions = ch_versions.mix(MODKIT_PILEUP.out.versions) + + + MODKIT_PILEUP.out.bed + .transpose() + .set { ch_bgzip_modkit_pileup_in } + + TABIX_BGZIPTABIX ( ch_bgzip_modkit_pileup_in ) + ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) + + emit: + bed = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, bed, tbi -> [ meta, bed ] } // channel: [ val(meta), path(bed) ] + tbi = TABIX_BGZIPTABIX.out.gz_tbi.map { meta, bed, tbi -> [ meta, tbi ] } // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ versions.yml ] +} + diff --git a/subworkflows/local/methylation/tests/main.nf.test b/subworkflows/local/methylation/tests/main.nf.test new file mode 100644 index 00000000..4b72ed1c --- /dev/null +++ b/subworkflows/local/methylation/tests/main.nf.test @@ -0,0 +1,261 @@ +nextflow_workflow { + + name "Test Workflow METHYLATION" + script "../main.nf" + config "./nextflow.config" + workflow "METHYLATION" + + setup { + run("PREPARE_GENOME") { + script "../../prepare_genome.nf" + process { + """ + input[0] = Channel.of([ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ]) + input[1] = Channel.empty() + input[2] = true + input[3] = false + """ + } + } + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + ] + input[1] = PREPARE_GENOME.out.fasta + input[2] = true + input[3] = 'csi' + input[4] = false + input[5] = false + """ + } + } + run("SHORT_VARIANT_CALLING") { + script "../../short_variant_calling/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(Channel.of([ + [ id: 'test', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) + ])) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("PHASING") { + script "../../phasing.nf" + process { + """ + input[0] = SHORT_VARIANT_CALLING.out.snp_calls_vcf + input[1] = SHORT_VARIANT_CALLING.out.snp_calls_tbi + input[2] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .map { meta, bam, bai -> + [ [ id : meta.id ], bam, bai ] + } + input[3] = PREPARE_GENOME.out.fasta + input[4] = PREPARE_GENOME.out.fai + """ + } + } + } + + test("1 sample - [] phased") { + when { + params { + skip_phasing = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [] unphased") { + when { + params { + skip_phasing = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed phased") { + when { + params { + skip_phasing = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed unphased") { + when { + params { + skip_phasing = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [] phased - stub") { + options "-stub" + when { + params { + skip_phasing = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed phased - stub") { + options "-stub" + when { + params { + skip_phasing = false + } + workflow { + """ + input[0] = PHASING.out.haplotagged_bam_bai + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - [] unphased - stub") { + options "-stub" + when { + params { + skip_phasing = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("1 sample - bed unphased - stub") { + options "-stub" + when { + params { + skip_phasing = true + } + workflow { + """ + input[0] = MINIMAP2_ALIGN.out.bam.join(MINIMAP2_ALIGN.out.index) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = Channel.of('chr20\t2650000\t2660000') + .collectFile(name: 'chr20.bed', newLine: true) + .map{ file -> [ [ id:'chr20'], file ] } + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/local/methylation/tests/main.nf.test.snap b/subworkflows/local/methylation/tests/main.nf.test.snap new file mode 100644 index 00000000..a96efcdf --- /dev/null +++ b/subworkflows/local/methylation/tests/main.nf.test.snap @@ -0,0 +1,504 @@ +{ + "1 sample - [] phased": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,b980e56ca6d65d09892b069a7d51b827" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz:md5,32a5e2148266fefba8159d98f5f5dd87" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,bfeda9731d6d52508301ddf939302676" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,45800db86a2845fe961f536484369f61" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz.tbi:md5,14f729ebf5ce7d265df85b21c30a67af" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,d08da21ae562fcc3c3361a916439c552" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,b980e56ca6d65d09892b069a7d51b827" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz:md5,32a5e2148266fefba8159d98f5f5dd87" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,bfeda9731d6d52508301ddf939302676" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,45800db86a2845fe961f536484369f61" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_2.bed.gz.tbi:md5,14f729ebf5ce7d265df85b21c30a67af" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,d08da21ae562fcc3c3361a916439c552" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:42:19.164909715" + }, + "1 sample - bed unphased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:06:21.337874852" + }, + "1 sample - [] unphased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:05:51.048367417" + }, + "1 sample - [] phased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:32:25.389277494" + }, + "1 sample - [] unphased": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,d3252e8b77241fe25edbcfd520b86159" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d34b6e7ed5a3010fba35ea9b58672dfd" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,d3252e8b77241fe25edbcfd520b86159" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,d34b6e7ed5a3010fba35ea9b58672dfd" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:43:20.61904287" + }, + "1 sample - bed phased": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,a0d9e7dd172fcbd0bbb19690b3570a3d" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,59353caa892772acc71cbdef07cca17d" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,1b46636405409529be7df321af87acd2" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,600db7bbfb1580cc2af629324e206045" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz:md5,a0d9e7dd172fcbd0bbb19690b3570a3d" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz:md5,59353caa892772acc71cbdef07cca17d" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup_1.bed.gz.tbi:md5,1b46636405409529be7df321af87acd2" + ], + [ + { + "id": "test" + }, + "test_modkit_pileup_ungrouped.bed.gz.tbi:md5,600db7bbfb1580cc2af629324e206045" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:44:23.18659219" + }, + "1 sample - bed phased - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_modkit_pileup.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-31T15:32:58.055229101" + }, + "1 sample - bed unphased": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,1bd6be90eb9c11b4cc9fa43dea4160ac" + ] + ], + "1": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,1983a3dfe9722ff9213cddcf6772d461" + ] + ], + "2": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ], + "bed": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz:md5,1bd6be90eb9c11b4cc9fa43dea4160ac" + ] + ], + "tbi": [ + [ + { + "id": "test", + "num_intervals": 1 + }, + "test_modkit_pileup.bed.gz.tbi:md5,1983a3dfe9722ff9213cddcf6772d461" + ] + ], + "versions": [ + "versions.yml:md5,69dd5e76cc5e61cd0324b7412fc0546b", + "versions.yml:md5,dc8e3f1d4b20b910f5148d89337e5711" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-01T16:45:25.026984417" + } +} \ No newline at end of file diff --git a/subworkflows/local/methylation/tests/nextflow.config b/subworkflows/local/methylation/tests/nextflow.config new file mode 100644 index 00000000..1152c16d --- /dev/null +++ b/subworkflows/local/methylation/tests/nextflow.config @@ -0,0 +1,75 @@ +params { + preset = "pacbio" + phaser = "longphase" +} + +process { + + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { + ext.args = { [ + '--model_type PACBIO', + "--sample_name=${meta.id}", + '-vcf_stats_report=False' + ].join(' ') } + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { + ext.prefix = { "${meta.id}_concat" } + ext.args = [ + '--no-version', + '--allow-overlaps' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { + ext.prefix = { "${meta.id}_norm_singlesample" } + ext.args = [ + '--no-version', + '-m -', + '-w 10000', + '--output-type z', + '--write-index=tbi', + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + ext.prefix = { "${meta.id}_ac" } + ext.args = [ + '--no-version', + '--output-type u' + ].join(' ') + } + + withName: 'MINIMAP2_ALIGN' { + ext.args = [ + '-x map-hifi', + '-y' + ].join(' ') + } + + withName: 'METHYLATION:MODKIT_PILEUP' { + ext.args = { [ + '--combine-mods', + '--cpg', + '--combine-strands', + !params.skip_phasing ? '--partition-tag HP' : '', + ].join(' ') } + ext.prefix = { "${meta.id}_modkit_pileup" } + } + + withName: 'METHYLATION:TABIX_BGZIPTABIX' { + ext.prefix = { "${input.simpleName}" } + } + withName: 'PHASING:LONGPHASE_PHASE' { + ext.prefix = { "${meta.id}_phased" } + ext.args = [ + '--pb', + '--indels' + ].join(' ') + } + + withName: 'PHASING:LONGPHASE_HAPLOTAG' { + ext.prefix = { "${meta.id}_haplotagged" } + } + +} diff --git a/subworkflows/local/phasing.nf b/subworkflows/local/phasing.nf index fb87a27b..4d3757ff 100644 --- a/subworkflows/local/phasing.nf +++ b/subworkflows/local/phasing.nf @@ -1,126 +1,138 @@ -include { BCFTOOLS_FILLFROMFASTA } from '../../modules/local/bcftools/fillfromfasta/main' -include { BCFTOOLS_REHEADER } from '../../modules/nf-core/bcftools/reheader/main' -include { CRAMINO as CRAMINO_PHASED } from '../../modules/local/cramino' -include { HIPHASE as HIPHASE_SNV } from '../../modules/local/hiphase/main' -include { HIPHASE as HIPHASE_SV } from '../../modules/local/hiphase/main' -include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_WHATSHAP } from '../../modules/nf-core/samtools/index/main' -include { TABIX_BGZIPTABIX } from '../../modules/nf-core/tabix/bgziptabix/main' -include { TABIX_TABIX } from '../../modules/nf-core/tabix/tabix/main' -include { WHATSHAP_HAPLOTAG } from '../../modules/local/whatshap/haplotag/main' -include { WHATSHAP_PHASE } from '../../modules/local/whatshap/phase/main' -include { WHATSHAP_STATS } from '../../modules/local/whatshap/stats/main' +include { CRAMINO as CRAMINO_PHASED } from '../../modules/local/cramino' +include { HIPHASE } from '../../modules/local/hiphase/main' +include { LONGPHASE_HAPLOTAG } from '../../modules/nf-core/longphase/haplotag/main' +include { LONGPHASE_PHASE } from '../../modules/nf-core/longphase/phase/main' +include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_LONGPHASE } from '../../modules/nf-core/samtools/index/main' +include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_WHATSHAP } from '../../modules/nf-core/samtools/index/main' +include { TABIX_TABIX as TABIX_LONGPHASE_PHASE } from '../../modules/nf-core/tabix/tabix/main' +include { WHATSHAP_HAPLOTAG } from '../../modules/local/whatshap/haplotag/main' +include { WHATSHAP_PHASE } from '../../modules/local/whatshap/phase/main' +include { WHATSHAP_STATS } from '../../modules/local/whatshap/stats/main' workflow PHASING { take: - ch_vcf // channel: [ val(meta), vcf ] - ch_sv_vcf // channel: [ val(meta), vcf ] - ch_bam_bai // channel: [ val(meta), bam, bai ] - fasta // channel: [ val(meta), fasta ] - fai // channel: [ val(meta), fai ] + ch_vcf // channel: [ val(meta), path(vcf) ] + ch_vcf_index // channel: [ val(meta), path(tbi) ] + ch_bam_bai // channel: [ val(meta), path(bam), path(bai) ] + fasta // channel: [ val(meta), path(fasta) ] + fai // channel: [ val(meta), path(fai) ] main: - ch_versions = Channel.empty() - ch_bam_bai_haplotagged = Channel.empty() - ch_vcf_index = Channel.empty() - - TABIX_TABIX(ch_vcf) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) - - if (params.phaser.equals("whatshap")) { - - WHATSHAP_PHASE( ch_vcf.join(ch_bam_bai), fasta, fai ) - ch_versions = ch_versions.mix(WHATSHAP_PHASE.out.versions) - - WHATSHAP_PHASE.out.vcf_tbi - .join(ch_bam_bai) - .set { ch_whatshap_haplotag_in } - - WHATSHAP_HAPLOTAG(ch_whatshap_haplotag_in, fasta, fai) - ch_versions = ch_versions.mix(WHATSHAP_HAPLOTAG.out.versions) - - SAMTOOLS_INDEX_WHATSHAP( WHATSHAP_HAPLOTAG.out.bam ) - ch_versions = ch_versions.mix(SAMTOOLS_INDEX_WHATSHAP.out.versions) - - WHATSHAP_HAPLOTAG - .out.bam - .join(SAMTOOLS_INDEX_WHATSHAP.out.bai) - .set { ch_bam_bai_haplotagged } - - ch_vcf_index = ch_vcf_index.mix( WHATSHAP_PHASE.out.vcf_tbi ) - - } else if (params.phaser.equals("hiphase_snv")) { - ch_vcf - .join(TABIX_TABIX.out.csi) - .join(ch_bam_bai) - .set { ch_hiphase_snv_in } - - HIPHASE_SNV( ch_hiphase_snv_in, fasta, fai, true ) - ch_versions = ch_versions.mix(HIPHASE_SNV.out.versions) - - HIPHASE_SNV.out.bams - .join(HIPHASE_SNV.out.bais) - .set { ch_bam_bai_haplotagged } - - ch_vcf_index = ch_vcf_index.mix( HIPHASE_SNV.out.vcfs.join(HIPHASE_SNV.out.vcfs_tbi) ) - - } else if (params.phaser.equals("hiphase_sv")) { - // Sniffles specific... - BCFTOOLS_REHEADER( - ch_sv_vcf - .map { meta, vcf -> [meta, vcf, [], []] }, - [[],[]] - ) - ch_versions = ch_versions.mix(BCFTOOLS_REHEADER.out.versions) - - // Might be that newer versions of HiPhase ignores certain SVs - // if BCFTOOLS_FILLFROMFASTA is not run, instead of craching - BCFTOOLS_FILLFROMFASTA(BCFTOOLS_REHEADER.out.vcf, fasta) - ch_versions = ch_versions.mix(BCFTOOLS_FILLFROMFASTA.out.versions) - - TABIX_BGZIPTABIX(BCFTOOLS_FILLFROMFASTA.out.vcf) - ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) - - TABIX_BGZIPTABIX.out.gz_tbi - .map { meta, gz, tbi -> [ meta, gz ] } - .set { ch_sv_vcf } - - TABIX_BGZIPTABIX.out.gz_tbi - .map { meta, gz, tbi -> [ meta, tbi ] } - .set { ch_sv_tbi } - - ch_vcf - .concat(ch_sv_vcf) - .groupTuple() - .set { ch_hiphase_vcf } - - TABIX_TABIX.out.csi - .concat(ch_sv_tbi) - .groupTuple() - .set { ch_hiphase_tbi } - - ch_hiphase_vcf - .join(ch_hiphase_tbi) - .join(ch_bam_bai) - .set { ch_hiphase_in } - - HIPHASE_SV( ch_hiphase_in, fasta, fai, true ) - ch_versions = ch_versions.mix(HIPHASE_SV.out.versions) - - HIPHASE_SV.out.bams - .join(HIPHASE_SV.out.bais) - .set { ch_bam_bai_haplotagged } - - ch_vcf_index = ch_vcf_index.mix( HIPHASE_SV.out.vcfs.join(HIPHASE_SV.out.vcfs_tbi) ) - } - - WHATSHAP_STATS( ch_vcf_index ) - ch_versions = ch_versions.mix(WHATSHAP_STATS.out.versions) - - CRAMINO_PHASED( ch_bam_bai_haplotagged ) - ch_versions = ch_versions.mix(CRAMINO_PHASED.out.versions) + ch_versions = Channel.empty() + + // Phase variants and haplotag reads with Longphase + if (params.phaser.equals("longphase")) { + + ch_bam_bai + .join( ch_vcf ) + .map { meta, bam, bai, snvs -> [ meta, bam, bai, snvs, [], [] ] } + .set { ch_longphase_phase_in } + + LONGPHASE_PHASE ( + ch_longphase_phase_in, + fasta, + fai + ) + ch_versions = ch_versions.mix(LONGPHASE_PHASE.out.versions) + + TABIX_LONGPHASE_PHASE ( + LONGPHASE_PHASE.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_LONGPHASE_PHASE.out.versions) + + LONGPHASE_PHASE.out.vcf + .join( TABIX_LONGPHASE_PHASE.out.tbi ) + .set { ch_phased_vcf_index } + + ch_bam_bai + .join( LONGPHASE_PHASE.out.vcf ) + .map { meta, bam, bai, vcf -> [ meta, bam, bai, vcf, [], [] ] } + .set { ch_longphase_haplotag_in } + + LONGPHASE_HAPLOTAG ( + ch_longphase_haplotag_in, + fasta, + fai + ) + ch_versions = ch_versions.mix(LONGPHASE_HAPLOTAG.out.versions) + + SAMTOOLS_INDEX_LONGPHASE ( + LONGPHASE_HAPLOTAG.out.bam + ) + ch_versions = ch_versions.mix(SAMTOOLS_INDEX_LONGPHASE.out.versions) + + LONGPHASE_HAPLOTAG.out.bam + .join( SAMTOOLS_INDEX_LONGPHASE.out.bai ) + .set { ch_bam_bai_haplotagged } + + // Phase variants and haplotag reads with whatshap + } else if (params.phaser.equals("whatshap")) { + + WHATSHAP_PHASE( + ch_vcf.join( ch_bam_bai ), + fasta, + fai + ) + ch_versions = ch_versions.mix(WHATSHAP_PHASE.out.versions) + + WHATSHAP_PHASE.out.vcf_tbi + .join( ch_bam_bai ) + .set { ch_whatshap_haplotag_in } + + WHATSHAP_HAPLOTAG ( + ch_whatshap_haplotag_in, + fasta, + fai + ) + ch_versions = ch_versions.mix(WHATSHAP_HAPLOTAG.out.versions) + + SAMTOOLS_INDEX_WHATSHAP ( + WHATSHAP_HAPLOTAG.out.bam + ) + ch_versions = ch_versions.mix(SAMTOOLS_INDEX_WHATSHAP.out.versions) + + WHATSHAP_HAPLOTAG.out.bam + .join( SAMTOOLS_INDEX_WHATSHAP.out.bai ) + .set { ch_bam_bai_haplotagged } + + WHATSHAP_PHASE.out.vcf_tbi + .set { ch_phased_vcf_index } + + // Phase variants and haplotag reads with HiPhase + } else if (params.phaser.equals("hiphase")) { + ch_vcf + .join( ch_vcf_index ) + .join( ch_bam_bai ) + .set { ch_hiphase_snv_in } + + HIPHASE ( + ch_hiphase_snv_in, + fasta, + fai, + true + ) + ch_versions = ch_versions.mix(HIPHASE.out.versions) + + HIPHASE.out.bams + .join( HIPHASE.out.bais ) + .set { ch_bam_bai_haplotagged } + + HIPHASE.out.vcfs + .join( HIPHASE.out.vcfs_tbi ) + .set { ch_phased_vcf_index } + + } + + // Phasing stats + WHATSHAP_STATS ( ch_phased_vcf_index ) + ch_versions = ch_versions.mix(WHATSHAP_STATS.out.versions) + + // Phasing QC + CRAMINO_PHASED ( ch_bam_bai_haplotagged ) + ch_versions = ch_versions.mix(CRAMINO_PHASED.out.versions) emit: - haplotagged_bam_bai = ch_bam_bai_haplotagged // channel: [ val(meta), bam, bai ] - stats = WHATSHAP_STATS.out.stats // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + haplotagged_bam_bai = ch_bam_bai_haplotagged // channel: [ val(meta), path(bam), path(bai) ] + stats = WHATSHAP_STATS.out.stats // channel: [ val(meta), path(txt) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 1babff3b..31d88952 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -6,8 +6,10 @@ include { UNTAR as UNTAR_VEP_CACHE } from '../../modules/nf-core/untar/main' workflow PREPARE_GENOME { take: - fasta_in // channel: [mandatory] [ val(meta), path(fasta) ] - ch_vep_cache // channel: [optional] [ path(cache) ] + fasta_in // channel: [ val(meta), path(fasta) ] + ch_vep_cache // channel: [ val(meta), path(cache) ] + gunzip_fasta // boolean: should we gunzip fasta + untar_vep_cache // boolean: should we untar vep cache main: ch_versions = Channel.empty() @@ -16,16 +18,15 @@ workflow PREPARE_GENOME { fasta_file = fasta_in.map{meta, file -> file} // Will not catch cases where fasta is bgzipped - if ( params.fasta.endsWith('.gz') ) { - GUNZIP_FASTA(fasta_in) + if ( gunzip_fasta ) { + GUNZIP_FASTA ( fasta_in ) .gunzip .collect() - .set{ch_fasta} - + .set { ch_fasta } ch_versions = ch_versions.mix(GUNZIP_FASTA.out.versions.first()) } else { fasta_in - .set{ch_fasta} + .set { ch_fasta } } SAMTOOLS_FAIDX ( ch_fasta, [[],[]] ) @@ -34,18 +35,15 @@ workflow PREPARE_GENOME { MINIMAP2_INDEX ( ch_fasta ) ch_versions = ch_versions.mix(MINIMAP2_INDEX.out.versions) - UNTAR_VEP_CACHE (ch_vep_cache) - ch_versions = ch_versions.mix(UNTAR_VEP_CACHE.out.versions) - - UNTAR_VEP_CACHE.out.untar - .map { meta, files -> [files] } - .collect() - .set { untarred_vep } + if (untar_vep_cache) { + UNTAR_VEP_CACHE (ch_vep_cache) + ch_versions = ch_versions.mix(UNTAR_VEP_CACHE.out.versions) + } emit: - mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] - fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] - fasta = ch_fasta // channel: [ val(meta), path(fasta) ] - vep_resources = untarred_vep // channel: [ path(cache) ] - versions = ch_versions // channel: [ versions.yml ] + mmi = MINIMAP2_INDEX.out.index.collect() // channel: [ val(meta), path(mmi) ] + fai = SAMTOOLS_FAIDX.out.fai.collect() // channel: [ val(meta), path(fai) ] + fasta = ch_fasta // channel: [ val(meta), path(fasta) ] + vep_resources = untar_vep_cache ? UNTAR_VEP_CACHE.out.untar.collect() : ch_vep_cache // channel: [ val(meta), path(cache) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/qc_aligned_reads.nf b/subworkflows/local/qc_aligned_reads.nf index 2176f807..a7ec0c37 100644 --- a/subworkflows/local/qc_aligned_reads.nf +++ b/subworkflows/local/qc_aligned_reads.nf @@ -1,4 +1,5 @@ include { CRAMINO } from '../../modules/local/cramino' +include { FASTQC } from '../../modules/nf-core/fastqc/main' include { MOSDEPTH } from '../../modules/nf-core/mosdepth/main.nf' workflow QC_ALIGNED_READS { @@ -11,6 +12,9 @@ workflow QC_ALIGNED_READS { main: ch_versions = Channel.empty() + FASTQC ( ch_bam_bai.map { meta, bam, bai -> [ meta, bam ] } ) + ch_versions = ch_versions.mix(FASTQC.out.versions) + CRAMINO (ch_bam_bai) ch_versions = ch_versions.mix(CRAMINO.out.versions) @@ -22,6 +26,7 @@ workflow QC_ALIGNED_READS { ch_versions = ch_versions.mix(MOSDEPTH.out.versions) emit: + fastqc_zip = FASTQC.out.zip // channel: [ val(meta), path(zip) ] mosdepth_summary = MOSDEPTH.out.summary_txt // channel: [ val(meta), path(txt) ] mosdepth_global_dist = MOSDEPTH.out.global_txt // channel: [ val(meta), path(txt) ] mosdepth_region_dist = MOSDEPTH.out.regions_txt // channel: [ val(meta), path(txt) ] diff --git a/subworkflows/local/rank_variants/main.nf b/subworkflows/local/rank_variants/main.nf index c6820e14..97f00869 100644 --- a/subworkflows/local/rank_variants/main.nf +++ b/subworkflows/local/rank_variants/main.nf @@ -7,46 +7,49 @@ include { GENMOD_MODELS } from '../../../modules/nf-core/genmod/models/main' include { GENMOD_SCORE } from '../../../modules/nf-core/genmod/score/main' include { GENMOD_COMPOUND } from '../../../modules/nf-core/genmod/compound/main' include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' -include { TABIX_BGZIP } from '../../../modules/nf-core/tabix/bgzip/main' -include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' workflow RANK_VARIANTS { take: - ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] - ch_pedfile // channel: [mandatory] [ path(ped) ] - ch_reduced_penetrance // channel: [mandatory] [ path(pentrance) ] - ch_score_config // channel: [mandatory] [ path(ini) ] + ch_vcf // channel: [mandatory] [ val(meta), path(vcf) ] + ch_ped // channel: [mandatory] [ val(meta), path(ped) ] + ch_genmod_reduced_penetrance // channel: [mandatory] [ val(meta), path(pentrance) ] + ch_score_config // channel: [mandatory] [ val(meta), path(ini) ] main: - ch_versions = Channel.empty() + ch_versions = Channel.empty() - GENMOD_ANNOTATE(ch_vcf) + GENMOD_ANNOTATE ( ch_vcf ) + ch_versions = ch_versions.mix(GENMOD_ANNOTATE.out.versions) - GENMOD_MODELS(GENMOD_ANNOTATE.out.vcf, ch_pedfile, ch_reduced_penetrance) + GENMOD_ANNOTATE.out.vcf + .join( ch_ped, failOnMismatch: true ) + .set { genmod_models_in } - GENMOD_SCORE(GENMOD_MODELS.out.vcf, ch_pedfile, ch_score_config) + GENMOD_MODELS ( + genmod_models_in, + ch_genmod_reduced_penetrance.map { meta, file -> file } + ) + ch_versions = ch_versions.mix(GENMOD_MODELS.out.versions) - GENMOD_COMPOUND(GENMOD_SCORE.out.vcf) + GENMOD_MODELS.out.vcf + .join( ch_ped, failOnMismatch: true ) + .set { genmod_score_in } - BCFTOOLS_SORT(GENMOD_COMPOUND.out.vcf) // SV file needs to be sorted before indexing + GENMOD_SCORE ( + genmod_score_in, + ch_score_config.map { meta, file -> file } + ) + ch_versions = ch_versions.mix(GENMOD_SCORE.out.versions) - TABIX_BGZIP(GENMOD_COMPOUND.out.vcf) //run only for SNVs + GENMOD_COMPOUND ( GENMOD_SCORE.out.vcf ) + ch_versions = ch_versions.mix(GENMOD_COMPOUND.out.versions) - ch_vcf = TABIX_BGZIP.out.output.mix(BCFTOOLS_SORT.out.vcf) - - TABIX_TABIX (ch_vcf) - - ch_versions = ch_versions.mix(GENMOD_ANNOTATE.out.versions) - ch_versions = ch_versions.mix(GENMOD_MODELS.out.versions) - ch_versions = ch_versions.mix(GENMOD_SCORE.out.versions) - ch_versions = ch_versions.mix(GENMOD_COMPOUND.out.versions) - ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) - ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) + BCFTOOLS_SORT ( GENMOD_COMPOUND.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) emit: - vcf = ch_vcf // channel: [ val(meta), path(vcf) ] - tbi = TABIX_TABIX.out.tbi // channel: [ val(meta), path(tbi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + vcf = BCFTOOLS_SORT.out.vcf // channel: [ val(meta), path(vcf) ] + tbi = BCFTOOLS_SORT.out.tbi // channel: [ val(meta), path(tbi) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/rank_variants/tests/main.nf.test b/subworkflows/local/rank_variants/tests/main.nf.test new file mode 100644 index 00000000..f87e18b0 --- /dev/null +++ b/subworkflows/local/rank_variants/tests/main.nf.test @@ -0,0 +1,167 @@ +nextflow_workflow { + + name "Test Workflow RANK_VARIANTS" + script "../main.nf" + config "./nextflow.config" + workflow "RANK_VARIANTS" + + setup { + run("PREPARE_GENOME") { + script "../../prepare_genome.nf" + process { + """ + input[0] = Channel.of([ + [ id:'hg38' ], + file(params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz', checkIfExists: true) + ]) + input[1] = [ + [ id: 'vep_cache' ], + file(params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz', checkIfExists:true) + ] + input[2] = true + input[3] = true + """ + } + } + run("MINIMAP2_ALIGN") { + script "../../../../modules/nf-core/minimap2/align/main.nf" + process { + """ + input[0] = [ + [ id: 'project', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'testdata/HG002_PacBio_Revio.fastq.gz', checkIfExists: true) + ] + input[1] = PREPARE_GENOME.out.fasta + input[2] = true + input[3] = 'csi' + input[4] = false + input[5] = false + """ + } + } + run("SHORT_VARIANT_CALLING") { + script "../../short_variant_calling/main.nf" + process { + """ + input[0] = MINIMAP2_ALIGN.out.bam + .join(MINIMAP2_ALIGN.out.index) + .join(Channel.of([ + [ id: 'project', num_intervals:1 ], + file(params.pipelines_testdata_base_path + 'reference/test_data.bed', checkIfExists: true) + ])) + input[1] = PREPARE_GENOME.out.fasta + input[2] = PREPARE_GENOME.out.fai + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("SNV_ANNOTATION") { + script "../../snv_annotation/main.nf" + process { + """ + input[0] = SHORT_VARIANT_CALLING.out.family_bcf + input[1] = [ + file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) + ] + input[2] = PREPARE_GENOME.out.fasta + input[3] = PREPARE_GENOME.out.fai + input[4] = PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache } + input[5] = Channel.value('110') + input[6] = Channel.of([ + file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() + input[7] = false + input[8] = Channel.value([]) + input[9] = null + input[10] = null + """ + } + } + run("ANNOTATE_CSQ_PLI") { + script "../../../../subworkflows/local/annotate_consequence_pli.nf" + process { + """ + input[0] = SNV_ANNOTATION.out.vcf + input[1] = [ + [ id: 'variant_consequences' ], + [ file(params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt', checkIfExists: true) ] + ] + """ + } + } + run("CREATE_PEDIGREE_FILE") { + script "../../../../modules/local/create_pedigree_file/main.nf" + process { + """ + input[0] = [ + [id:'project'], + [ + [ id: 'project', project: 'project', maternal_id: '0', paternal_id: '0', family_id: 'family', sex: '2', phenotype: '2' ] + ] + ] + """ + } + } + } + + test("1 sample") { + + when { + workflow { + """ + input[0] = ANNOTATE_CSQ_PLI.out.vcf.map { meta, vcf -> [ [ id: 'test' ], vcf ] } + input[1] = CREATE_PEDIGREE_FILE.out.ped.map { meta, ped -> [ [ id: 'test' ], ped ] } + input[2] = Channel.of([ + [ id: 'genmod_reduced_penetrance' ], + file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) + ]) + input[3] = Channel.of([ + [ id: 'genmod_score_config_snvs' ], + file(params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(workflow.out.vcf.get(0).get(1)).vcf.summary, // Can't snapshot MD5 because VEP output is unstable + ).match() } + ) + } + } + + test("1 sample - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = ANNOTATE_CSQ_PLI.out.vcf.map { meta, vcf -> [ [ id: 'test' ], vcf ] } + input[1] = CREATE_PEDIGREE_FILE.out.ped.map { meta, ped -> [ [ id: 'test' ], ped ] } + input[2] = Channel.of([ + [ id: 'genmod_reduced_penetrance' ], + file(params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv', checkIfExists: true) + ]) + input[3] = Channel.of([ + [ id: 'genmod_score_config_snvs' ], + file(params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.tbi.get(0).get(1).endsWith("tbi") }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/local/rank_variants/tests/main.nf.test.snap b/subworkflows/local/rank_variants/tests/main.nf.test.snap new file mode 100644 index 00000000..a955bed6 --- /dev/null +++ b/subworkflows/local/rank_variants/tests/main.nf.test.snap @@ -0,0 +1,69 @@ +{ + "1 sample": { + "content": [ + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=121, phased=false, phasedAutodetect=false]" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T13:47:43.144635306" + }, + "1 sample - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,7089dd9c4bcb1dc87f15d3b1a9d5e89d", + "versions.yml:md5,90ddd1e5113e3c0c61c403c53029d0f1", + "versions.yml:md5,c9446a89a358fa2126b666399c2c804e", + "versions.yml:md5,cc68e7d53d2d24006094e28d37db20a8", + "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce" + ], + "tbi": [ + [ + { + "id": "test" + }, + "test_sorted.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test_sorted.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,7089dd9c4bcb1dc87f15d3b1a9d5e89d", + "versions.yml:md5,90ddd1e5113e3c0c61c403c53029d0f1", + "versions.yml:md5,c9446a89a358fa2126b666399c2c804e", + "versions.yml:md5,cc68e7d53d2d24006094e28d37db20a8", + "versions.yml:md5,dd0a9b5a3a16e3bfdcea734de4509dce" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-04T14:34:36.22073696" + } +} \ No newline at end of file diff --git a/subworkflows/local/rank_variants/tests/nextflow.config b/subworkflows/local/rank_variants/tests/nextflow.config new file mode 100644 index 00000000..60f0bcf9 --- /dev/null +++ b/subworkflows/local/rank_variants/tests/nextflow.config @@ -0,0 +1,122 @@ +process { + + withName: 'PREPARE_GENOME:UNTAR_VEP_CACHE' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { + ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } + ext.args = { [ + '--model_type WGS', + "--sample_name=${meta.id}", + '-vcf_stats_report=False' + ].join(' ') } + } + + withName: 'SHORT_VARIANT_CALLING:GLNEXUS' { + ext.args = '--config DeepVariant_unfiltered' + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { + ext.prefix = { "${meta.id}_concat" } + ext.args = [ + '--no-version', + '--allow-overlaps' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_MULTISAMPLE' { + ext.prefix = { "${meta.id}_norm_multisample" } + ext.args = [ + '--no-version', + '-m -', + '--output-type u', + '--write-index=csi', + '-w 10000' + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { + ext.prefix = { "${meta.id}_norm_singlesample" } + ext.args = [ + '--no-version', + '-m -', + '-w 10000', + '--output-type u', + ].join(' ') + } + + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + ext.prefix = { "${meta.id}_ac" } + ext.args = [ + '--no-version', + '--output-type u' + ].join(' ') + } + + withName: 'SNV_ANNOTATION:BCFTOOLS_FILLTAGS_ANNO' { + ext.prefix = { "${meta.id}_filltags_anno" } + ext.args = [ + '--no-version', + '--output-type z' + ].join(' ') + } + + withName: 'MINIMAP2_ALIGN' { + ext.args = '-x map-hifi' + } + + withName: 'SNV_ANNOTATION:ENSEMBLVEP_SNV' { + ext.args = { [ + "--dir_plugins .", + "--plugin LoFtool,LoFtool_scores.txt", + "--plugin pLI,pLI_values.txt", + '--distance 5000', + '--buffer_size 20000', + '--format vcf --max_sv_size 248387328', + '--appris --biotype --cache --canonical --ccds --compress_output bgzip', + '--domains --exclude_predicted --force_overwrite', + '--hgvs --humdiv --no_progress --numbers', + '--polyphen p --protein --offline --regulatory --sift p --symbol --tsl', + '--uniprot --vcf', + '--no_stats' + ].join(' ') } + } + + withName: 'ANNOTATE_CSQ_PLI:ADD_MOST_SEVERE_PLI' { + ext.prefix = { "${meta.id}_add_most_severe_pli" } + } + + withName: 'ANNOTATE_CSQ_PLI:ADD_MOST_SEVERE_CSQ' { + ext.prefix = { "${meta.id}_add_most_severe_csq" } + } + + withName: 'RANK_VARIANTS:GENMOD_ANNOTATE' { + ext.prefix = { "${meta.id}_genmod_annotate" } + ext.args = { [ + '--annotate_regions', + '--genome-build 38', + '--temp_dir ./' + ].join(' ') } + } + + withName: 'RANK_VARIANTS:GENMOD_MODELS' { + ext.prefix = { "${meta.id}_genmod_models" } + ext.args = "--whole_gene --temp_dir ./" + } + + withName: 'RANK_VARIANTS:GENMOD_SCORE' { + ext.prefix = { "${meta.id}_genmod_score" } + ext.args = "--rank_results" + } + + withName: 'RANK_VARIANTS:GENMOD_COMPOUND' { + ext.prefix = { "${meta.id}_genmod_compound" } + ext.args = "--temp_dir ./" + } + + withName: 'RANK_VARIANTS:BCFTOOLS_SORT' { + ext.prefix = { "${meta.id}_sorted" } + ext.args = "--output-type z --write-index=tbi" + } +} diff --git a/subworkflows/local/scatter_genome/tests/main.nf.test.snap b/subworkflows/local/scatter_genome/tests/main.nf.test.snap index 163401f0..6179981a 100644 --- a/subworkflows/local/scatter_genome/tests/main.nf.test.snap +++ b/subworkflows/local/scatter_genome/tests/main.nf.test.snap @@ -1,54 +1,65 @@ { - "fai, [], bed, true, 3": { + "[], bed, false, true, 3": { "content": [ { "0": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" ] ], "1": [ [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 + "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", + 2 + ], + [ + "2.bed:md5,0da4774e61b9c9005122e46f24522604", + 2 ] ], "2": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" ], "bed": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" ] ], "bed_intervals": [ [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 + "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", + 2 + ], + [ + "2.bed:md5,0da4774e61b9c9005122e46f24522604", + 2 ] ], "versions": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" ] }, [ - "chr22\t0\t40001" + "chr22\t0\t1000", + "chr22\t500\t1500", + "chr22\t2000\t3000" ], [ [ - "chr22\t0\t40001" + "chr22\t0\t1500" + ], + [ + "chr22\t2000\t3000" ] ] ], @@ -56,181 +67,178 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-11T13:03:46.414904212" + "timestamp": "2024-07-11T13:06:34.382235567" }, - "[], bed, false, false, 3": { + "fai, [], bed, true, 3": { "content": [ { "0": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "1": [ - + [ + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 + ] ], "2": [ - + "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", + "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ], "bed": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "bed_intervals": [ - + [ + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 + ] ], "versions": [ - + "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", + "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ] }, [ - "chr22\t0\t1000" + "chr22\t0\t40001" ], [ - + [ + "chr22\t0\t40001" + ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-11T12:53:03.541050122" + "timestamp": "2024-10-24T16:45:01.511512303" }, - "[], bed, false, true, 3": { + "fai, [], true, true, 3": { "content": [ { "0": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "1": [ [ - "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", - 2 - ], - [ - "2.bed:md5,0da4774e61b9c9005122e46f24522604", - 2 + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 ] ], "2": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ], "bed": [ [ { - "id": "chr22" + "id": { + "id": "test" + } }, - "chr22.bed:md5,88ebd3fd77139b3d33af226231eff0df" + "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] ], "bed_intervals": [ [ - "1.bed:md5,37978db9b095a29ebbd64f65dd8f13b3", - 2 - ], - [ - "2.bed:md5,0da4774e61b9c9005122e46f24522604", - 2 + "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", + 1 ] ], "versions": [ "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240" + "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", + "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" ] }, [ - "chr22\t0\t1000", - "chr22\t500\t1500", - "chr22\t2000\t3000" + "chr22\t0\t40001" ], [ [ - "chr22\t0\t1500" - ], - [ - "chr22\t2000\t3000" + "chr22\t0\t40001" ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-11T13:06:34.382235567" + "timestamp": "2024-10-24T16:44:33.772383165" }, - "fai, [], true, true, 3": { + "[], bed, false, false, 3": { "content": [ { "0": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" ] ], "1": [ - [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 - ] + ], "2": [ - "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", - "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + ], "bed": [ [ { - "id": "test" + "id": "chr22" }, - "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" + "chr22.bed:md5,3b0b598acca89a84aa414e4c95abec1f" ] ], "bed_intervals": [ - [ - "1.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7", - 1 - ] + ], "versions": [ - "versions.yml:md5,8174fa0cc1f95ed4b353a948a2cbd4e9", - "versions.yml:md5,beb3374eccd225096e2f7c8ecd3a28be", - "versions.yml:md5,d69b1c1fc4e665c357d541ea3b0a0240", - "versions.yml:md5,e70d387c0dd30530a3e7fe2846ddffe1" + ] }, [ - "chr22\t0\t40001" + "chr22\t0\t1000" ], [ - [ - "chr22\t0\t40001" - ] + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-11T13:03:35.848426979" + "timestamp": "2024-07-11T12:53:03.541050122" }, "fai, [], true, false, []": { "content": [ @@ -238,7 +246,9 @@ "0": [ [ { - "id": "test" + "id": { + "id": "test" + } }, "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] @@ -252,7 +262,9 @@ "bed": [ [ { - "id": "test" + "id": { + "id": "test" + } }, "genome.fasta.bed:md5,87a15eb9c2ff20ccd5cd8735a28708f7" ] @@ -272,9 +284,9 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-11T13:03:25.327078297" + "timestamp": "2024-10-24T16:44:24.76494349" } } \ No newline at end of file diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index 5395cd2e..3b743847 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -1,11 +1,13 @@ // // Workflow to call and merge SNVs // +include { ADD_FOUND_IN_TAG } from '../../../modules/local/add_found_in_tag/main' include { BCFTOOLS_CONCAT } from '../../../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_FILLTAGS } from '../../../modules/local/bcftools/filltags/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_MULTISAMPLE } from '../../../modules/nf-core/bcftools/norm/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_SINGLESAMPLE } from '../../../modules/nf-core/bcftools/norm/main' -include { DEEPVARIANT } from '../../../modules/nf-core/deepvariant/main' +include { DEEPVARIANT_RUNDEEPVARIANT } from '../../../modules/nf-core/deepvariant/rundeepvariant/main' +include { DEEPVARIANT_VCFSTATSREPORT } from '../../../modules/nf-core/deepvariant/vcfstatsreport/main' include { GLNEXUS } from '../../../modules/nf-core/glnexus/main' workflow SHORT_VARIANT_CALLING { @@ -27,18 +29,18 @@ workflow SHORT_VARIANT_CALLING { } .set { ch_deepvariant_in } - DEEPVARIANT ( ch_deepvariant_in, ch_fasta, ch_fai, [[],[]], ch_par_bed ) - ch_versions = ch_versions.mix(DEEPVARIANT.out.versions) + DEEPVARIANT_RUNDEEPVARIANT ( ch_deepvariant_in, ch_fasta, ch_fai, [[],[]], ch_par_bed ) + ch_versions = ch_versions.mix(DEEPVARIANT_RUNDEEPVARIANT.out.versions) // First remove region so we can group per sample // Then after grouping remove num_intervals since to match the meta of other workflows - DEEPVARIANT.out.vcf + DEEPVARIANT_RUNDEEPVARIANT.out.vcf .map { meta, vcf -> new_meta = meta - meta.subMap('region') [ groupKey(new_meta, new_meta.num_intervals ), vcf ] } .groupTuple() - .join( DEEPVARIANT.out.vcf_tbi + .join( DEEPVARIANT_RUNDEEPVARIANT.out.vcf_tbi .map{ meta, tbi -> new_meta = meta - meta.subMap('region') [ groupKey(new_meta, new_meta.num_intervals ), tbi ] @@ -59,22 +61,12 @@ workflow SHORT_VARIANT_CALLING { BCFTOOLS_NORM_SINGLESAMPLE ( BCFTOOLS_CONCAT.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, ch_fasta ) ch_versions = ch_versions.mix(BCFTOOLS_NORM_SINGLESAMPLE.out.versions) - // This creates a multisample VCF, with regions from ONE bed file - DEEPVARIANT.out.gvcf + // This creates one multisample VCF per family, with regions from ONE bed file + DEEPVARIANT_RUNDEEPVARIANT.out.gvcf .map { meta, gvcf -> - [ meta.region.name, meta.project, meta.phenotype == 2, gvcf ] - } - .groupTuple() // Group all files together per region - // If any of the samples in the VCF have an affected phenotype (2) - // add this to the meta of the multisample VCF to know if we should run RANK_VARIANTS or not - .map { meta, project, affected, gvcfs -> - new_meta = [ - 'id': meta, - 'project': project.first(), // Works only because only one project per run is allowed - 'contains_affected': affected.any(), - ] - [ new_meta, gvcfs ] + [ [ id:meta.region.name, family_id:meta.family_id ], gvcf ] } + .groupTuple() // Groups files from the same family together per region .set{ glnexus_in } GLNEXUS( glnexus_in, ch_bed ) @@ -84,17 +76,29 @@ workflow SHORT_VARIANT_CALLING { BCFTOOLS_FILLTAGS ( GLNEXUS.out.bcf ) ch_versions = ch_versions.mix(BCFTOOLS_FILLTAGS.out.versions) - BCFTOOLS_FILLTAGS.out.vcf - .map { meta, vcf -> [ meta, vcf, [] ] } - .set { bcftools_norm_in } + // Annotate with FOUND_IN tag + ADD_FOUND_IN_TAG ( + BCFTOOLS_FILLTAGS.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + "deepvariant" + ) + ch_versions = ch_versions.mix(ADD_FOUND_IN_TAG.out.versions) // Decompose and normalize variants - BCFTOOLS_NORM_MULTISAMPLE ( bcftools_norm_in, ch_fasta ) + BCFTOOLS_NORM_MULTISAMPLE ( + ADD_FOUND_IN_TAG.out.vcf.map { meta, vcf -> [ meta, vcf, [] ] }, + ch_fasta + ) ch_versions = ch_versions.mix(BCFTOOLS_NORM_MULTISAMPLE.out.versions) + // This is run before normalization for each sample to mimic run_deepvariant pipeline + DEEPVARIANT_VCFSTATSREPORT ( BCFTOOLS_CONCAT.out.vcf ) + ch_versions = ch_versions.mix(DEEPVARIANT_VCFSTATSREPORT.out.versions) + emit: - snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] - combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] - combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] + snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] + family_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] + family_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] + vcfstatsreport = DEEPVARIANT_VCFSTATSREPORT.out.report // channel: [ val(meta), path(html) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index d35e9387..04be59dd 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "1 sample - 1 bed, fasta, fai, bed, []": { + "1 sample - 1 bed, fasta, fai, [], []": { "content": [ { "0": [ @@ -8,51 +8,80 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], "1": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" ] ], "2": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], "3": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" + ] + ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" ] ], "snp_calls_vcf": [ @@ -61,26 +90,37 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" + ] + ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:18:48.194341252" + "timestamp": "2024-11-21T14:31:35.224934094" }, - "2 samples - 2 bed, fasta, fai, bed, [] - stub": { + "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ { "0": [ @@ -89,137 +129,157 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ [ { - "id": "test2", + "id": "test", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "1": [ + "2": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcfstatsreport": [ [ { - "id": "test2", + "id": "test", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:38:57.50673848" + "timestamp": "2024-11-21T14:34:35.379604763" }, - "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { + "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ { "0": [ @@ -228,94 +288,80 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" + ] + ], + "1": [ [ { - "id": "test2", + "id": "test", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" ] ], - "1": [ + "2": [ [ { "id": "genome.bed", - "contains_affected": false - }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" + ] + ], + "4": [ [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" ] ], - "3": [ + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "genome.multi_intervals.bed", - "contains_affected": false - }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" + ] + ], + "snp_calls_tbi": [ [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" ] ], "snp_calls_vcf": [ @@ -324,41 +370,37 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" + ] + ], + "vcfstatsreport": [ [ { - "id": "test2", + "id": "test", "single_end": false }, - "test2_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:39:09.239296314" + "timestamp": "2024-11-21T14:32:05.96601253" }, - "1 sample - 1 bed, fasta, fai, bed, [] - stub": { + "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ { "0": [ @@ -367,200 +409,183 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], "1": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" ] ], "2": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ], - "combined_bcf": [ + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" + ], [ { - "id": "genome.bed", - "contains_affected": false + "id": "genome.multi_intervals.bed", + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], - "combined_csi": [ + "3": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "snp_calls_vcf": [ + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" + ], [ { - "id": "test", - "single_end": false + "id": "genome.multi_intervals.bed", + "family_id": null }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], - "versions": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-13T12:20:26.146017974" - }, - "2 samples - 2 bed, fasta, fai, bed, []": { - "content": [ - { - "0": [ + "4": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" ] ], - "1": [ + "5": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" + ], + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], - "2": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], - "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ], - "combined_bcf": [ + "snp_calls_tbi": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" ], [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test2", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" ] ], - "combined_csi": [ + "snp_calls_vcf": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ], [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test2", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], - "snp_calls_vcf": [ + "vcfstatsreport": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" ], [ { "id": "test2", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", @@ -568,17 +593,25 @@ "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:37:29.720749753" + "timestamp": "2024-11-21T14:33:48.773081634" }, - "1 sample - 1 bed, fasta, fai, [], []": { + "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ { "0": [ @@ -587,79 +620,209 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" - ] - ], - "2": [ + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], [ { - "id": "genome.bed", - "contains_affected": false + "id": "test2", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ], - "combined_bcf": [ + "2": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" - ] - ], - "combined_csi": [ + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], [ { - "id": "genome.bed", - "contains_affected": false + "id": "genome.multi_intervals.bed", + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "snp_calls_vcf": [ + "3": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" + ], + "family_bcf": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "family_csi": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_calls_vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:18:20.527237885" + "timestamp": "2024-11-21T14:34:48.741504128" }, - "1 sample - 2 bed, fasta, fai, bed, [] - stub": { + "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ { "0": [ @@ -668,115 +831,459 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" + ], + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ - [ - { - "id": "genome.bed", - "contains_affected": false - }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "family_csi": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_calls_vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:35:02.231722564" + }, + "1 sample - 1 bed, fasta, fai, bed, [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" + ], + "family_bcf": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "family_csi": [ + [ + { + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_calls_vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-21T14:34:22.842191526" + }, + "1 sample - no bed, fasta, fai, [], []": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], + "2": [ + [ + { + "id": [ + + ], + "family_id": null + }, + "[]_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" + ] + ], + "3": [ + [ + { + "id": [ + + ], + "family_id": null + }, + "[]_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" + ] + ], + "4": [ [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" ] ], - "3": [ + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": [ + + ], + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], + "[]_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" + ] + ], + "family_csi": [ [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": [ + + ], + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "[]_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], - "combined_csi": [ + "snp_calls_tbi": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ], + "test_norm_singlesample.vcf.gz.tbi:md5,41ab8f51ac55e08b2339feb5a6b40764" + ] + ], + "snp_calls_vcf": [ [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], - "snp_calls_vcf": [ + "vcfstatsreport": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:38:45.950944715" + "timestamp": "2024-11-21T14:31:04.363638442" }, - "2 samples - 2 bed, fasta, fai, bed, par_bed": { + "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ { "0": [ @@ -785,94 +1292,113 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" - ], + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" + ] + ], + "1": [ [ { - "id": "test2", + "id": "test", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" ] ], - "1": [ + "2": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ] ], - "3": [ + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ec12cca4d6849a5f47823331c4b9a8f3" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,5d1828b40d43a2a18e30b1dffffd99b0" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "genome.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null + }, + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,83a0cecdb72c82ae0f5fc56f1426f5c0" + ] + ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,12d9802de9b9e071408e526930050626" + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" ] ], "snp_calls_vcf": [ @@ -881,41 +1407,42 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" - ], + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" + ] + ], + "vcfstatsreport": [ [ { - "id": "test2", + "id": "test", "single_end": false }, - "test2_norm_singlesample.bcf:md5,562e4ab7cea09c4f296550784e02ca84" + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:40:41.412678218" + "timestamp": "2024-11-21T14:32:38.48715039" }, - "1 sample - no bed, fasta, fai, [], []": { + "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ { "0": [ @@ -924,202 +1451,207 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], "1": [ [ { - "id": [ - - ], - "contains_affected": false + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" + ], + [ + { + "id": "test2", + "single_end": false }, - "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" ] ], "2": [ [ { - "id": [ - - ], - "contains_affected": false + "id": "genome.bed", + "family_id": null + }, + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" + ], + [ + { + "id": "genome.multi_intervals.bed", + "family_id": null }, - "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ], - "combined_bcf": [ [ { - "id": [ - - ], - "contains_affected": false + "id": "genome.bed", + "family_id": null }, - "[]_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" - ] - ], - "combined_csi": [ + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" + ], [ { - "id": [ - - ], - "contains_affected": false + "id": "genome.multi_intervals.bed", + "family_id": null }, - "[]_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], - "snp_calls_vcf": [ + "4": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,94d38d8fd3c50a7ede72a080fbd4992c" + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" ] ], - "versions": [ + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-13T12:17:52.991579386" - }, - "1 sample - 2 bed, fasta, fai, bed, []": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" - ] + "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "1": [ + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,ce3866081a0bb6d9bd0df30dd3361213" ] ], - "2": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ], [ { "id": "genome.multi_intervals.bed", - "contains_affected": false + "family_id": null }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,95eecbb89b9a60ecebc292e36ab4ebcf" ] ], - "3": [ - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", - "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" - ], - "combined_bcf": [ + "snp_calls_tbi": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "test_norm_singlesample.vcf.gz.tbi:md5,f1d5f7e2321e7f0534d251c12b373221" ], [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test2", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz:md5,56d662f0a527803ae72e40625c01014b" + "test2_norm_singlesample.vcf.gz.tbi:md5,2c4354a182ae1f4ad94f056b2fbf62a8" ] ], - "combined_csi": [ + "snp_calls_vcf": [ [ { - "id": "genome.bed", - "contains_affected": false + "id": "test", + "single_end": false }, - "genome.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ], [ { - "id": "genome.multi_intervals.bed", - "contains_affected": false + "id": "test2", + "single_end": false }, - "genome.multi_intervals.bed_norm_multisample.vcf.gz.csi:md5,53e24fb59fef3bee6291c474e20200b9" + "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], - "snp_calls_vcf": [ + "vcfstatsreport": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,f978f9f75d4892499156218a300fd246" + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", + "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", + "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:36:53.97901474" + "timestamp": "2024-11-21T14:33:13.404225198" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1130,85 +1662,125 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": [ ], - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": [ ], - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": [ ], - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": [ ], - "contains_affected": false + "family_id": null }, "[]_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:20:07.024378325" + "timestamp": "2024-11-21T14:33:59.832105156" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1219,76 +1791,116 @@ "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "2": [ + "3": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ], - "combined_bcf": [ + "family_bcf": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "combined_csi": [ + "family_csi": [ [ { "id": "genome.bed", - "contains_affected": false + "family_id": null }, "genome.bed_norm_multisample.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "snp_calls_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_norm_singlesample.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "snp_calls_vcf": [ [ { "id": "test", "single_end": false }, - "test_norm_singlesample.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", - "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,ee687c9b68546c8138fab17f68b967c0", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f8e25357cdcef69ae5ee0cd801960b50" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-13T12:20:16.739088461" + "timestamp": "2024-11-21T14:34:11.123087909" } } \ No newline at end of file diff --git a/subworkflows/local/short_variant_calling/tests/nextflow.config b/subworkflows/local/short_variant_calling/tests/nextflow.config index f9b1d1a5..2b85525c 100644 --- a/subworkflows/local/short_variant_calling/tests/nextflow.config +++ b/subworkflows/local/short_variant_calling/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'DEEPVARIANT' { + withName: 'SHORT_VARIANT_CALLING:DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ '--model_type WGS', @@ -8,11 +8,11 @@ process { ].join(' ') } } - withName: 'GLNEXUS' { + withName: 'SHORT_VARIANT_CALLING:GLNEXUS' { ext.args = '--config DeepVariant_unfiltered' } - withName: 'BCFTOOLS_CONCAT' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_CONCAT' { ext.prefix = { "${meta.id}_concat" } ext.args = [ '--no-version', @@ -20,7 +20,7 @@ process { ].join(' ') } - withName: 'BCFTOOLS_NORM_MULTISAMPLE' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_MULTISAMPLE' { ext.prefix = { "${meta.id}_norm_multisample" } ext.args = [ '--no-version', @@ -31,17 +31,18 @@ process { ].join(' ') } - withName: 'BCFTOOLS_NORM_SINGLESAMPLE' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_NORM_SINGLESAMPLE' { ext.prefix = { "${meta.id}_norm_singlesample" } ext.args = [ '--no-version', '-m -', '-w 10000', - '--output-type u', + '--output-type z', + '--write-index=tbi' ].join(' ') } - withName: 'BCFTOOLS_FILLTAGS' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { ext.prefix = { "${meta.id}_ac" } ext.args = [ '--no-version', @@ -49,4 +50,13 @@ process { ].join(' ') } + withName: 'SHORT_VARIANT_CALLING:ADD_FOUND_IN_TAG' { + ext.prefix = { "${meta.id}_found_in" } + ext.args = '--no-version' + ext.args2 = [ + '--output-type z', + '--no-version' + ].join(' ') + } + } diff --git a/subworkflows/local/snv_annotation/main.nf b/subworkflows/local/snv_annotation/main.nf index 1bcc22e7..96182294 100644 --- a/subworkflows/local/snv_annotation/main.nf +++ b/subworkflows/local/snv_annotation/main.nf @@ -1,23 +1,23 @@ include { ANNOTATE_CADD } from '../annotate_cadd/main' include { ECHTVAR_ANNO } from '../../../modules/local/echtvar/anno/main' include { BCFTOOLS_FILLTAGS as BCFTOOLS_FILLTAGS_ANNO } from '../../../modules/local/bcftools/filltags/main' -include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main' -include { TABIX_TABIX as TABIX_VEP } from '../../../modules/nf-core/tabix/tabix/main' +include { ENSEMBLVEP_VEP as ENSEMBLVEP_SNV } from '../../../modules/nf-core/ensemblvep/vep/main' +include { TABIX_TABIX as TABIX_ENSEMBLVEP_SNV } from '../../../modules/nf-core/tabix/tabix/main' workflow SNV_ANNOTATION { take: - ch_vcf // channel [mandatory] [ val(meta), path(vcf) ] - ch_databases // channel: [mandatory] [ val(meta), path(db) ] - ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] - ch_fai // channel: [mandatory] [ val(meta), path(fai) ] - ch_vep_cache // channel: [mandatory] [ path(cache) ] - val_vep_cache_version // string: [mandatory] default: 110 - ch_vep_extra_files // channel: [mandatory] [ path(files) ] - val_annotate_cadd // bool: [mandatory] - ch_cadd_header // channel: [mandatory] [ path(txt) ] - ch_cadd_resources // channel: [mandatory] [ path(annotation) ] - ch_cadd_prescored // channel: [mandatory] [ path(prescored) ] + ch_vcf // channel [mandatory] [ val(meta), path(vcf) ] + ch_databases // channel: [mandatory] [ path(db) ] + ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] + ch_fai // channel: [mandatory] [ val(meta), path(fai) ] + ch_vep_cache // channel: [mandatory] [ path(cache) ] + val_vep_cache_version // string: [mandatory] default: 110 + ch_vep_extra_files // channel: [mandatory] [ path(files) ] + val_annotate_cadd // bool: [mandatory] + ch_cadd_header // channel: [mandatory] [ path(txt) ] + ch_cadd_resources // channel: [mandatory] [ val(meta), path(annotation) ] + ch_cadd_prescored_indels // channel: [mandatory] [ val(meta), path(prescored) ] main: ch_versions = Channel.empty() @@ -38,7 +38,7 @@ workflow SNV_ANNOTATION { BCFTOOLS_FILLTAGS_ANNO.out.tbi, ch_cadd_header, ch_cadd_resources, - ch_cadd_prescored + ch_cadd_prescored_indels ) ch_versions = ch_versions.mix(ANNOTATE_CADD.out.versions) @@ -53,7 +53,7 @@ workflow SNV_ANNOTATION { } - ENSEMBLVEP_VEP ( + ENSEMBLVEP_SNV ( ch_vep_in, "GRCh38", "homo_sapiens", @@ -62,13 +62,13 @@ workflow SNV_ANNOTATION { ch_fasta, ch_vep_extra_files ) - ch_versions = ch_versions.mix(ENSEMBLVEP_VEP.out.versions) + ch_versions = ch_versions.mix(ENSEMBLVEP_SNV.out.versions) - TABIX_VEP ( ENSEMBLVEP_VEP.out.vcf ) - ch_versions = ch_versions.mix(TABIX_VEP.out.versions) + TABIX_ENSEMBLVEP_SNV ( ENSEMBLVEP_SNV.out.vcf ) + ch_versions = ch_versions.mix(TABIX_ENSEMBLVEP_SNV.out.versions) emit: - vcf = ENSEMBLVEP_VEP.out.vcf - tbi = TABIX_VEP.out.tbi + vcf = ENSEMBLVEP_SNV.out.vcf + tbi = TABIX_ENSEMBLVEP_SNV.out.tbi versions = ch_versions } diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test b/subworkflows/local/snv_annotation/tests/main.nf.test index 0d288ccb..6cf9e390 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test +++ b/subworkflows/local/snv_annotation/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../" workflow "SNV_ANNOTATION" config "./nextflow.config" - tag "SNV_ANNOTATION" setup { run("GUNZIP") { @@ -83,17 +82,17 @@ nextflow_workflow { when { workflow { """ - input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[0] = SHORT_VARIANT_CALLING.out.family_bcf input[1] = [ file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] input[2] = GUNZIP.out.gunzip input[3] = SAMTOOLS_FAIDX.out.fai - input[4] = UNTAR.out.untar.map { meta, cache -> cache } + input[4] = UNTAR.out.untar.map { meta, cache -> cache} input[5] = Channel.value('110') - input[6] = [ + input[6] = Channel.of([ file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) - ] + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() input[7] = false input[8] = Channel.value([]) input[9] = null @@ -108,8 +107,8 @@ nextflow_workflow { { assert snapshot( workflow.out.versions, file(workflow.out.tbi.get(0).get(1)).name, - path(workflow.out.vcf.get(0).get(1)).linesGzip[48..118], // Stable - path(workflow.out.vcf.get(0).get(1)).linesGzip[121..150] // Stable + path(workflow.out.vcf.get(0).get(1)).vcf.variantsMD5, + path(workflow.out.vcf.get(0).get(1)).vcf.summary, ).match() } ) } @@ -125,7 +124,7 @@ nextflow_workflow { } workflow { """ - input[0] = SHORT_VARIANT_CALLING.out.combined_bcf + input[0] = SHORT_VARIANT_CALLING.out.family_bcf input[1] = [ file(params.pipelines_testdata_base_path + 'reference/cadd.v1.6.hg38.test_data.zip', checkIfExists: true) ] @@ -133,9 +132,9 @@ nextflow_workflow { input[3] = SAMTOOLS_FAIDX.out.fai input[4] = UNTAR.out.untar.map { meta, cache -> cache } input[5] = Channel.value('110') - input[6] = [ + input[6] = Channel.of([ file(params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv', checkIfExists: true) - ] + ]).splitCsv(header:true).map { row -> row.vep_files }.collect() input[7] = false input[8] = Channel.value([]) input[9] = null diff --git a/subworkflows/local/snv_annotation/tests/main.nf.test.snap b/subworkflows/local/snv_annotation/tests/main.nf.test.snap index f491df0c..2973a379 100644 --- a/subworkflows/local/snv_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/snv_annotation/tests/main.nf.test.snap @@ -2,16 +2,16 @@ "bcf, db, vep_cache, '110', -stub": { "content": [ [ + "versions.yml:md5,1c67249781a135b3abbc3c7e63af4d0b", "versions.yml:md5,503122d4650f6a8a39b4e810063d6c22", - "versions.yml:md5,992301857689684643c42695c032a7f2", - "versions.yml:md5,a07924ee4ebc2d4de5bb7ef897ddc30c", - "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533" + "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533", + "versions.yml:md5,f533675b4401f25d7dcfc9f63abeb619" ], [ [ { "id": "test_data.bed", - "contains_affected": false + "family_id": null }, "test_data.bed.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -20,137 +20,34 @@ [ { "id": "test_data.bed", - "contains_affected": false + "family_id": null }, "test_data.bed.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-12T10:11:15.912554747" + "timestamp": "2024-11-12T17:30:08.202090846" }, "bcf, db, vep_cache, '110'": { "content": [ [ + "versions.yml:md5,1c67249781a135b3abbc3c7e63af4d0b", "versions.yml:md5,503122d4650f6a8a39b4e810063d6c22", - "versions.yml:md5,992301857689684643c42695c032a7f2", - "versions.yml:md5,a07924ee4ebc2d4de5bb7ef897ddc30c", - "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533" + "versions.yml:md5,c0e55e36a31ed71acf25702b7d059533", + "versions.yml:md5,f533675b4401f25d7dcfc9f63abeb619" ], "test_data.bed.vcf.gz.tbi", - [ - "##INFO=", - "##VEP-command-line='vep --assembly GRCh38 --cache --cache_version 110 --compress_output bgzip --database 0 --dir_cache [PATH]/vep_cache --fasta hg38.test.fa --fork 2 --input_file test_data.bed_filltags_anno.vcf.gz --offline --output_file test_data.bed.vcf.gz --vcf'", - "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\ttest", - "chr16\t63972\tchr16_63972_T_C\tT\tC\t20\t.\tAF=1;AQ=20;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000262316|protein_coding||3/17||||||||||-1||HGNC|HGNC:20561,C|intron_variant&NMD_transcript_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000417043|nonsense_mediated_decay||2/3||||||||||-1||HGNC|HGNC:20561,C|intron_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000419764|protein_coding||3/3||||||||||-1|cds_end_NF|HGNC|HGNC:20561,C|intron_variant&NMD_transcript_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000428730|nonsense_mediated_decay||2/16||||||||||-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000448893|protein_coding|||||||||||4210|-1|cds_start_NF|HGNC|HGNC:20561,C|intron_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000450643|protein_coding||3/4||||||||||-1|cds_end_NF|HGNC|HGNC:20561,C|downstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000472390|retained_intron|||||||||||580|-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000482904|retained_intron|||||||||||1766|-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000486045|retained_intron|||||||||||3779|-1||HGNC|HGNC:20561,C|non_coding_transcript_exon_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000487201|retained_intron|2/3||||1177|||||||-1||HGNC|HGNC:20561,C|upstream_gene_variant|MODIFIER|RHBDF1|ENSG00000007384|Transcript|ENST00000493647|retained_intron|||||||||||3292|-1||HGNC|HGNC:20561\tGT:DP:AD:GQ:PL:RNC\t1/1:13:0,13:11:20,11,0:..", - "chr16\t86889\tchr16_86889_T_C\tT\tC\t21\t.\tAF=1;AQ=21;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000219431|protein_coding|||||||||||1047|1||HGNC|HGNC:7211,C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000356432|protein_coding|||||||||||1043|1||HGNC|HGNC:7211,C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000397817|protein_coding|||||||||||1038|1||HGNC|HGNC:7211,C|intron_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000399953|protein_coding||11/11||||||||||-1||HGNC|HGNC:14124,C|downstream_gene_variant|MODIFIER|MPG|ENSG00000103152|Transcript|ENST00000436333|protein_coding|||||||||||1205|1|cds_end_NF|HGNC|HGNC:7211,C|upstream_gene_variant|MODIFIER||ENSG00000269482|Transcript|ENST00000601483|lncRNA|||||||||||3742|1|||,C|intron_variant&non_coding_transcript_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000610509|retained_intron||1/2||||||||||-1||HGNC|HGNC:14124,C|intron_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000611875|protein_coding||13/13||||||||||-1||HGNC|HGNC:14124,C|intron_variant&NMD_transcript_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000621703|nonsense_mediated_decay||10/10||||||||||-1||HGNC|HGNC:14124,C|intron_variant&NMD_transcript_variant|MODIFIER|NPRL3|ENSG00000103148|Transcript|ENST00000622194|nonsense_mediated_decay||11/11||||||||||-1||HGNC|HGNC:14124\tGT:DP:AD:GQ:PL:RNC\t1/1:28:0,28:18:21,20,0:..", - "chr16\t160055\tchr16_160055_C_G\tC\tG\t18\t.\tAF=1;AQ=18;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3067|1||HGNC|HGNC:4836,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4427|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:0,29:17:18,22,0:..", - "chr16\t160070\tchr16_160070_C_CGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\tC\tCGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3051|1||HGNC|HGNC:4836,GGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGACACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTGTGAGACGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGAGATGCCCAGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGTTTGAGAGGTGCCCGGGAT|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4411|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:30:8,7:2:9,0,18:..", - "chr16\t160089\tchr16_160089_TG_T\tTG\tT\t14\t.\tAF=0.5;AQ=14;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3032|1||HGNC|HGNC:4836,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4392|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:30:25,5:15:14,0,29:..", - "chr16\t160180\tchr16_160180_C_T\tC\tT\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2942|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4302|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:29:1,28:15:15,25,0:..", - "chr16\t160216\tchr16_160216_T_A\tT\tA\t10\t.\tAF=1;AQ=10;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2906|1||HGNC|HGNC:4836,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4266|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:0,27:6:10,6,0:..", - "chr16\t160217\tchr16_160217_C_T\tC\tT\t9\t.\tAF=1;AQ=9;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2905|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4265|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:27:0,27:5:9,3,0:..", - "chr16\t160326\tchr16_160326_T_A\tT\tA\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2796|1||HGNC|HGNC:4836,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4156|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:0,29:14:15,18,0:..", - "chr16\t160327\tchr16_160327_C_T\tC\tT\t16\t.\tAF=1;AQ=16;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2795|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4155|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:29:3,26:14:16,17,0:..", - "chr16\t160388\tchr16_160388_G_GGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\tG\tGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA\t15\t.\tAF=0.5;AQ=15;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2733|1||HGNC|HGNC:4836,GGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCCGGGATGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCTGGGATGGCTTGTGGGGCACAGGTTGTGAGAGGTGCCTGGGACGGCTTGTGGGGCACAGGTTGTGAGA|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4093|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:31:4,14:11:15,0,12:..", - "chr16\t160728\tchr16_160728_C_T\tC\tT\t5\t.\tAF=1;AQ=5;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2394|1||HGNC|HGNC:4836,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3754|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:30:8,22:4:5,3,0:..", - "chr16\t160746\tchr16_160746_T_C\tT\tC\t10\t.\tAF=0.5;AQ=10;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2376|1||HGNC|HGNC:4836,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3736|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:30:23,7:10:10,0,18:..", - "chr16\t160751\tchr16_160751_AG_A;chr16_160752_G_GGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\tAG\tA\t8\t.\tAF=0.5;AQ=8;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2370|1||HGNC|HGNC:4836,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3730|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/0:22:.,7:6:0,0,0:..", - "chr16\t160752\tchr16_160751_AG_A;chr16_160752_G_GGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\tG\tGGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA\t8\t.\tAF=0.5;AQ=6;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2369|1||HGNC|HGNC:4836,GGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGAGGGTGCCCAGGATGGCTTGTGGGGCACAGGCTGCAAGAGGTGCCCAGGACGGCTTGTGGGGCACAGGTTGTGAGGGTGCCCGGGACGGCTTGTGGGGCACAGGCTGTGA|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3729|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:.,14:6:0,0,0:..", - "chr16\t161210\tchr16_161210_GC_G\tGC\tG\t6\t.\tAF=0.5;AQ=6;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1911|1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4767|1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3271|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:27:21,5:7:6,0,27:..", - "chr16\t161474\tchr16_161474_TA_T\tTA\tT\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1647|1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4503|1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||3007|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:25:16,9:23:22,0,39:..", - "chr16\t162329\tchr16_162329_G_A\tG\tA\t23\t.\tAF=0.5;AQ=23;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||793|1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||3649|1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2153|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:24:23,0,41:..", - "chr16\t162650\tchr16_162650_C_T\tC\tT\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||472|1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||3328|1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1832|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:24:9,15:33:34,0,41:..", - "chr16\t163106\tchr16_163106_C_T\tC\tT\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||16|1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2872|1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1376|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:22:22,0,39:..", - "chr16\t163140\tchr16_163140_T_G\tT\tG\t17\t.\tAF=0.5;AQ=17;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|non_coding_transcript_exon_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|1/3||||19|||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2838|1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1342|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:17:17,0,39:..", - "chr16\t163143\tchr16_163143_G_A\tG\tA\t16\t.\tAF=0.5;AQ=16;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|non_coding_transcript_exon_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|1/3||||22|||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2835|1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1339|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:17:16,0,41:..", - "chr16\t163229\tchr16_163229_T_C\tT\tC\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2749|1||HGNC|HGNC:4826,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1253|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:23:15,8:3:0,0,27:..", - "chr16\t163796\tchr16_163796_T_A\tT\tA\t12\t.\tAF=1;AQ=12;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2182|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4883|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||686|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:15:0,15:7:12,7,0:..", - "chr16\t163800\tchr16_163800_G_A\tG\tA\t8\t.\tAF=1;AQ=8;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2178|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4879|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||682|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:16:2,14:3:8,0,0:..", - "chr16\t163804\tchr16_163804_G_A\tG\tA\t14\t.\tAF=1;AQ=14;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2174|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4875|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||678|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:0,21:13:14,16,0:..", - "chr16\t164431\tchr16_164431_T_TG\tT\tTG\t25\t.\tAF=1;AQ=25;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||1/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1546|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4247|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||50|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:0,21:22:25,25,0:..", - "chr16\t164541\tchr16_164541_G_GGTCC\tG\tGGTCC\t26\t.\tAF=0.5;AQ=26;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GTCC|non_coding_transcript_exon_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|2/3||||155-156|||||||1||HGNC|HGNC:4836,GTCC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1436|1||HGNC|HGNC:4826,GTCC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4137|1||HGNC|HGNC:4825,GTCC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GTCC|non_coding_transcript_exon_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|1/3||||60-61|||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:13,7:26:26,0,39:..", - "chr16\t164690\tchr16_164690_C_CGCGGGGCGCGGTGCGGGCGGG\tC\tCGCGGGGCGCGGTGCGGGCGGG\t27\t.\tAF=0.5;AQ=27;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GCGGGGCGCGGTGCGGGCGGG|splice_donor_region_variant&intron_variant&non_coding_transcript_variant|LOW|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GCGGGGCGCGGTGCGGGCGGG|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1287|1||HGNC|HGNC:4826,GCGGGGCGCGGTGCGGGCGGG|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3988|1||HGNC|HGNC:4825,GCGGGGCGCGGTGCGGGCGGG|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GCGGGGCGCGGTGCGGGCGGG|splice_donor_region_variant&intron_variant&non_coding_transcript_variant|LOW|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:6,14:25:27,0,28:..", - "chr16\t164723\tchr16_164723_C_T\tC\tT\t11\t.\tAF=0.5;AQ=11;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1255|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3956|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:15,4:11:11,0,21:..", - "chr16\t164731\tchr16_164731_C_CG\tC\tCG\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1246|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3947|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:2,14:2:14,0,22:..", - "chr16\t164740\tchr16_164740_C_T\tC\tT\t2\t.\tAF=0.5;AQ=2;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1238|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3939|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:1,18:2:2,0,1:..", - "chr16\t164771\tchr16_164771_T_C\tT\tC\t2\t.\tAF=0.5;AQ=2;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1207|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3908|1||HGNC|HGNC:4825,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:13,6:4:10,0,25:..", - "chr16\t164791\tchr16_164791_G_A\tG\tA\t16\t.\tAF=0.5;AQ=16;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1187|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3888|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:6,15:15:16,0,20:..", - "chr16\t164800\tchr16_164800_G_GGCGGGGTCGCGGGGCGGGGCGAGGTC\tG\tGGCGGGGTCGCGGGGCGGGGCGAGGTC\t4\t.\tAF=0.5;AQ=4;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GCGGGGTCGCGGGGCGGGGCGAGGTC|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GCGGGGTCGCGGGGCGGGGCGAGGTC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1177|1||HGNC|HGNC:4826,GCGGGGTCGCGGGGCGGGGCGAGGTC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3878|1||HGNC|HGNC:4825,GCGGGGTCGCGGGGCGGGGCGAGGTC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GCGGGGTCGCGGGGCGGGGCGAGGTC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:14,4:5:4,0,19:..", - "chr16\t164817\tchr16_164817_C_A\tC\tA\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1161|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3862|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:8,13:21:22,0,27:..", - "chr16\t164831\tchr16_164831_C_CG\tC\tCG\t4\t.\tAF=1;AQ=4;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1146|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3847|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:4,15:2:4,0,0:..", - "chr16\t164839\tchr16_164839_G_GGT\tG\tGGT\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=GT|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GT|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1138|1||HGNC|HGNC:4826,GT|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3839|1||HGNC|HGNC:4825,GT|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GT|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:2,15:10:15,10,0:..", - "chr16\t164871\tchr16_164871_T_G\tT\tG\t13\t.\tAF=0.5;AQ=13;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1107|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3808|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:12,7:14:13,0,33:..", - "chr16\t164884\tchr16_164884_G_GT\tG\tGT\t15\t.\tAF=1;AQ=15;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1093|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3794|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:21:0,21:15:15,22,0:..", - "chr16\t164892\tchr16_164892_CG_C\tCG\tC\t2\t.\tAF=0.5;AQ=2;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1085|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3786|1||HGNC|HGNC:4825,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:18,3:5:2,0,21:..", - "chr16\t164907\tchr16_164907_C_A\tC\tA\t3\t.\tAF=0.5;AQ=3;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1071|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3772|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:12,8:5:3,0,20:..", - "chr16\t164931\tchr16_164931_C_G\tC\tG\t3\t.\tAF=0.5;AQ=3;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1047|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3748|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:9:1,8:5:3,0,19:..", - "chr16\t164932\tchr16_164932_G_GGGCGGGC\tG\tGGGCGGGC\t1\t.\tAF=0.5;AQ=1;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GGCGGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GGCGGGC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1045|1||HGNC|HGNC:4826,GGCGGGC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3746|1||HGNC|HGNC:4825,GGCGGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GGCGGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:9:2,7:4:1,0,15:..", - "chr16\t164942\tchr16_164942_G_GT\tG\tGT\t4\t.\tAF=0.5;AQ=4;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=T|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,T|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1035|1||HGNC|HGNC:4826,T|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3736|1||HGNC|HGNC:4825,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,T|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:9:0,8:6:4,0,14:..", - "chr16\t164953\tchr16_164953_G_GGCGGC\tG\tGGCGGC\t13\t.\tAF=0.5;AQ=13;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=GCGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,GCGGC|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1024|1||HGNC|HGNC:4826,GCGGC|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3725|1||HGNC|HGNC:4825,GCGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,GCGGC|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:14,6:13:13,0,33:..", - "chr16\t164985\tchr16_164985_C_CG\tC\tCG\t18\t.\tAF=1;AQ=18;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant&non_coding_transcript_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4836,G|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||992|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3693|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t1/1:19:1,18:16:18,18,0:..", - "chr16\t165212\tchr16_165212_TC_T\tTC\tT\t3\t.\tAF=0.5;AQ=3;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||57|1||HGNC|HGNC:4836,-|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||765|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3466|1||HGNC|HGNC:4825,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:18,3:5:3,0,30:..", - "chr16\t165380\tchr16_165380_G_A\tG\tA\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||224|1||HGNC|HGNC:4836,A|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||598|1||HGNC|HGNC:4826,A|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3299|1||HGNC|HGNC:4825,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,A|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:14,8:29:29,0,43:..", - "chr16\t165856\tchr16_165856_G_C\tG\tC\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||700|1||HGNC|HGNC:4836,C|upstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||122|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2823|1||HGNC|HGNC:4825,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,C|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:14,8:29:29,0,44:..", - "chr16\t166191\tchr16_166191_C_CG\tC\tCG\t22\t.\tAF=0.5;AQ=22;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1035|1||HGNC|HGNC:4836,G|intron_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding||1/2||||||||||1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2487|1||HGNC|HGNC:4825,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826,G|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||1/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:22:14,6:23:22,0,36:..", - "chr16\t166518\tchr16_166518_TG_T\tTG\tT\t11\t.\tAF=0.5;AQ=11;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||1363|1||HGNC|HGNC:4836,-|intron_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding||2/2||||||||||1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2160|1||HGNC|HGNC:4825,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined||2/2||||||||||1||HGNC|HGNC:4826,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined||2/2||||||||||1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:16,4:12:11,0,32:..", - "chr16\t167928\tchr16_167928_GT_G\tGT\tG\t17\t.\tAF=0.5;AQ=17;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4947|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2773|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1165|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4961|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||750|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1168|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4965|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1168|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:14,6:17:17,0,31:..", - "chr16\t167947\tchr16_167947_T_TC\tT\tTC\t19\t.\tAF=0.5;AQ=19;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4928|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2791|1||HGNC|HGNC:4836,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1183|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4942|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||731|1||HGNC|HGNC:4825,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1186|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4946|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4996|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1186|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:21:11,10:18:19,0,22:..", - "chr16\t167948\tchr16_167948_T_C\tT\tC\t10\t.\tAF=0.5;AQ=10;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4928|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||2792|1||HGNC|HGNC:4836,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1184|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4942|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||731|1||HGNC|HGNC:4825,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1187|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4946|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4996|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1187|1||HGNC|HGNC:4826\tGT:DP:AD:GQ:PL:RNC\t0/1:20:10,10:10:10,0,17:..", - "chr16\t168533\tchr16_168533_T_C\tT\tC\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4343|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3377|1||HGNC|HGNC:4836,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1769|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4357|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||146|1||HGNC|HGNC:4825,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1772|1||HGNC|HGNC:4826,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4361|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4411|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1772|1||HGNC|HGNC:4826,C|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4969|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:11,9:29:29,0,43:..", - "chr16\t168736\tchr16_168736_A_G\tA\tG\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||4140|1||HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3580|1||HGNC|HGNC:4836,G|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||1972|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||4154|1||HGNC|HGNC:4824,G|non_coding_transcript_exon_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|1/3||||58|||||||1||HGNC|HGNC:4825,G|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||1975|1||HGNC|HGNC:4826,G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||4158|1||HGNC|HGNC:4824,G|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4208|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||1975|1||HGNC|HGNC:4826,G|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4766|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:11,9:34:34,0,48:..", - "chr16\t169117\tchr16_169117_TG_T\tTG\tT\t4\t.\tAF=0.5;AQ=4;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3758|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||3962|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2354|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3772|1||HGNC|HGNC:4824,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene||2/2||||||||||1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||2357|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3776|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3826|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2357|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4384|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:17,3:6:4,0,27:..", - "chr16\t169404\tchr16_169404_TC_T\tTC\tT\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3471|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||4249|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2641|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3485|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||71|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||2644|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3489|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3539|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2644|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||4097|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:16,2:7:5,0,30:..", - "chr16\t169624\tchr16_169624_TC_T\tTC\tT\t10\t.\tAF=0.5;AQ=10;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3251|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBZP1|ENSG00000206178|Transcript|ENST00000354915|unprocessed_pseudogene|||||||||||4469|1||HGNC|HGNC:4836,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||2861|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3265|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||291|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||2864|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3269|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3319|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||2864|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3877|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:16,4:11:10,0,32:..", - "chr16\t170831\tchr16_170831_T_TCACA\tT\tTCACA\t0\t.\tAF=0.5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||2044|1||HGNC|HGNC:4824,CACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4067|1||HGNC|HGNC:4826,CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||2058|1||HGNC|HGNC:4824,CACA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1497|1||HGNC|HGNC:4825,CACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4070|1||HGNC|HGNC:4826,CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||2062|1||HGNC|HGNC:4824,CACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||2112|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,CACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4070|1||HGNC|HGNC:4826,CACA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2670|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:6,6:3:19,0,25:..", - "chr16\t170862\tchr16_170862_C_CACACA\tC\tCACACA\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||2013|1||HGNC|HGNC:4824,ACACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4098|1||HGNC|HGNC:4826,ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||2027|1||HGNC|HGNC:4824,ACACA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1528|1||HGNC|HGNC:4825,ACACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4101|1||HGNC|HGNC:4826,ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||2031|1||HGNC|HGNC:4824,ACACA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||2081|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,ACACA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4101|1||HGNC|HGNC:4826,ACACA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2639|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:16,2:7:5,0,28:..", - "chr16\t170943\tchr16_170943_AG_A\tAG\tA\t1\t.\tAF=0.5;AQ=1;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1932|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4180|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1946|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1610|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4183|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1950|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||2000|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4183|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2558|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:18,2:4:1,0,26:..", - "chr16\t171206\tchr16_171206_T_TTTA\tT\tTTTA\t13\t.\tAF=0.5;AQ=13;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1669|1||HGNC|HGNC:4824,TTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4442|1||HGNC|HGNC:4826,TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1683|1||HGNC|HGNC:4824,TTA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1872|1||HGNC|HGNC:4825,TTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4445|1||HGNC|HGNC:4826,TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1687|1||HGNC|HGNC:4824,TTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1737|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,TTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4445|1||HGNC|HGNC:4826,TTA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2295|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:11,9:13:13,0,22:..", - "chr16\t171219\tchr16_171219_T_TTA\tT\tTTA\t1\t.\tAF=0.5;AQ=1;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1656|1||HGNC|HGNC:4824,TA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4455|1||HGNC|HGNC:4826,TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1670|1||HGNC|HGNC:4824,TA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1885|1||HGNC|HGNC:4825,TA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4458|1||HGNC|HGNC:4826,TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1674|1||HGNC|HGNC:4824,TA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1724|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,TA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4458|1||HGNC|HGNC:4826,TA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2282|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:14,3:4:1,0,20:..", - "chr16\t171220\tchr16_171220_T_TATTA\tT\tTATTA\t9\t.\tAF=0.5;AQ=9;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1655|1||HGNC|HGNC:4824,ATTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4456|1||HGNC|HGNC:4826,ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1669|1||HGNC|HGNC:4824,ATTA|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||1886|1||HGNC|HGNC:4825,ATTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4459|1||HGNC|HGNC:4826,ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1673|1||HGNC|HGNC:4824,ATTA|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1723|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,ATTA|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4459|1||HGNC|HGNC:4826,ATTA|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||2281|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:20:16,4:10:9,0,23:..", - "chr16\t171534\tchr16_171534_AT_A\tAT\tA\t20\t.\tAF=0.5;AQ=20;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||1341|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000356815|protein_coding|||||||||||4771|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1355|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2201|1||HGNC|HGNC:4825,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000472539|protein_coding_CDS_not_defined|||||||||||4774|1||HGNC|HGNC:4826,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1359|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1409|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBM|ENSG00000206177|Transcript|ENST00000496585|protein_coding_CDS_not_defined|||||||||||4774|1||HGNC|HGNC:4826,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||1967|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:14,5:20:20,0,40:..", - "chr16\t171881\tchr16_171881_TC_T\tTC\tT\t21\t.\tAF=0.5;AQ=21;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||994|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||4798|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||4822|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||1008|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||2548|1||HGNC|HGNC:4825,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||4816|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||1012|1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||1062|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||4866|1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||1620|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:12,7:21:21,0,35:.." - ], - [ - "chr16\t172418\tchr16_172418_T_C\tT\tC\t20\t.\tAF=1;AQ=20;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||458|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||4262|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||4286|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||472|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3084|1||HGNC|HGNC:4825,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||4280|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||476|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||526|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||4330|1||HGNC|HGNC:4823,C|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4895|-1|||,C|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||1084|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:18:0,18:16:20,17,0:..", - "chr16\t172636\tchr16_172636_C_T\tC\tT\t23\t.\tAF=1;AQ=23;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||240|1||HGNC|HGNC:4824,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||4044|1||HGNC|HGNC:4823,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||4068|1||HGNC|HGNC:4823,T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||254|1||HGNC|HGNC:4824,T|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3302|1||HGNC|HGNC:4825,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||4062|1||HGNC|HGNC:4823,T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||258|1||HGNC|HGNC:4824,T|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||308|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,T|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||4112|1||HGNC|HGNC:4823,T|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4677|-1|||,T|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||866|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:18:1,17:14:23,14,0:..", - "chr16\t172870\tchr16_172870_G_C\tG\tC\t24\t.\tAF=1;AQ=24;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||6|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||3810|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||3834|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||20|1||HGNC|HGNC:4824,C|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3536|1||HGNC|HGNC:4825,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||3828|1||HGNC|HGNC:4823,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||24|1||HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||74|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,C|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||3878|1||HGNC|HGNC:4823,C|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4443|-1|||,C|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||632|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:18:0,18:20:24,22,0:..", - "chr16\t173116\tchr16_173116_TC_T\tTC\tT\t6\t.\tAF=0.5;AQ=6;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|splice_region_variant&splice_polypyrimidine_tract_variant&intron_variant|LOW|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding||1/2||||||||||1||HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||3563|1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||3587|1||HGNC|HGNC:4823,-|splice_region_variant&splice_polypyrimidine_tract_variant&intron_variant|LOW|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding||1/2||||||||||1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||3783|1||HGNC|HGNC:4825,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||3581|1||HGNC|HGNC:4823,-|non_coding_transcript_exon_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|1/2||||224|||||||1||HGNC|HGNC:4824,-|splice_region_variant&splice_polypyrimidine_tract_variant&intron_variant|LOW|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding||1/1||||||||||1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||3631|1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||4196|-1|||,-|downstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||385|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:16,3:8:6,0,30:..", - "chr16\t173707\tchr16_173707_A_G\tA\tG\t27\t.\tAF=1;AQ=27;AC=2;cadd_raw=0.19;cadd_phred=3.05;CSQ=G|3_prime_UTR_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|3/3||||573|||||||1||HGNC|HGNC:4824,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|||||||||||2973|1||HGNC|HGNC:4823,G|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||4847|1||RFAM|,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|||||||||||2997|1||HGNC|HGNC:4823,G|3_prime_UTR_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|3/3||||510|||||||1||HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBAP1|ENSG00000225323|Transcript|ENST00000438841|unprocessed_pseudogene|||||||||||4373|1||HGNC|HGNC:4825,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|||||||||||2991|1||HGNC|HGNC:4823,G|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||32|1||HGNC|HGNC:4824,G|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||244|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,G|upstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||3041|1||HGNC|HGNC:4823,G|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||3606|-1|||,G|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||47|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:19:0,19:25:27,27,0:..", - "chr16\t176848\tchr16_176848_GC_G\tGC\tG\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBQ1|ENSG00000086506|Transcript|ENST00000199708|protein_coding|||||||||||3610|1||HGNC|HGNC:4833,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3139|1||HGNC|HGNC:4824,-|intron_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding||1/2||||||||||1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||1705|1||RFAM|,-|intron_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding||1/2||||||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3139|1||HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|1/2||||152|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3174|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3386|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|intron_variant&non_coding_transcript_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron||1/1||||||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||464|-1|||,-|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3189|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:17:15,2:6:5,0,28:..", - "chr16\t176953\tchr16_176953_CA_C\tCA\tC\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBQ1|ENSG00000086506|Transcript|ENST00000199708|protein_coding|||||||||||3505|1||HGNC|HGNC:4833,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3244|1||HGNC|HGNC:4824,-|frameshift_variant|HIGH|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|2/3||||158|121|41|K/X|Aag/ag|||1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||1600|1||RFAM|,-|frameshift_variant|HIGH|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|2/3||||85|25|9|K/X|Aag/ag|||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3244|1||HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|1/2||||257|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3279|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||3491|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|2/2||||90|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|||||||||||359|-1|||,-|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3294|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:17:15,2:7:5,0,30:..", - "chr16\t177485\tchr16_177485_AC_A\tAC\tA\t5\t.\tAF=0.5;AQ=5;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=-|upstream_gene_variant|MODIFIER|HBQ1|ENSG00000086506|Transcript|ENST00000199708|protein_coding|||||||||||2973|1||HGNC|HGNC:4833,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000251595|protein_coding|||||||||||3776|1||HGNC|HGNC:4824,-|3_prime_UTR_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000320868|protein_coding|3/3||||541|||||||1||HGNC|HGNC:4823,-|upstream_gene_variant|MODIFIER|Y_RNA|ENSG00000207243|Transcript|ENST00000384514|misc_RNA|||||||||||1068|1||RFAM|,-|3_prime_UTR_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000397797|protein_coding|3/3||||468|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000397806|protein_coding|||||||||||3776|1||HGNC|HGNC:4824,-|non_coding_transcript_exon_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000472694|retained_intron|2/2||||640|||||||1||HGNC|HGNC:4823,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000482565|retained_intron|||||||||||3811|1||HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA2|ENSG00000188536|Transcript|ENST00000484216|protein_coding|||||||||||4023|1|cds_start_NF&cds_end_NF|HGNC|HGNC:4824,-|downstream_gene_variant|MODIFIER|HBA1|ENSG00000206172|Transcript|ENST00000487791|retained_intron|||||||||||212|1||HGNC|HGNC:4823,-|non_coding_transcript_exon_variant|MODIFIER||ENSG00000290010|Transcript|ENST00000702457|lncRNA|1/1||||5|||||||-1|||,-|upstream_gene_variant|MODIFIER||ENSG00000290038|Transcript|ENST00000702607|lncRNA|||||||||||3826|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:17:13,4:6:5,0,31:..", - "chr16\t274052\tchr16_274052_A_G\tA\tG\t28\t.\tAF=1;AQ=28;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|synonymous_variant&NMD_transcript_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000168869|nonsense_mediated_decay|5/15||||353|250|84|L|Tta/Cta|||-1||HGNC|HGNC:9993,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000301679|protein_coding|||||||||||3972|1||HGNC|HGNC:14163,G|synonymous_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000316163|protein_coding|6/17||||434|357|119|D|gaT/gaC|||-1||HGNC|HGNC:9993,G|synonymous_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000359740|protein_coding|5/16||||387|387|129|D|gaT/gaC|||-1||HGNC|HGNC:9993,G|synonymous_variant|LOW|RGS11|ENSG00000076344|Transcript|ENST00000397770|protein_coding|6/17||||453|420|140|D|gaT/gaC|||-1||HGNC|HGNC:9993,G|downstream_gene_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000472466|retained_intron|||||||||||887|-1||HGNC|HGNC:9993,G|non_coding_transcript_exon_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000477143|retained_intron|1/9||||905|||||||-1||HGNC|HGNC:9993,G|non_coding_transcript_exon_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000481672|retained_intron|2/11||||110|||||||-1||HGNC|HGNC:9993,G|non_coding_transcript_exon_variant|MODIFIER|RGS11|ENSG00000076344|Transcript|ENST00000493449|retained_intron|5/9||||1199|||||||-1||HGNC|HGNC:9993,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000600536|nonsense_mediated_decay|||||||||||4109|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000653392|nonsense_mediated_decay|||||||||||4216|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000654053|nonsense_mediated_decay|||||||||||4154|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000659283|nonsense_mediated_decay|||||||||||1869|1||HGNC|HGNC:14163,G|downstream_gene_variant|MODIFIER|FAM234A|ENSG00000167930|Transcript|ENST00000666018|nonsense_mediated_decay|||||||||||4097|1||HGNC|HGNC:14163\tGT:DP:AD:GQ:PL:RNC\t1/1:32:0,32:26:28,29,0:..", - "chr16\t286660\tchr16_286660_G_A\tG\tA\t25\t.\tAF=1;AQ=25;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|synonymous_variant|LOW|PDIA2|ENSG00000185615|Transcript|ENST00000219406|protein_coding|9/11||||1353|1347|449|T|acG/acA|||1||HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000219409|protein_coding|||||||||||3650|1||HGNC|HGNC:680,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000262320|protein_coding|||||||||||780|-1||HGNC|HGNC:903,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000354866|protein_coding|||||||||||781|-1||HGNC|HGNC:903,A|synonymous_variant|LOW|PDIA2|ENSG00000185615|Transcript|ENST00000404312|protein_coding|9/11||||1343|1338|446|T|acG/acA|||1||HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000414650|protein_coding|||||||||||3850|1|cds_end_NF|HGNC|HGNC:680,A|synonymous_variant|LOW|PDIA2|ENSG00000185615|Transcript|ENST00000435833|protein_coding|3/5||||234|234|78|T|acG/acA|||1|cds_start_NF|HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000447871|protein_coding|||||||||||3972|1|cds_end_NF|HGNC|HGNC:680,A|downstream_gene_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000456379|protein_coding|||||||||||1520|1|cds_start_NF&cds_end_NF|HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000457798|protein_coding|||||||||||1530|-1|cds_start_NF|HGNC|HGNC:903,A|downstream_gene_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000461023|retained_intron|||||||||||780|-1||HGNC|HGNC:903,A|downstream_gene_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000462950|protein_coding_CDS_not_defined|||||||||||1084|1||HGNC|HGNC:14180,A|non_coding_transcript_exon_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000467212|retained_intron|8/10||||1418|||||||1||HGNC|HGNC:14180,A|downstream_gene_variant|MODIFIER|ARHGDIG|ENSG00000242173|Transcript|ENST00000477621|retained_intron|||||||||||3820|1||HGNC|HGNC:680,A|non_coding_transcript_exon_variant|MODIFIER|PDIA2|ENSG00000185615|Transcript|ENST00000482665|retained_intron|5/7||||1630|||||||1||HGNC|HGNC:14180\tGT:DP:AD:GQ:PL:RNC\t1/1:22:0,22:19:25,19,0:..", - "chr16\t309953\tchr16_309953_A_G\tA\tG\t33\t.\tAF=0.5;AQ=33;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000262320|protein_coding||4/10||||||||||-1||HGNC|HGNC:903,G|intron_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000354866|protein_coding||4/9||||||||||-1||HGNC|HGNC:903,G|intron_variant&non_coding_transcript_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000461023|retained_intron||3/7||||||||||-1||HGNC|HGNC:903,G|intron_variant&non_coding_transcript_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000481769|protein_coding_CDS_not_defined||3/4||||||||||-1||HGNC|HGNC:903\tGT:DP:AD:GQ:PL:RNC\t0/1:11:6,5:33:33,0,44:..", - "chr16\t346264\tchr16_346264_A_G\tA\tG\t31\t.\tAF=0.5;AQ=31;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|synonymous_variant|LOW|AXIN1|ENSG00000103126|Transcript|ENST00000262320|protein_coding|2/11||||1198|762|254|D|gaT/gaC|||-1||HGNC|HGNC:903,G|synonymous_variant|LOW|AXIN1|ENSG00000103126|Transcript|ENST00000354866|protein_coding|2/10||||924|762|254|D|gaT/gaC|||-1||HGNC|HGNC:903,G|non_coding_transcript_exon_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000461023|retained_intron|1/8||||59|||||||-1||HGNC|HGNC:903,G|intron_variant&non_coding_transcript_variant|MODIFIER|AXIN1|ENSG00000103126|Transcript|ENST00000481769|protein_coding_CDS_not_defined||1/4||||||||||-1||HGNC|HGNC:903\tGT:DP:AD:GQ:PL:RNC\t0/1:26:15,11:31:31,0,40:..", - "chr16\t377013\tchr16_377013_G_C\tG\tC\t28\t.\tAF=0.5;AQ=28;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000250930|protein_coding||4/12||||||||||-1||HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000424078|protein_coding|||||||||||2162|-1|cds_start_NF|HGNC|HGNC:17205,C|intron_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000427313|protein_coding||4/4||||||||||-1|cds_end_NF|HGNC|HGNC:17205,C|intron_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000431232|protein_coding||4/12||||||||||-1||HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000448854|protein_coding|||||||||||1798|-1|cds_start_NF|HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000467452|retained_intron|||||||||||1938|-1||HGNC|HGNC:17205,C|upstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000475348|retained_intron|||||||||||538|-1||HGNC|HGNC:17205,C|downstream_gene_variant|MODIFIER|PGAP6|ENSG00000129925|Transcript|ENST00000476735|protein_coding_CDS_not_defined|||||||||||95|-1||HGNC|HGNC:17205\tGT:DP:AD:GQ:PL:RNC\t0/1:17:11,6:29:28,0,42:..", - "chr16\t520623\tchr16_520623_G_A\tG\tA\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=A|intron_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000262305|protein_coding||13/13||||||||||1||HGNC|HGNC:17224,A|intron_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000434585|protein_coding||14/14||||||||||1||HGNC|HGNC:17224,A|intron_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000450428|protein_coding||11/11||||||||||1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000461009|retained_intron|||||||||||1515|1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000464263|retained_intron|||||||||||861|1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|RAB11FIP3|ENSG00000090565|Transcript|ENST00000487899|retained_intron|||||||||||1605|1||HGNC|HGNC:17224,A|downstream_gene_variant|MODIFIER|LINC00235|ENSG00000277142|Transcript|ENST00000622160|lncRNA|||||||||||4532|-1||HGNC|HGNC:14138\tGT:DP:AD:GQ:PL:RNC\t0/1:18:9,9:34:34,0,44:..", - "chr16\t551632\tchr16_551632_T_C\tT\tC\t21\t.\tAF=1;AQ=21;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|synonymous_variant|LOW|CAPN15|ENSG00000103326|Transcript|ENST00000219611|protein_coding|9/14||||2820|2313|771|G|ggT/ggC|||1||HGNC|HGNC:11182,C|downstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000562370|protein_coding|||||||||||4240|1|cds_end_NF|HGNC|HGNC:11182,C|upstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000565010|retained_intron|||||||||||665|1||HGNC|HGNC:11182,C|intron_variant&non_coding_transcript_variant|MODIFIER||ENSG00000261691|Transcript|ENST00000565879|lncRNA||1/1||||||||||-1|||,C|upstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000566977|protein_coding|||||||||||1123|1|cds_start_NF|HGNC|HGNC:11182,C|downstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000568988|protein_coding|||||||||||3423|1|cds_end_NF|HGNC|HGNC:11182,C|downstream_gene_variant|MODIFIER|CAPN15|ENSG00000103326|Transcript|ENST00000637507|protein_coding|||||||||||3601|1|cds_end_NF|HGNC|HGNC:11182\tGT:DP:AD:GQ:PL:RNC\t1/1:13:0,13:15:21,16,0:..", - "chr16\t582180\tchr16_582180_G_C\tG\tC\t25\t.\tAF=1;AQ=25;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000026218|protein_coding||9/9||||||||||1||HGNC|HGNC:14135,C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000321878|protein_coding||9/10||||||||||1||HGNC|HGNC:14135,C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000409527|protein_coding||10/11||||||||||1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000420990|nonsense_mediated_decay||6/7||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000422307|protein_coding|||||||||||4946|1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000443147|nonsense_mediated_decay||10/11||||||||||1||HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000470411|protein_coding|||||||||||4963|1||HGNC|HGNC:14135,C|non_coding_transcript_exon_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000476438|retained_intron|1/2||||420|||||||1||HGNC|HGNC:14135,C|intron_variant&non_coding_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000480424|retained_intron||3/4||||||||||1||HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000537901|retained_intron|||||||||||3378|1||HGNC|HGNC:14135,C|intron_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000540241|protein_coding||2/3||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|upstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000540548|protein_coding_CDS_not_defined|||||||||||310|1||HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000544860|protein_coding_CDS_not_defined|||||||||||3337|1||HGNC|HGNC:14135,C|upstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000634341|retained_intron|||||||||||697|1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000635205|nonsense_mediated_decay||3/4||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000635909|nonsense_mediated_decay||8/9||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000635935|protein_coding_CDS_not_defined|||||||||||1403|1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000636005|nonsense_mediated_decay||8/9||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000636657|nonsense_mediated_decay||10/11||||||||||1||HGNC|HGNC:14135,C|intron_variant&NMD_transcript_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000637468|nonsense_mediated_decay||6/7||||||||||1|cds_start_NF|HGNC|HGNC:14135,C|downstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000638143|nonsense_mediated_decay|||||||||||1258|1|cds_start_NF|HGNC|HGNC:14135,C|upstream_gene_variant|MODIFIER|PIGQ|ENSG00000007541|Transcript|ENST00000638152|protein_coding_CDS_not_defined|||||||||||1404|1||HGNC|HGNC:14135\tGT:DP:AD:GQ:PL:RNC\t1/1:6:0,6:9:25,8,0:..", - "chr16\t627629\tchr16_627629_T_C\tT\tC\t20\t.\tAF=1;AQ=20;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000248139|protein_coding|6/6||||1079|||||||1||HGNC|HGNC:18285,C|upstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000319070|protein_coding|||||||||||3356|1||HGNC|HGNC:30912,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000509637|nonsense_mediated_decay|||||||||||1636|1|cds_start_NF|HGNC|HGNC:18285,C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000535977|protein_coding|7/7||||1075|||||||1||HGNC|HGNC:18285,C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000538492|protein_coding|7/7||||927|||||||1||HGNC|HGNC:18285,C|3_prime_UTR_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000539661|protein_coding|7/7||||967|||||||1||HGNC|HGNC:18285,C|non_coding_transcript_exon_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000561781|retained_intron|2/2||||796|||||||1||HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000563109|protein_coding|||||||||||46|1|cds_start_NF&cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000564703|protein_coding|||||||||||1512|1|cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000565511|nonsense_mediated_decay|||||||||||1546|1||HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000566290|protein_coding|||||||||||214|1|cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000568586|protein_coding|||||||||||1508|1|cds_end_NF|HGNC|HGNC:18285,C|downstream_gene_variant|MODIFIER|RAB40C|ENSG00000197562|Transcript|ENST00000569575|protein_coding|||||||||||1603|1|cds_end_NF|HGNC|HGNC:18285,C|upstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000573440|retained_intron|||||||||||1610|1||HGNC|HGNC:30912\tGT:DP:AD:GQ:PL:RNC\t1/1:13:0,13:13:20,13,0:..", - "chr16\t638557\tchr16_638557_A_C\tA\tC\t24\t.\tAF=1;AQ=24;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000301686|protein_coding|||||||||||2252|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000307650|protein_coding|||||||||||3271|1||HGNC|HGNC:14142,C|downstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000319070|protein_coding|||||||||||4440|1||HGNC|HGNC:30912,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000338401|protein_coding|||||||||||2215|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000397664|protein_coding|||||||||||2206|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000397665|protein_coding|||||||||||2267|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000397666|protein_coding|||||||||||2255|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000448973|retained_intron|||||||||||2247|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000456420|nonsense_mediated_decay|||||||||||2318|-1|cds_start_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000474840|nonsense_mediated_decay|||||||||||3372|1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000491999|nonsense_mediated_decay|||||||||||3289|1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000564039|nonsense_mediated_decay|||||||||||2279|-1|cds_start_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000565163|protein_coding|||||||||||2297|-1|cds_start_NF&cds_end_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000565799|retained_intron|||||||||||2290|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000568077|nonsense_mediated_decay|||||||||||2226|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000568773|protein_coding|||||||||||2322|-1|cds_start_NF|HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000568830|protein_coding|||||||||||2199|-1|cds_end_NF|HGNC|HGNC:14141,C|downstream_gene_variant|MODIFIER|WFIKKN1|ENSG00000127578|Transcript|ENST00000573440|retained_intron|||||||||||4441|1||HGNC|HGNC:30912,C|intron_variant&non_coding_transcript_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000611328|protein_coding_CDS_not_defined||1/3||||||||||1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|METTL26|ENSG00000130731|Transcript|ENST00000614890|protein_coding|||||||||||2191|-1||HGNC|HGNC:14141,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000615744|protein_coding_CDS_not_defined|||||||||||3894|1||HGNC|HGNC:14142,C|non_coding_transcript_exon_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000619114|protein_coding_CDS_not_defined|2/2||||576|||||||1||HGNC|HGNC:14142,C|non_coding_transcript_exon_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000619377|protein_coding_CDS_not_defined|2/2||||664|||||||1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000620462|retained_intron|||||||||||3926|1||HGNC|HGNC:14142,C|upstream_gene_variant|MODIFIER|MCRIP2|ENSG00000172366|Transcript|ENST00000629534|protein_coding|||||||||||3292|1||HGNC|HGNC:14142\tGT:DP:AD:GQ:PL:RNC\t1/1:14:0,14:16:24,17,0:..", - "chr16\t655844\tchr16_655844_T_C\tT\tC\t23\t.\tAF=1;AQ=23;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=C|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000293879|protein_coding|17/41||||1973|1921|641|L|Ttg/Ctg|||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000420061|retained_intron|17/17||||1985|||||||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000546516|retained_intron|3/20||||614|||||||1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000547407|retained_intron|||||||||||431|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548844|protein_coding_CDS_not_defined|||||||||||2716|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548859|retained_intron|||||||||||589|1||HGNC|HGNC:26960,C|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000549091|protein_coding|17/41||||2013|1921|641|L|Ttg/Ctg|||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000549648|retained_intron|17/17||||1988|||||||1||HGNC|HGNC:26960,C|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000550593|retained_intron|||||||||||2374|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000550739|protein_coding|||||||||||3401|1|cds_start_NF&cds_end_NF|HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552648|protein_coding_CDS_not_defined|4/7||||455|||||||1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552683|retained_intron|||||||||||2014|1||HGNC|HGNC:26960,C|upstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552728|nonsense_mediated_decay|||||||||||577|1|cds_start_NF|HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552943|retained_intron|15/26||||3591|||||||1||HGNC|HGNC:26960,C|non_coding_transcript_exon_variant|MODIFIER||ENSG00000262528|Transcript|ENST00000573609|lncRNA|1/2||||351|||||||-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:14:0,14:16:23,17,0:..", - "chr16\t667523\tchr16_667523_G_T\tG\tT\t27\t.\tAF=1;AQ=27;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000293879|protein_coding|41/41||||5233|5181|1727|P|ccG/ccT|||1||HGNC|HGNC:26960,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000315082|protein_coding|||||||||||609|1||HGNC|HGNC:21169,T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000315764|protein_coding|6/6||||1147|834|278|P|ccG/ccT|||1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000546516|retained_intron|||||||||||4090|1||HGNC|HGNC:26960,T|missense_variant|MODERATE|WDR90|ENSG00000161996|Transcript|ENST00000546896|protein_coding|2/2||||89|89|30|R/L|cGt/cTt|||1|cds_start_NF|HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000546923|retained_intron|||||||||||4787|1||HGNC|HGNC:26960,T|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000547407|retained_intron|24/24||||3541|||||||1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000547543|protein_coding_CDS_not_defined|||||||||||778|1||HGNC|HGNC:26960,T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000547944|protein_coding|7/7||||1365|978|326|P|ccG/ccT|||1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548448|retained_intron|||||||||||1162|1||HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000548603|protein_coding_CDS_not_defined|||||||||||4086|1||HGNC|HGNC:26960,T|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000549024|retained_intron|12/12||||1951|||||||1||HGNC|HGNC:26960,T|synonymous_variant|LOW|WDR90|ENSG00000161996|Transcript|ENST00000549091|protein_coding|41/41||||5279|5187|1729|P|ccG/ccT|||1||HGNC|HGNC:26960,T|3_prime_UTR_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000551100|protein_coding|3/3||||315|||||||1|cds_start_NF|HGNC|HGNC:26960,T|downstream_gene_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552683|retained_intron|||||||||||4085|1||HGNC|HGNC:26960,T|3_prime_UTR_variant&NMD_transcript_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000552728|nonsense_mediated_decay|22/22||||2826|||||||1|cds_start_NF|HGNC|HGNC:26960,T|non_coding_transcript_exon_variant|MODIFIER|WDR90|ENSG00000161996|Transcript|ENST00000553080|retained_intron|6/6||||1635|||||||1||HGNC|HGNC:26960,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000561711|retained_intron|||||||||||4394|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000561929|protein_coding|||||||||||686|1|cds_start_NF&cds_end_NF|HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000561983|nonsense_mediated_decay|||||||||||582|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000562333|nonsense_mediated_decay|||||||||||664|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000562598|retained_intron|||||||||||659|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000562708|retained_intron|||||||||||589|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000563134|protein_coding|||||||||||583|1|cds_end_NF|HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000563637|nonsense_mediated_decay|||||||||||628|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000563776|retained_intron|||||||||||582|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000565004|retained_intron|||||||||||3559|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000566214|nonsense_mediated_decay|||||||||||628|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000566965|retained_intron|||||||||||1037|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000567017|retained_intron|||||||||||639|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000567589|retained_intron|||||||||||3005|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000568636|retained_intron|||||||||||1135|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000568950|retained_intron|||||||||||655|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569358|retained_intron|||||||||||2932|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569675|retained_intron|||||||||||612|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569706|retained_intron|||||||||||609|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000569943|protein_coding_CDS_not_defined|||||||||||830|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000570092|retained_intron|||||||||||601|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000570280|nonsense_mediated_decay|||||||||||630|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000602564|retained_intron|||||||||||657|1||HGNC|HGNC:21169,T|upstream_gene_variant|MODIFIER|RHOT2|ENSG00000140983|Transcript|ENST00000697194|protein_coding|||||||||||577|1||HGNC|HGNC:21169\tGT:DP:AD:GQ:PL:RNC\t1/1:22:0,22:23:27,24,0:..", - "chr16\t690466\tchr16_690466_A_G\tA\tG\t26\t.\tAF=1;AQ=26;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000248142|protein_coding|||||||||||22|-1||HGNC|HGNC:20852,G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000293883|protein_coding|||||||||||68|-1||HGNC|HGNC:20852,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000397621|protein_coding|||||||||||2034|-1||HGNC|HGNC:14150,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000562563|protein_coding|||||||||||2461|-1||HGNC|HGNC:14150,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000562585|protein_coding_CDS_not_defined|||||||||||4192|-1||HGNC|HGNC:14150,G|downstream_gene_variant|MODIFIER|FBXL16|ENSG00000127585|Transcript|ENST00000562648|retained_intron|||||||||||2032|-1||HGNC|HGNC:14150,G|intron_variant&non_coding_transcript_variant|MODIFIER||ENSG00000261659|Transcript|ENST00000566927|lncRNA||1/1||||||||||1|||,G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000567014|retained_intron|||||||||||3537|-1||HGNC|HGNC:20852,G|non_coding_transcript_exon_variant|MODIFIER||ENSG00000261659|Transcript|ENST00000575305|retained_intron|1/1||||1466|||||||1|||,G|upstream_gene_variant|MODIFIER|WDR24|ENSG00000127580|Transcript|ENST00000647644|protein_coding|||||||||||219|-1||HGNC|HGNC:20852\tGT:DP:AD:GQ:PL:RNC\t1/1:17:0,17:20:26,21,0:..", - "chr16\t723341\tchr16_723341_G_A\tG\tA\t23\t.\tAF=1;AQ=23;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000219535|protein_coding|||||||||||768|1||HGNC|HGNC:14152,A|intron_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000293889|protein_coding||11/13||||||||||-1||HGNC|HGNC:14153,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000341413|protein_coding|||||||||||3617|1||HGNC|HGNC:14177,A|intron_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000345165|protein_coding||11/13||||||||||-1||HGNC|HGNC:14153,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000389701|retained_intron|||||||||||4064|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000389703|protein_coding|||||||||||3765|1||HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000423653|protein_coding_CDS_not_defined|||||||||||1586|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000439619|retained_intron|||||||||||1209|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000460023|retained_intron|||||||||||1566|-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000463539|retained_intron||9/11||||||||||-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000466708|retained_intron||10/12||||||||||-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000471861|retained_intron|||||||||||1660|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000474647|retained_intron|||||||||||1782|-1||HGNC|HGNC:14153,A|non_coding_transcript_exon_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000478979|retained_intron|4/4||||2296|||||||-1||HGNC|HGNC:14153,A|non_coding_transcript_exon_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000481804|retained_intron|4/5||||2627|||||||-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000482152|retained_intron||3/4||||||||||-1||HGNC|HGNC:14153,A|non_coding_transcript_exon_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000482878|retained_intron|4/4||||2699|||||||-1||HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000485091|retained_intron||10/11||||||||||-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000538176|retained_intron|||||||||||1201|-1||HGNC|HGNC:14153,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000544996|retained_intron|||||||||||1643|-1||HGNC|HGNC:14153,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000549114|protein_coding|||||||||||3595|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000561546|protein_coding|||||||||||3905|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000561750|retained_intron|||||||||||3934|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000562141|protein_coding|||||||||||3778|1|cds_end_NF|HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000562187|protein_coding|||||||||||3765|1|cds_end_NF|HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000563792|protein_coding|||||||||||4398|1|cds_end_NF|HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000564000|protein_coding|||||||||||756|1||HGNC|HGNC:14152,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000564537|protein_coding|||||||||||3765|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000564545|protein_coding|||||||||||3921|1||HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000564640|retained_intron|||||||||||1029|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000566437|retained_intron|||||||||||833|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000566525|retained_intron|||||||||||752|1||HGNC|HGNC:14152,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000567414|protein_coding|||||||||||3952|1|cds_end_NF|HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000567696|retained_intron|||||||||||3977|1||HGNC|HGNC:14177,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000568141|protein_coding|||||||||||4005|1|cds_end_NF|HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|METRN|ENSG00000103260|Transcript|ENST00000568223|protein_coding|||||||||||3686|1||HGNC|HGNC:14151,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000568916|protein_coding|||||||||||751|1|cds_start_NF|HGNC|HGNC:14152,A|upstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000569143|retained_intron|||||||||||3977|1||HGNC|HGNC:14177,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000569529|protein_coding|||||||||||751|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|ANTKMT|ENSG00000103254|Transcript|ENST00000570237|retained_intron|||||||||||751|1||HGNC|HGNC:14152,A|downstream_gene_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000650995|protein_coding|||||||||||2453|-1|cds_end_NF|HGNC|HGNC:14153,A|intron_variant&non_coding_transcript_variant|MODIFIER|CCDC78|ENSG00000162004|Transcript|ENST00000682391|retained_intron||7/9||||||||||-1||HGNC|HGNC:14153\tGT:DP:AD:GQ:PL:RNC\t1/1:17:0,17:19:23,21,0:..", - "chr16\t739761\tchr16_739761_A_G\tA\tG\t22\t.\tAF=1;AQ=22;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000251588|protein_coding||1/10||||||||||-1||HGNC|HGNC:14179,G|5_prime_UTR_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000540986|protein_coding|1/10||||1174|||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000562421|protein_coding|||||||||||2006|-1|cds_end_NF|HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000562752|retained_intron||1/4||||||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000563534|protein_coding_CDS_not_defined|||||||||||2297|-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565065|nonsense_mediated_decay||2/5||||||||||-1||HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565341|retained_intron||1/3||||||||||-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565425|nonsense_mediated_decay||1/9||||||||||-1||HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000565693|protein_coding_CDS_not_defined||1/2||||||||||-1||HGNC|HGNC:14179,G|intron_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000566614|protein_coding||1/4||||||||||-1|cds_end_NF|HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000567172|protein_coding_CDS_not_defined||1/1||||||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000567403|protein_coding|||||||||||2009|-1|cds_end_NF|HGNC|HGNC:14179,G|intron_variant&non_coding_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000567455|protein_coding_CDS_not_defined||1/2||||||||||-1||HGNC|HGNC:14179,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000568545|protein_coding|||||||||||1872|-1||HGNC|HGNC:14179,G|downstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000569604|protein_coding_CDS_not_defined|||||||||||4236|1||HGNC|HGNC:14177,G|upstream_gene_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000569759|protein_coding_CDS_not_defined|||||||||||3391|-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000570066|nonsense_mediated_decay||1/4||||||||||-1||HGNC|HGNC:14179,G|intron_variant&NMD_transcript_variant|MODIFIER|CIAO3|ENSG00000103245|Transcript|ENST00000570289|nonsense_mediated_decay||1/3||||||||||-1||HGNC|HGNC:14179,G|downstream_gene_variant|MODIFIER|HAGHL|ENSG00000103253|Transcript|ENST00000647875|protein_coding_CDS_not_defined|||||||||||4408|1||HGNC|HGNC:14177\tGT:DP:AD:GQ:PL:RNC\t1/1:14:0,14:14:22,14,0:..", - "chr16\t766294\tchr16_766294_T_G\tT\tG\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000382862|protein_coding||11/16||||||||||1||HGNC|HGNC:7371,G|upstream_gene_variant|MODIFIER|MIR662|ENSG00000207579|Transcript|ENST00000384847|miRNA|||||||||||3889|1||HGNC|HGNC:32918,G|downstream_gene_variant|MODIFIER|MSLNL|ENSG00000162006|Transcript|ENST00000543963|protein_coding|||||||||||3134|-1|cds_start_NF|HGNC|HGNC:14170,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000545450|protein_coding||12/17||||||||||1||HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000561896|protein_coding||2/6||||||||||1|cds_start_NF&cds_end_NF|HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000563651|protein_coding||10/10||||||||||1|cds_end_NF|HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000563941|protein_coding||12/17||||||||||1||HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000566269|protein_coding||2/7||||||||||1|cds_start_NF|HGNC|HGNC:7371,G|intron_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000566549|protein_coding||11/16||||||||||1||HGNC|HGNC:7371,G|downstream_gene_variant|MODIFIER|MSLN|ENSG00000102854|Transcript|ENST00000569566|protein_coding|||||||||||1258|1|cds_end_NF|HGNC|HGNC:7371,G|downstream_gene_variant|MODIFIER||ENSG00000279136|Transcript|ENST00000623562|TEC|||||||||||2825|-1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:19:12,7:29:29,0,43:..", - "chr16\t789996\tchr16_789996_T_C\tT\tC\t36\t.\tAF=0.5;AQ=36;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000007264|protein_coding|||||||||||1615|-1||HGNC|HGNC:14173,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000262315|protein_coding||4/21||||||||||1||HGNC|HGNC:18435,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000317063|protein_coding||4/21||||||||||1||HGNC|HGNC:18435,C|splice_polypyrimidine_tract_variant&intron_variant|LOW|CHTF18|ENSG00000127586|Transcript|ENST00000426047|protein_coding||2/6||||||||||1|cds_start_NF&cds_end_NF|HGNC|HGNC:18435,C|intron_variant&NMD_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000440239|nonsense_mediated_decay||4/13||||||||||1||HGNC|HGNC:18435,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000455171|protein_coding||3/20||||||||||1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000461268|protein_coding_CDS_not_defined|||||||||||2528|1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000464728|retained_intron||3/17||||||||||1||HGNC|HGNC:18435,C|splice_polypyrimidine_tract_variant&intron_variant&non_coding_transcript_variant|LOW|CHTF18|ENSG00000127586|Transcript|ENST00000471202|retained_intron||4/18||||||||||1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000479976|retained_intron||4/6||||||||||1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000484349|retained_intron||1/3||||||||||1||HGNC|HGNC:18435,C|intron_variant&non_coding_transcript_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000491530|protein_coding_CDS_not_defined||2/5||||||||||1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000493715|protein_coding_CDS_not_defined|||||||||||4706|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000561734|protein_coding|||||||||||2015|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000562070|protein_coding|||||||||||2527|-1|cds_start_NF|HGNC|HGNC:14173,C|downstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000563545|nonsense_mediated_decay|||||||||||360|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000563560|protein_coding|||||||||||1667|-1|cds_end_NF|HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000565377|protein_coding|||||||||||1615|-1|cds_end_NF|HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000565503|nonsense_mediated_decay|||||||||||1656|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000565787|retained_intron|||||||||||1141|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000565809|protein_coding|||||||||||1625|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000567114|protein_coding|||||||||||1599|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000567283|nonsense_mediated_decay|||||||||||1663|-1||HGNC|HGNC:14173,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000567620|retained_intron|||||||||||703|1||HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000569270|nonsense_mediated_decay|||||||||||255|1|cds_start_NF|HGNC|HGNC:18435,C|upstream_gene_variant|MODIFIER|RPUSD1|ENSG00000007376|Transcript|ENST00000569601|protein_coding|||||||||||1662|-1|cds_end_NF|HGNC|HGNC:14173,C|downstream_gene_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000570058|protein_coding_CDS_not_defined|||||||||||656|1||HGNC|HGNC:18435,C|intron_variant|MODIFIER|CHTF18|ENSG00000127586|Transcript|ENST00000631357|protein_coding||5/23||||||||||1||HGNC|HGNC:18435\tGT:DP:AD:GQ:PL:RNC\t0/1:15:7,8:36:36,0,49:..", - "chr16\t813336\tchr16_813336_T_C\tT\tC\t32\t.\tAF=0.5;AQ=32;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER||ENSG00000287855|Transcript|ENST00000655150|lncRNA|||||||||||4153|1|||\tGT:DP:AD:GQ:PL:RNC\t0/1:14:5,9:32:32,0,39:..", - "chr16\t893361\tchr16_893361_T_C\tT\tC\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000262301|protein_coding||4/10||||||||||-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000543238|protein_coding||1/7||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||5/11||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562226|nonsense_mediated_decay||6/7||||||||||-1||HGNC|HGNC:14154,C|upstream_gene_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000565198|retained_intron|||||||||||109|-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000566627|protein_coding||3/5||||||||||-1|cds_end_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568897|protein_coding||3/9||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568964|nonsense_mediated_decay||4/5||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||4/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154\tGT:DP:AD:GQ:PL:RNC\t0/1:17:6,11:34:34,0,45:..", - "chr16\t947473\tchr16_947473_T_C\tT\tC\t29\t.\tAF=0.5;AQ=29;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000262301|protein_coding||2/10||||||||||-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000543238|protein_coding||1/7||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||2/11||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562226|nonsense_mediated_decay||2/7||||||||||-1||HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562380|protein_coding||2/3||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|5_prime_UTR_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000566627|protein_coding|1/6||||172|||||||-1|cds_end_NF|HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000567595|nonsense_mediated_decay||2/4||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568897|protein_coding||2/9||||||||||-1||HGNC|HGNC:14154,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568964|nonsense_mediated_decay||2/5||||||||||-1|cds_start_NF|HGNC|HGNC:14154,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||2/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154\tGT:DP:AD:GQ:PL:RNC\t0/1:23:8,15:30:29,0,47:..", - "chr16\t964119\tchr16_964119_A_G\tA\tG\t24\t.\tAF=1;AQ=24;AC=2;cadd_raw=-2;cadd_phred=-2;CSQ=G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000262301|protein_coding||1/10||||||||||-1||HGNC|HGNC:14154,G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000543238|protein_coding||1/7||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||1/11||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000562226|nonsense_mediated_decay||1/7||||||||||-1||HGNC|HGNC:14154,G|missense_variant|MODERATE|LMF1|ENSG00000103227|Transcript|ENST00000562380|protein_coding|1/4||||4|4|2|Y/H|Tat/Cat|||-1|cds_start_NF|HGNC|HGNC:14154,G|intron_variant&non_coding_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000566609|protein_coding_CDS_not_defined||1/2||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000567595|nonsense_mediated_decay||1/4||||||||||-1|cds_start_NF|HGNC|HGNC:14154,G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568897|protein_coding||1/9||||||||||-1||HGNC|HGNC:14154,G|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000568964|nonsense_mediated_decay||1/5||||||||||-1|cds_start_NF|HGNC|HGNC:14154,G|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||1/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154,G|downstream_gene_variant|MODIFIER||ENSG00000276931|Transcript|ENST00000620075|lncRNA|||||||||||4256|-1|||\tGT:DP:AD:GQ:PL:RNC\t1/1:29:0,29:21:24,24,0:..", - "chr16\t977069\tchr16_977069_T_C\tT\tC\t34\t.\tAF=0.5;AQ=34;AC=1;cadd_raw=-2;cadd_phred=-2;CSQ=C|upstream_gene_variant|MODIFIER|SOX8|ENSG00000005513|Transcript|ENST00000293894|protein_coding|||||||||||4701|1||HGNC|HGNC:11203,C|intron_variant&NMD_transcript_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000545827|nonsense_mediated_decay||1/11||||||||||-1||HGNC|HGNC:14154,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000562570|lncRNA|2/2||||1914|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000563837|lncRNA|4/4||||423|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000563863|lncRNA|4/4||||423|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000565069|lncRNA|3/3||||265|||||||-1||HGNC|HGNC:53928,C|upstream_gene_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000565139|lncRNA|||||||||||143|-1||HGNC|HGNC:53928,C|intron_variant&non_coding_transcript_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000565467|lncRNA||1/1||||||||||-1||HGNC|HGNC:53928,C|upstream_gene_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000567961|lncRNA|||||||||||157|-1||HGNC|HGNC:53928,C|intron_variant&non_coding_transcript_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000568394|lncRNA||1/2||||||||||-1||HGNC|HGNC:53928,C|intron_variant|MODIFIER|LMF1|ENSG00000103227|Transcript|ENST00000570014|protein_coding||1/6||||||||||-1|cds_end_NF|HGNC|HGNC:14154,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000655952|lncRNA|3/3||||743|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000662104|lncRNA|3/3||||322|||||||-1||HGNC|HGNC:53928,C|non_coding_transcript_exon_variant|MODIFIER|CEROX1|ENSG00000260807|Transcript|ENST00000669274|lncRNA|3/3||||225|||||||-1||HGNC|HGNC:53928\tGT:DP:AD:GQ:PL:RNC\t0/1:17:6,11:34:34,0,44:.." - ] + "ad2f3def07bee1f4bab9cfe456dada3e", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=121, phased=false, phasedAutodetect=false]" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-08-12T10:10:59.241809478" + "timestamp": "2024-10-08T11:44:29.495925133" } } \ No newline at end of file diff --git a/subworkflows/local/snv_annotation/tests/nextflow.config b/subworkflows/local/snv_annotation/tests/nextflow.config index 2de8ad16..62fc7b69 100644 --- a/subworkflows/local/snv_annotation/tests/nextflow.config +++ b/subworkflows/local/snv_annotation/tests/nextflow.config @@ -1,5 +1,5 @@ process { - withName: 'DEEPVARIANT' { + withName: 'DEEPVARIANT_RUNDEEPVARIANT' { ext.prefix = { intervals ? "${meta.id}_${intervals}_deepvariant" : "${meta.id}_deepvariant" } ext.args = { [ '--model_type WGS', @@ -41,7 +41,7 @@ process { ].join(' ') } - withName: '.*:SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { + withName: 'SHORT_VARIANT_CALLING:BCFTOOLS_FILLTAGS' { ext.prefix = { "${meta.id}_ac" } ext.args = [ '--no-version', @@ -61,7 +61,11 @@ process { ext.args = '-x map-hifi' } - withName: 'ENSEMBLVEP_VEP' { + withName: 'UNTAR' { + ext.prefix = { "${name}".contains('merged') ? './vep_cache/homo_sapiens_merged/' : './vep_cache/homo_sapiens/' } + } + + withName: 'SNV_ANNOTATION:ENSEMBLVEP_SNV' { ext.args = { [ '--offline', '--vcf', diff --git a/subworkflows/local/structural_variant_calling.nf b/subworkflows/local/structural_variant_calling.nf deleted file mode 100644 index be738c63..00000000 --- a/subworkflows/local/structural_variant_calling.nf +++ /dev/null @@ -1,33 +0,0 @@ -include { SNIFFLES as SNIFFLES_MULTISAMPLE } from '../../modules/nf-core/sniffles/main' -include { SNIFFLES } from '../../modules/nf-core/sniffles/main' - -workflow STRUCTURAL_VARIANT_CALLING { - - take: - ch_bam_bai // channel: [ val(meta), [[ bam ], [bai]] ] - ch_fasta - ch_fai - ch_tandem_repeats - - main: - ch_versions = Channel.empty() - - SNIFFLES (ch_bam_bai, ch_fasta, ch_tandem_repeats, true, true) - - SNIFFLES.out.snf - .map { meta, snf -> [ [ 'id': meta.project ], snf ] } - .groupTuple() - .map { meta, snfs -> [ meta, snfs, [] ] } - .set{ ch_multisample_input } - - SNIFFLES_MULTISAMPLE( ch_multisample_input, ch_fasta, ch_tandem_repeats, true, false ) - - ch_versions = ch_versions.mix(SNIFFLES.out.versions) - ch_versions = ch_versions.mix(SNIFFLES_MULTISAMPLE.out.versions) - - emit: - ch_sv_calls_vcf = SNIFFLES.out.vcf // channel: [ val(meta), vcf] - ch_multisample = SNIFFLES_MULTISAMPLE.out.vcf // channel: [ val(meta), multisample.sniffles.vcf ] - versions = ch_versions // channel: [ versions.yml ] -} - diff --git a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf index 91cb7ac5..e9c77c47 100644 --- a/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_nallo_pipeline/main.nf @@ -8,17 +8,14 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -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' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -35,36 +32,37 @@ include { workflowCitation } from '../../nf-core/utils_nfcore_pipeline' // Define subworkflows and their associated "--skip" // def workflowSkips = [ - assembly : "skip_assembly_wf", - raw_read_qc : "skip_raw_read_qc", - aligned_read_qc : "skip_aligned_read_qc", - mapping : "skip_mapping_wf", - snv_calling : "skip_short_variant_calling", + assembly : "skip_genome_assembly", + mapping : "skip_alignment", + snv_calling : "skip_snv_calling", snv_annotation : "skip_snv_annotation", + sv_annotation : "skip_sv_annotation", call_paralogs : "skip_call_paralogs", cnv_calling : "skip_cnv_calling", - phasing : "skip_phasing_wf", + phasing : "skip_phasing", rank_variants : "skip_rank_variants", repeat_calling : "skip_repeat_calling", repeat_annotation: "skip_repeat_annotation", - methylation : "skip_methylation_wf", + methylation : "skip_methylation_pileups", + qc : "skip_qc", ] // // E.g., the CNV-calling workflow depends on mapping and snv_calling and can't run without them. // def workflowDependencies = [ - aligned_read_qc : ["mapping"], assembly : ["mapping"], call_paralogs : ["mapping"], snv_calling : ["mapping"], + qc : ["mapping"], + sv_annotation : ["mapping"], snv_annotation : ["mapping", "snv_calling"], cnv_calling : ["mapping", "snv_calling"], phasing : ["mapping", "snv_calling"], - rank_variants : ["mapping", "snv_calling", "snv_annotation"], + rank_variants : ["mapping", "snv_calling", "snv_annotation", "sv_annotation"], repeat_calling : ["mapping", "snv_calling", "phasing"], repeat_annotation: ["mapping", "snv_calling", "phasing", "repeat_calling"], - methylation : ["mapping", "snv_calling", "phasing"], + methylation : ["mapping", "snv_calling"] ] // @@ -74,44 +72,47 @@ def fileDependencies = [ mapping : ["fasta", "somalier_sites"], assembly : ["fasta", "par_regions"], // The assembly workflow should be split into two - assembly and variant calling (requires ref) snv_calling : ["fasta", "par_regions"], - snv_annotation : ["snp_db", "vep_cache", "vep_plugin_files", "variant_consequences_snv"], - cnv_calling : ["hificnv_xy", "hificnv_xx", "hificnv_exclude"], - rank_variants : ["reduced_penetrance", "score_config_snv"], + snv_annotation : ["echtvar_snv_databases", "vep_cache", "vep_plugin_files", "variant_consequences_snvs"], + sv_annotation : ["svdb_sv_databases", "vep_cache", "vep_plugin_files", "variant_consequences_svs"], + cnv_calling : ["hificnv_expected_xy_cn", "hificnv_expected_xx_cn", "hificnv_excluded_regions"], + rank_variants : ["genmod_reduced_penetrance", "genmod_score_config_snvs", "genmod_score_config_svs"], repeat_calling : ["trgt_repeats"], - repeat_annotation: ["variant_catalog"], + repeat_annotation: ["stranger_repeat_catalog"], ] def parameterStatus = [ workflow: [ - skip_short_variant_calling: params.skip_short_variant_calling, - skip_phasing_wf : params.skip_phasing_wf, - skip_methylation_wf : params.skip_methylation_wf, - skip_rank_variants : params.skip_rank_variants, - skip_repeat_calling : params.skip_repeat_calling, - skip_repeat_annotation : params.skip_repeat_annotation, - skip_snv_annotation : params.skip_snv_annotation, - skip_call_paralogs : params.skip_call_paralogs, - skip_cnv_calling : params.skip_cnv_calling, - skip_mapping_wf : params.skip_mapping_wf, - skip_aligned_read_qc : params.skip_aligned_read_qc, - skip_raw_read_qc : params.skip_raw_read_qc, - skip_assembly_wf : params.skip_assembly_wf, + skip_snv_calling : params.skip_snv_calling, + skip_phasing : params.skip_phasing, + skip_methylation_pileups: params.skip_methylation_pileups, + skip_rank_variants : params.skip_rank_variants, + skip_repeat_calling : params.skip_repeat_calling, + skip_repeat_annotation : params.skip_repeat_annotation, + skip_snv_annotation : params.skip_snv_annotation, + skip_sv_annotation : params.skip_sv_annotation, + skip_call_paralogs : params.skip_call_paralogs, + skip_cnv_calling : params.skip_cnv_calling, + skip_alignment : params.skip_alignment, + skip_qc : params.skip_qc, + skip_genome_assembly : params.skip_genome_assembly, ], files: [ - par_regions : params.par_regions, - snp_db : params.snp_db, - somalier_sites : params.somalier_sites, - vep_cache : params.vep_cache, - hificnv_xy : params.hificnv_xy, - hificnv_xx : params.hificnv_xx, - hificnv_exclude : params.hificnv_exclude, - fasta : params.fasta, - trgt_repeats : params.trgt_repeats, - variant_catalog : params.variant_catalog, - score_config_snv : params.score_config_snv, - reduced_penetrance : params.reduced_penetrance, - score_config_snv : params.score_config_snv, - variant_consequences_snv: params.variant_consequences_snv, + par_regions : params.par_regions, + echtvar_snv_databases : params.echtvar_snv_databases, + svdb_sv_databases : params.svdb_sv_databases, + somalier_sites : params.somalier_sites, + vep_cache : params.vep_cache, + hificnv_expected_xy_cn : params.hificnv_expected_xy_cn, + hificnv_expected_xx_cn : params.hificnv_expected_xx_cn, + hificnv_excluded_regions : params.hificnv_excluded_regions, + fasta : params.fasta, + trgt_repeats : params.trgt_repeats, + stranger_repeat_catalog : params.stranger_repeat_catalog, + genmod_reduced_penetrance: params.genmod_reduced_penetrance, + genmod_score_config_snvs : params.genmod_score_config_snvs, + genmod_score_config_svs : params.genmod_score_config_svs, + variant_consequences_snvs : params.variant_consequences_snvs, + variant_consequences_svs : params.variant_consequences_svs, ] ] @@ -123,7 +124,6 @@ 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 @@ -144,47 +144,45 @@ workflow PIPELINE_INITIALISATION { workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 ) + // // 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 ) + // // Check config provided to the pipeline // UTILS_NFCORE_PIPELINE ( nextflow_cli_args ) + // // Custom validation for pipeline parameters // validateInputParameters(parameterStatus, workflowSkips, workflowDependencies, fileDependencies) + validatePacBioLicense() // // Create channel from input file provided through params.input // Channel - .fromSamplesheet("input") + .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) .map { meta, reads -> [ meta.id, meta, reads ] // add sample as groupTuple key } + .groupTuple() // group by sample .map { validateInputSamplesheet(it) } - .groupTuple() // group by sample .map { sample, metas, reads -> // Add number of files per sample _after_ splitting to meta - [ sample, metas[0] + [n_files: metas.size() + metas.size() * Math.max(0, params.parallel_alignments - 1), single_end:true ], reads ] + [ sample, metas[0] + [n_files: metas.size() + metas.size() * Math.max(0, params.alignment_processes - 1), single_end:true ], reads ] } // Convert back to [ meta, reads ] .flatMap { @@ -193,34 +191,21 @@ workflow PIPELINE_INITIALISATION { } .set { ch_samplesheet } - // Check that there's samples with affected phenotype if we are ranking variants - ch_samplesheet - .filter { meta, reads -> meta.phenotype == 2 } - .ifEmpty { - if(!params.skip_rank_variants) { - error("No samples in samplesheet has affected phenotype (=2), --skip_rank_variants has to be active.") - } - } + // Check that all families has at least one sample with affected phenotype if ranking is active + validateAllFamiliesHasAffectedSamples(ch_samplesheet, params) // Check that there's no more than one project - // TODO: Try to do this in nf-schema - ch_samplesheet - .map { meta, reads -> meta.project } - .unique() - .collect() - .filter{ it.size() == 1 } - .ifEmpty { - error("Only one project may be specified per run") - } + validateSingleProjectPerRun(ch_samplesheet) + emit: samplesheet = ch_samplesheet versions = ch_versions } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW FOR PIPELINE COMPLETION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow PIPELINE_COMPLETION { @@ -229,13 +214,13 @@ workflow PIPELINE_COMPLETION { email // string: email address email_on_fail // string: email address sent on pipeline failure plaintext_email // boolean: Send plain-text email instead of HTML + outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output hook_url // string: hook URL for notifications multiqc_report // string: Path to MultiQC report main: - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") // @@ -243,11 +228,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) } @@ -259,9 +251,9 @@ workflow PIPELINE_COMPLETION { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Check and validate pipeline parameters @@ -270,13 +262,18 @@ workflow PIPELINE_COMPLETION { def validateInputParameters(statusMap, workflowMap, workflowDependencies, fileDependencies) { genomeExistsError() validateParameterCombinations(statusMap, workflowMap, workflowDependencies, fileDependencies) + } // // Validate channels from input samplesheet // def validateInputSamplesheet(input) { - + // Filenames needs to be unique for each sample to avoid collisions when merging + fileNames = input[2].collect { new File(it.toString()).name } + if (fileNames.size() != fileNames.unique().size()) { + error "Error: Input filenames needs to be unique for each sample." + } return input } @@ -309,167 +306,6 @@ def genomeExistsError() { // // Generate methods description for MultiQC // -def toolCitationText() { - - def citation_text = [ - "MultiQC (Ewels et al. 2016)", - "SAMtools (Danecek et al. 2021)", - ] - if (!params.skip_raw_read_qc) { - citation_text = citation_text + [ - "FastQC (Andrews 2010)", - "fcqrs", - ] - } - if (!params.skip_mapping_wf) { - if (params.parallel_alignments > 1) { - citation_text = citation_text + [ - "splitubam", - ] - } - citation_text = citation_text + [ - "SAMtools (Danecek et al. 2021)", - "Minimap2 (Li 2018)", - "Somalier (Pedersen et al. 2020)", - "Sniffles2 (Smolka et al. 2024)", - ] - if (!params.skip_aligned_read_qc) { - citation_text = citation_text + [ - "cramino (De Coster & Rademakers 2023)", - "mosdepth (Pedersen & Quinlan 2018)", - ] - } - if (!params.skip_call_paralogs) { - citation_text = citation_text + [ - "paraphase", - ] - } - if (!params.skip_assembly_wf) { - if (params.hifiasm_mode == 'trio-binning') { - citation_text = citation_text + [ - "yak", - ] - } - citation_text = citation_text + [ - "Hifiasm (Cheng et al. 2021)", - "Gfastats (Formenti et al. 2022)", - "dipcall (Li et al. 2018)", - "SAMtools (Danecek et al. 2021)", - "Minimap2 (Li 2018)", - ] - } - if (!params.skip_short_variant_calling) { - citation_text = citation_text + [ - "BEDTools (Quinlan & Hall 2010)", - "BCFtools (Danecek et al. 2021)", - "DeepVariant (Poplin et al. 2018)", - "GLnexus (Yun et al. 2021)", - ] - } - if (!params.skip_snv_annotation) { - citation_text = citation_text + [ - "CADD (Rentzsch et al. 2019, Rentzsch et al. 2021)", - "BCFtools (Danecek et al. 2021)", - "VEP (McLaren et al. 2016)", - "Tabix (Li 2011)", - "Echtvar (Pedersen & de Ridder 2023)", - ] - if (!params.skip_rank_variants) { - citation_text = citation_text + [ - "Genmod (Magnusson et al. 2018)", - "Tabix (Li 2011)", - ] - } - } - if (!params.skip_cnv_calling) { - citation_text = citation_text + [ - "HiFiCNV", - ] - } - if (!params.skip_phasing_wf) { - citation_text = citation_text + [ - "SAMtools (Danecek et al. 2021)", - "cramino (De Coster & Rademakers 2023)", - ] - if(params.phaser == 'whatshap') { - citation_text = citation_text + [ - "WhatsHap (Martin et al. 2016)", - ] - } - if(params.phaser == 'hiphase_sv') { - citation_text = citation_text + [ - "HiPhase (Holt et al. 2024)", - ] - } - if(params.phaser == 'hiphase_snv') { - citation_text = citation_text + [ - "HiPhase (Holt et al. 2024)", - ] - } - if (!params.skip_methylation_wf) { - citation_text = citation_text + [ - "modkit", - "Tabix (Li 2011)", - ] - } - if (!params.skip_repeat_calling) { - citation_text = citation_text + [ - "TRGT (Dolzhenko et al. 2024)", - ] - if (!params.skip_repeat_annotation) { - citation_text = citation_text + [ - "Stranger (Nilsson & Magnusson 2021)", - ] - } - } - } - } - - def return_text = "Tools used in the workflow included: " + citation_text.unique(false) { a, b -> a <=> b }.join(', ') - "" + "." - return return_text -} - -def toolBibliographyText() { - - reference_text = [ - "
  • Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
  • ", - "
  • Ewels PA, Peltzer A, Fillinger S, Patel H, Alneberg J, Wilm A, Garcia MU, Di Tommaso P, Nahnsen S. The nf-core framework for community-curated bioinformatics pipelines. Nat Biotechnol. 2020 Mar;38(3):276-278. doi: 10.1038/s41587-020-0439-x. PubMed PMID: 32055031.
  • ", - "
  • Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924.
  • ", - "
  • Di Tommaso P, Chatzou M, Floden EW, Barja PP, Palumbo E, Notredame C. Nextflow enables reproducible computational workflows. Nat Biotechnol. 2017 Apr 11;35(4):316-319. doi: 10.1038/nbt.3820. PubMed PMID: 28398311.
  • ", - "
  • Danecek P, Bonfield JK, Liddle J, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008
  • ", - "
  • Quinlan AR and Hall IM, 2010. BEDTools: a flexible suite of utilities for comparing genomic features. Bioinformatics. 26, 6, pp. 841–842.
  • ", - "
  • Wouter De Coster, Rosa Rademakers, NanoPack2: population-scale evaluation of long-read sequencing data, Bioinformatics, Volume 39, Issue 5, May 2023, btad311, https://doi.org/10.1093/bioinformatics/btad311
  • ", - "
  • Rentzsch P, Schubach M, Shendure J, Kircher M. CADD-Splice—improving genome-wide variant effect prediction using deep learning-derived splice scores. Genome Med. 2021;13(1):31. doi:10.1186/s13073-021-00835-9
  • ", - "
  • Rentzsch P, Witten D, Cooper GM, Shendure J, Kircher M. CADD: predicting the deleteriousness of variants throughout the human genome. Nucleic Acids Research. 2019;47(D1):D886-D894. doi:10.1093/nar/gky1016
  • ", - "
  • Poplin R, Chang PC, Alexander D, et al. A universal SNP and small-indel variant caller using deep neural networks. Nat Biotechnol. 2018;36(10):983-987. doi:10.1038/nbt.4235
  • ", - "
  • Li H, Bloom JM, Farjoun Y, Fleharty M, Gauthier L, Neale B, MacArthur D (2018) A synthetic-diploid benchmark for accurate variant-calling evaluation. Nat Methods, 15:595-597. [PMID:30013044]
  • ", - "
  • Brent S Pedersen, Jeroen de Ridder, Echtvar: compressed variant representation for rapid annotation and filtering of SNPs and indels, Nucleic Acids Research, Volume 51, Issue 1, 11 January 2023, Page e3, https://doi.org/10.1093/nar/gkac931
  • ", - "
  • McLaren W, Gil L, Hunt SE, et al. The Ensembl Variant Effect Predictor. Genome Biol. 2016;17(1):122. doi:10.1186/s13059-016-0974-4
  • ", - "
  • Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online].
  • ", - "
  • Magnusson M, Hughes T, Glabilloy, Bitdeli Chef. genmod: Version 3.7.3. Published online November 15, 2018. doi:10.5281/ZENODO.3841142
  • ", - "
  • Giulio Formenti, Linelle Abueg, Angelo Brajuka, Nadolina Brajuka, Cristóbal Gallardo-Alba, Alice Giani, Olivier Fedrigo, Erich D Jarvis, Gfastats: conversion, evaluation and manipulation of genome sequences using assembly graphs, Bioinformatics, Volume 38, Issue 17, September 2022, Pages 4214–4216, https://doi.org/10.1093/bioinformatics/btac460
  • ", - "
  • Yun T, Li H, Chang PC, Lin MF, Carroll A, McLean CY. Accurate, scalable cohort variant calls using DeepVariant and GLnexus. Robinson P, ed. Bioinformatics. 2021;36(24):5582-5589. doi:10.1093/bioinformatics/btaa1081
  • ", - "
  • Cheng, H., Concepcion, G.T., Feng, X. et al. Haplotype-resolved de novo assembly using phased assembly graphs with hifiasm. Nat Methods 18, 170–175 (2021). https://doi.org/10.1038/s41592-020-01056-5
  • ", - "
  • James M Holt, Christopher T Saunders, William J Rowell, Zev Kronenberg, Aaron M Wenger, Michael Eberle, HiPhase: jointly phasing small, structural, and tandem repeat variants from HiFi sequencing, Bioinformatics, Volume 40, Issue 2, February 2024, btae042, https://doi.org/10.1093/bioinformatics/btae042
  • ", - "
  • Heng Li, Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics, Volume 34, Issue 18, September 2018, Pages 3094–3100, https://doi.org/10.1093/bioinformatics/bty191
  • ", - "
  • Pedersen BS, Quinlan AR. Mosdepth: quick coverage calculation for genomes and exomes. Hancock J, ed. Bioinformatics. 2018;34(5):867-868. doi:10.1093/bioinformatics/btx699
  • ", - "
  • Genome-wide profiling of highly similar paralogous genes using HiFi sequencing. Xiao Chen, Daniel Baker, Egor Dolzhenko, Joseph M Devaney, Jessica Noya, April S Berlyoung, Rhonda Brandon, Kathleen S Hruska, Lucas Lochovsky, Paul Kruszka, Scott Newman, Emily Farrow, Isabelle Thiffault, Tomi Pastinen, Dalia Kasperaviciute, Christian Gilissen, Lisenka Vissers, Alexander Hoischen, Seth Berger, Eric Vilain, Emmanuèle Délot, UCI Genomics Research to Elucidate the Genetics of Rare Diseases (UCI GREGoR) Consortium, Michael A Eberle. bioRxiv 2024.04.19.590294; doi: https://doi.org/10.1101/2024.04.19.590294
  • ", - "
  • Smolka, M., Paulin, L.F., Grochowski, C.M. et al. Detection of mosaic and population-level structural variants with Sniffles2. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02024-y
  • ", - "
  • Pedersen, B.S., Bhetariya, P.J., Brown, J. et al. Somalier: rapid relatedness estimation for cancer and germline studies using efficient genome sketches. Genome Med 12, 62 (2020). https://doi.org/10.1186/s13073-020-00761-2
  • ", - "
  • Nilsson D, Magnusson M. moonso/stranger v0.7.1. Published online February 18, 2021. doi:10.5281/ZENODO.4548873
  • ", - "
  • Li H. Tabix: fast retrieval of sequence features from generic TAB-delimited files. Bioinformatics. 2011;27(5):718-719. doi:10.1093/bioinformatics/btq671
  • ", - "
  • Dolzhenko, E., English, A., Dashnow, H. et al. Characterization and visualization of tandem repeats at genome scale. Nat Biotechnol (2024). https://doi.org/10.1038/s41587-023-02057-3
  • ", - "
  • Marcel Martin, Murray Patterson, Shilpa Garg, Sarah O Fischer, Nadia Pisanti, Gunnar W Klau, Alexander Schöenhuth, Tobias Marschall. bioRxiv 085050; doi: https://doi.org/10.1101/085050
  • ", - "
  • Anaconda Software Distribution. Computer software. Vers. 2-2.4.0. Anaconda, Nov. 2016. Web.
  • ", - "
  • Grüning B, Dale R, Sjödin A, Chapman BA, Rowe J, Tomkins-Tinch CH, Valieris R, Köster J; Bioconda Team. Bioconda: sustainable and comprehensive software distribution for the life sciences. Nat Methods. 2018 Jul;15(7):475-476. doi: 10.1038/s41592-018-0046-7. PubMed PMID: 29967506.
  • ", - "
  • da Veiga Leprevost F, Grüning B, Aflitos SA, Röst HL, Uszkoreit J, Barsnes H, Vaudel M, Moreno P, Gatto L, Weber J, Bai M, Jimenez RC, Sachsenberg T, Pfeuffer J, Alvarez RV, Griss J, Nesvizhskii AI, Perez-Riverol Y. BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics. 2017 Aug 15;33(16):2580-2582. doi: 10.1093/bioinformatics/btx192. PubMed PMID: 28379341; PubMed Central PMCID: PMC5870671.
  • ", - "
  • Merkel, D. (2014). Docker: lightweight linux containers for consistent development and deployment. Linux Journal, 2014(239), 2. doi: 10.5555/2600239.2600241.
  • ", - "
  • Kurtzer GM, Sochat V, Bauer MW. Singularity: Scientific containers for mobility of compute. PLoS One. 2017 May 11;12(5):e0177459. doi: 10.1371/journal.pone.0177459. eCollection 2017. PubMed PMID: 28494014; PubMed Central PMCID: PMC5426675.
  • ", - ].join(' ').trim() - - return reference_text -} - def methodsDescriptionText(mqc_methods_yaml) { // Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file def meta = [:] @@ -482,19 +318,14 @@ 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.
  • " - // Tool references - meta["tool_citations"] = "" - meta["tool_bibliography"] = "" - - meta["tool_citations"] = toolCitationText().replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") - meta["tool_bibliography"] = toolBibliographyText() - def methods_text = mqc_methods_yaml.text def engine = new groovy.text.SimpleTemplateEngine() @@ -503,6 +334,52 @@ def methodsDescriptionText(mqc_methods_yaml) { return description_html.toString() } +def extractSoftwareFromVersions(module_yaml_file) { + def yaml = new org.yaml.snakeyaml.Yaml() + def yamlData = yaml.load(module_yaml_file) + // Extract all software (keys) from a module yaml + def softwareInModule = yamlData.values().collect { it.keySet() }.flatten() + return softwareInModule +} + +def generateReferenceHTML(tool_list, description) { + def items = tool_list + .collect { it.trim() } + .unique() // samtools and bcftools share reference + .findAll { it != "" } // some tools does not have a reference, e.g. awk, gunzip + + if (description == 'citation') { + return "

    Tools used in the workflow included: ${items.join(', ')}.

    " + } else if (description == 'bibliography') { + return "

    References

    • ${items.join('
    • ')}
    " + } +} + +def citationBibliographyText(ch_versions, references_yaml, description) { + def yaml = new org.yaml.snakeyaml.Yaml() + def softwareReferences = yaml.load(references_yaml.text).tool + + def unwantedReferences = ['genomic-medicine-sweden/nallo', 'Nextflow'] + // These are not collected in ch_versions but should be referenced + baseTools = Channel.from(['nextflow', 'nf_core', 'bioconda', 'biocontainers', 'multiqc']) + + ch_versions + .map { module_yaml -> extractSoftwareFromVersions(module_yaml) } + .flatten() // split multi-tool modules + .unique() + .filter { tool -> !unwantedReferences.contains(tool) } + .concat(baseTools) + .collect { tool -> + def toolDetails = softwareReferences[tool] + if (toolDetails == null) { + throw new IllegalStateException("Tool: '${tool}' not found in ${references_yaml}") + } + return toolDetails[description] + } + .sort() + .map { tools -> generateReferenceHTML(tools, description) } +} + // // Validate workflow skip combinations // @@ -626,3 +503,56 @@ def findKeyForValue(def valueToFind, Map map) { return null // Value not found } +// Utility function to create channels from references +def createReferenceChannelFromPath(param, defaultValue = '') { + return param ? Channel.fromPath(param, checkIfExists: true) + .map { [ [ id: it.simpleName ], it ] } + .collect() : defaultValue +} +// Utility function to create channels from samplesheets +def createReferenceChannelFromSamplesheet(param, schema, defaultValue = '') { + return param ? Channel.fromList(samplesheetToList(param, schema)) : defaultValue +} + +def validatePacBioLicense() { + if (params.phaser.matches('hiphase') && params.preset == 'ONT_R10') { + error "ERROR: The HiPhase license only permits analysis of data from PacBio." + } +} + +// Genmod within RANK_VARIANTS requires affected individuals in the samplesheet. +// This is a convenience function to fail early if there are families without affected individuals. +def validateAllFamiliesHasAffectedSamples(ch_samplesheet, params) { + + if (params.skip_rank_variants) { + return + } + + def familiesWithPhenotypes = ch_samplesheet + .map { meta, reads -> [ meta.family_id, meta.phenotype ] } + .groupTuple() + + def familiesWithoutAffected = familiesWithPhenotypes + .filter { family, phenotype -> !phenotype.contains(2) } + + familiesWithoutAffected + .map { family, phenotype -> family } + .collect() + .subscribe { familyList -> + if (familyList) { + error("ERROR: No samples in families: ${familyList.join(", ")} have affected phenotype (=2); --skip_rank_variants has to be active.") + } + } +} + +def validateSingleProjectPerRun(ch_samplesheet) { + def oneProject = ch_samplesheet + .map { meta, reads -> meta.project } + .unique() + .collect() + .filter{ it.size() == 1 } + + if(!oneProject) { + error("Only one project may be specified per run") + } +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index ac31f28f..0fcbf7b3 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -2,18 +2,13 @@ // Subworkflow with functionality that may be useful for any Nextflow pipeline // -import org.yaml.snakeyaml.Yaml -import groovy.json.JsonOutput -import nextflow.extension.FilesEx - /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NEXTFLOW_PIPELINE { - take: print_version // boolean: print version dump_parameters // boolean: dump parameters @@ -26,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) } @@ -49,16 +44,16 @@ workflow UTILS_NEXTFLOW_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Generate version string // def getWorkflowVersion() { - String version_string = "" + def version_string = "" as String if (workflow.manifest.version) { def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' version_string += "${prefix_v}${workflow.manifest.version}" @@ -76,13 +71,13 @@ 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 = JsonOutput.toJson(params) - temp_pf.text = 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) - FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") + nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") temp_pf.delete() } @@ -90,37 +85,40 @@ def dumpParametersToJSON(outdir) { // When running with -profile conda, warn if channels have not been set-up appropriately // def checkCondaChannels() { - Yaml parser = new Yaml() + def parser = new org.yaml.snakeyaml.Yaml() def channels = [] 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 // This channel list is ordered by required channel priority. - def required_channels_in_order = ['conda-forge', 'bioconda', 'defaults'] + def required_channels_in_order = ['conda-forge', 'bioconda'] 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 - def n = required_channels_in_order.size() - for (int i = 0; i < n - 1; i++) { - channel_priority_violation |= !(channels.indexOf(required_channels_in_order[i]) < channels.indexOf(required_channels_in_order[i+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_nextflow_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test index ca964ce8..02dbf094 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -52,10 +52,12 @@ nextflow_workflow { } then { - assertAll( - { assert workflow.success }, - { assert workflow.stdout.contains("nextflow_workflow v9.9.9") } - ) + expect { + with(workflow) { + assert success + assert "nextflow_workflow v9.9.9" in stdout + } + } } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index d0a926bf..a09572e5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -3,7 +3,7 @@ manifest { author = """nf-core""" homePage = 'https://127.0.0.1' description = """Dummy pipeline""" - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' } diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 14558c39..5cb7bafe 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -2,17 +2,13 @@ // Subworkflow with utility functions specific to the nf-core pipeline template // -import org.yaml.snakeyaml.Yaml -import nextflow.extension.FilesEx - /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NFCORE_PIPELINE { - take: nextflow_cli_args @@ -25,23 +21,20 @@ workflow UTILS_NFCORE_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Warn if a -profile or Nextflow config has not been provided to run the pipeline // def checkConfigProvided() { - valid_config = true + 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 @@ -52,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" + ) } } @@ -66,25 +61,21 @@ def checkProfileProvided(nextflow_cli_args) { // def workflowCitation() { def temp_doi_ref = "" - String[] manifest_doi = workflow.manifest.doi.tokenize(",") - // Using a loop to handle multiple DOIs + def manifest_doi = workflow.manifest.doi.tokenize(",") + // 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 - for (String doi_ref: manifest_doi) 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" + 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" } // // Generate workflow version string // def getWorkflowVersion() { - String version_string = "" + def version_string = "" as String if (workflow.manifest.version) { def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' version_string += "${prefix_v}${workflow.manifest.version}" @@ -102,8 +93,8 @@ def getWorkflowVersion() { // Get software versions for pipeline // def processVersionsFromYAML(yaml_file) { - Yaml yaml = new Yaml() - versions = yaml.load(yaml_file).collectEntries { k, v -> [ k.tokenize(':')[-1], v ] } + def yaml = new org.yaml.snakeyaml.Yaml() + def versions = yaml.load(yaml_file).collectEntries { k, v -> [k.tokenize(':')[-1], v] } return yaml.dumpAsMap(versions).trim() } @@ -113,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() } @@ -122,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 { processVersionsFromYAML(it) } - .unique() - .mix(Channel.of(workflowVersionToYAML())) + return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(Channel.of(workflowVersionToYAML())) } // @@ -134,25 +121,31 @@ def softwareVersionsToYAML(ch_versions) { // def paramsSummaryMultiqc(summary_params) { def summary_section = '' - for (group in summary_params.keySet()) { - 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" - for (param in group_params.keySet()) { - 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" } - } - String yaml_file_text = "id: '${workflow.manifest.name.replace('/','-')}-summary'\n" - 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 } @@ -161,7 +154,7 @@ def paramsSummaryMultiqc(summary_params) { // nf-core logo // def nfCoreLogo(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map String.format( """\n ${dashedLine(monochrome_logs)} @@ -180,7 +173,7 @@ def nfCoreLogo(monochrome_logs=true) { // Return dashed line // def dashedLine(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map return "-${colors.dim}----------------------------------------------------${colors.reset}-" } @@ -188,7 +181,7 @@ def dashedLine(monochrome_logs=true) { // ANSII colours used for terminal logging // def logColours(monochrome_logs=true) { - Map colorcodes = [:] + def colorcodes = [:] as Map // Reset / Meta colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" @@ -200,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 } @@ -262,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 @@ -281,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 = [:] - for (group in summary_params.keySet()) { - 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 = [:] @@ -338,39 +341,41 @@ 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() // Send the HTML e-mail - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map if (email_address) { try { - if (plaintext_email) { throw 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 } - 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 } - 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() } @@ -378,15 +383,17 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // Print pipeline summary on completion // def completionSummary(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + 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}-") } } @@ -395,21 +402,30 @@ def completionSummary(monochrome_logs=true) { // def imNotification(summary_params, hook_url) { def summary = [:] - for (group in summary_params.keySet()) { - 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() @@ -434,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..8fb30164 --- /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 = null + } + + 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 = null + } + + 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..3ed901fb --- /dev/null +++ b/tests/.nftignore @@ -0,0 +1,24 @@ +aligned_reads/**/*.{bam,bai} +cnv_calling/**/*.log +multiqc/multiqc_data/multiqc.log +multiqc/multiqc_data/multiqc_data.json +multiqc/multiqc_data/multiqc_software_versions.txt +multiqc/multiqc_data/multiqc_somalier.txt +multiqc/multiqc_data/somalier_*_plot.txt +multiqc/multiqc_data/multiqc_sources.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt +multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt +multiqc/multiqc_plots/**/*.{pdf,svg,txt,png} +multiqc/multiqc_report.html +paraphase/**/*.{vcf.gz,tbi,bam,bai,json} +phased_variants/**/*.{vcf.gz,tbi} +pipeline_info/*.{html,json,txt,yml} +qc/cramino/**/*.txt +qc/fastqc/**/*.{zip,html} +qc/somalier/**/*.{html,tsv} +qc/deepvariant_vcfstatsreport/**/*.html +repeats/**/*.{vcf.gz,tbi,bam,bai} +snvs/**/*.{vcf.gz,tbi,txt} +svs/**/*.{vcf.gz,tbi} diff --git a/tests/.nftignore_unstable_variants b/tests/.nftignore_unstable_variants new file mode 100644 index 00000000..56a5b475 --- /dev/null +++ b/tests/.nftignore_unstable_variants @@ -0,0 +1,4 @@ +paraphase/**/*.vcf.gz +phased_variants/**/*.vcf.gz +snvs/**/*.vcf.gz +svs/**/*.vcf.gz diff --git a/tests/main.nf.test b/tests/main.nf.test deleted file mode 100644 index 7a79b71f..00000000 --- a/tests/main.nf.test +++ /dev/null @@ -1,345 +0,0 @@ -nextflow_pipeline { - - name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" - script "../main.nf" - profile "test" - tag "PIPELINE" - - test("test profile") { - tag "samplesheet" - - when { - params { - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/' - // Test files - fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' - bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' - somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' - reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - - // Parameters - parallel_snv = 2 - preset = "revio" - outdir = "$outputDir" - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.pairs.tsv"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.samples.tsv"), - file("$outputDir/qc_aligned_reads/somalier/relate/test/test.html"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt"), - // Assert with snapshot HG002_Revio - bam("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.HG002_Revio.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio/HG002_Revio_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio/HG002_PacBio_Revio.fastq.gz.tsv.zst"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio - { assert new File("$outputDir/aligned_reads/HG002_Revio/HG002_Revio_phased.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio/HG002_Revio.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio/HG002_Revio_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio/HG002_Revio.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio/HG002_Revio_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio/HG002_Revio_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio/HG002_Revio_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio/HG002_Revio_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio/HG002_Revio_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio/HG002_Revio_sniffles.vcf.gz.tbi").exists() } - ) - } - } - - test("test profile - multisample") { - tag "samplesheet_multisample_bam" - - when { - params { - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/' - // Test files - fasta = params.pipelines_testdata_base_path + 'reference/hg38.test.fa.gz' - input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' - bed = params.pipelines_testdata_base_path + 'reference/test_data.bed' - hificnv_xy = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XY.bed' - hificnv_xx = params.pipelines_testdata_base_path + 'reference/expected_cn.hg38.XX.bed' - hificnv_exclude = params.pipelines_testdata_base_path + 'reference/empty.bed' - par_regions = params.pipelines_testdata_base_path + 'reference/hs38.PAR.bed' - trgt_repeats = params.pipelines_testdata_base_path + 'reference/pathogenic_repeats.hg38.bed' - variant_catalog = params.pipelines_testdata_base_path + 'reference/variant_catalog_grch38.json' - vep_cache = params.pipelines_testdata_base_path + 'reference/vep_cache_test_data.tar.gz' - vep_plugin_files = params.pipelines_testdata_base_path + 'reference/vep_plugin_files.csv' - snp_db = params.pipelines_testdata_base_path + 'testdata/snp_dbs.csv' - somalier_sites = params.pipelines_testdata_base_path + 'reference/somalier_sites.vcf.gz' - reduced_penetrance = params.pipelines_testdata_base_path + 'reference/reduced_penetrance.tsv' - score_config_snv = params.pipelines_testdata_base_path + 'reference/rank_model_snv.ini' - variant_consequences_snv = params.pipelines_testdata_base_path + 'reference/variant_consequences_v2.txt' - - // Parameters - parallel_snv = 2 - preset = "revio" - outdir = "$outputDir" - } - } - - then { - assertAll ( - { assert workflow.success }, - // Assert with snapshot multisample - { assert snapshot( - file("$outputDir/pedigree/test.ped"), - file("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), - file("$outputDir/multiqc/multiqc_data/multiqc_fastqc.txt"), - // Assert with snapshot HG002_Revio_A - bam("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_A/HG002_Revio_A_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio_A/HG002_PacBio_Revio.bam_other.fastq.gz.tsv.zst"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt").readLines()[0..2], - // Assert with snapshot HG002_Revio_B - bam("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary"), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam", stringency: 'silent').getReadsMD5(), - bam("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bed"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bed"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.copynum.bedgraph"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.depth.bw"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.maf.bw"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz"), - file("$outputDir/assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.vcf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz"), - file("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.vcf.gz"), - file("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz"), - file("$outputDir/methylation/modkit/pileup/unphased/HG002_Revio_B/HG002_Revio_B_modkit_pileup.bed.gz.tbi"), - bam("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow"), - file("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz"), - file("$outputDir/qc_aligned_reads/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi"), - file("$outputDir/qc_raw_reads/fqcrs/HG002_Revio_B/HG002_Revio_B.merged.fastq.gz.tsv.zst"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz"), - file("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi"), - bam("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", stringency: 'silent').getReadsMD5(), - file("$outputDir/snvs/stats/single_sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt").readLines()[0..2], - ).match() }, - // Assert exists multisample - note the trgt multisample that doesn't exist in singlesample - { assert new File("$outputDir/databases/echtvar/encode/test/test.zip").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.pairs.tsv").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.samples.tsv").exists() }, - { assert new File("$outputDir/qc_aligned_reads/somalier/relate/test/test.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_somalier.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_data.json").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc.log").exists() }, - { assert new File("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists() }, - { assert new File("$outputDir/multiqc/multiqc_data/multiqc_software_versions.txt").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/multi_sample/test/test_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/multi_sample/test/test_sniffles.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/multi_sample/test/test.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio_A - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio_A/HG002_Revio_A.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_A/HG002_Revio_A_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_A/HG002_Revio_A_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_A/HG002_Revio_A_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_A/HG002_Revio_A_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_A/HG002_Revio_A_sniffles.vcf.gz.tbi").exists() }, - // Assert exists HG002_Revio_B - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.sam.gz").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam.bai").exists() }, - { assert new File("$outputDir/assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz").exists() }, - { assert new File("$outputDir/cnv_calling/hificnv/HG002_Revio_B/HG002_Revio_B.log").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_1.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_2.bed.gz.tbi").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz").exists() }, - { assert new File("$outputDir/methylation/modkit/pileup/phased/HG002_Revio_B/HG002_Revio_B_modkit_pileup_phased_ungrouped.bed.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam.bai").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt").exists() }, - { assert new File("$outputDir/qc_aligned_reads/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt").exists() }, - { assert new File("$outputDir/aligned_reads/HG002_Revio_B/HG002_Revio_B_phased.bam.bai").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz").exists() }, - { assert new File("$outputDir/phasing/whatshap/phase/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv").exists() }, - { assert new File("$outputDir/phasing/whatshap/stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html").exists() }, - { assert new File("$outputDir/qc_raw_reads/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz").exists() }, - { assert new File("$outputDir/repeat_annotation/stranger/HG002_Revio_B/HG002_Revio_B_repeat_expansion_stranger.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/repeat_calling/trgt/single_sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz").exists() }, - { assert new File("$outputDir/snvs/single_sample/HG002_Revio_B/HG002_Revio_B_snv_annotated_ranked.vcf.gz.tbi").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.snf").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz").exists() }, - { assert new File("$outputDir/sv_calling/sniffles/single_sample/HG002_Revio_B/HG002_Revio_B_sniffles.vcf.gz.tbi").exists() } - ) - } - } -} diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap deleted file mode 100644 index a3412aba..00000000 --- a/tests/main.nf.test.snap +++ /dev/null @@ -1,150 +0,0 @@ -{ - "test profile": { - "content": [ - "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", - "test.pairs.tsv:md5,4a0988fc3c0fe5cfd5dd205fe6755595", - "test.samples.tsv:md5,1685dc6cb8c6b9806ca636662980d686", - "test.html:md5,d05e0eceb70ada3a0c25f99a16ad1889", - "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,c60b523b5f11c07c9149043bf68f92ad", - "multiqc_somalier.txt:md5,20b4c5b2d5b94b77fb800548e07a874e", - "74b4822241bd8d1bc42f494f1f3e326c", - "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,ccaad2690abccadc4ec3b2c5d8fa4b05", - "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c5bbeabb571453186a39cf6e487dbcc5", - "67fc08c5db63d417992aa4842a567c2d", - "28f964b0683d285fabc5407af0f28580", - "HG002_Revio.dip.bed:md5,5c0ad25a4bb82b8ce06f526664ffbd1c", - "HG002_Revio.hap1.bed:md5,28ac0570c41a83c231f2c853918d24c5", - "HG002_Revio.hap2.bed:md5,8b9a998402277ef043718f95a5410fe1", - "HG002_Revio.HG002_Revio.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio.HG002_Revio.depth.bw:md5,20757c985f4713b8568dee05765db701", - "HG002_Revio.HG002_Revio.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", - "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", - "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", - "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", - "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,6c040d554c3310e1555c928a68fca9f2", - "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,d250ea1f1a1186d1d324c843bc8a3e7a", - "HG002_Revio.dip.vcf.gz:md5,ce28d131a954db1325246fce498eb659", - "HG002_Revio.hap1.paf.gz:md5,493bbf9db4bc541a348de656f29e58f1", - "HG002_Revio.hap1.var.gz:md5,55e7be8fb8fe051725890f1cfaae3692", - "HG002_Revio.hap2.paf.gz:md5,63066bc6d6abcdff9b6916d549077a41", - "HG002_Revio.hap2.var.gz:md5,fb0b9d9708cd907831f9cd7019f1d03d", - "HG002_Revio.pair.vcf.gz:md5,977d60dfdf18e27c06574ec8297e49e4", - "HG002_Revio.HG002_Revio.vcf.gz:md5,771f7d9ecbd161dedfbdd053ceff0d52", - "HG002_Revio.HG002_Revio.vcf.gz.tbi:md5,65d6930f79e626a5542091b7a419dc2b", - "HG002_Revio_modkit_pileup.bed.gz:md5,8850d8414ecefc2341452f23ce5e6870", - "HG002_Revio_modkit_pileup.bed.gz.tbi:md5,af7e0b1699351d6df3d93d223d5c3da9", - "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", - "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_PacBio_Revio.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b", - "HG002_Revio_sorted.vcf.gz:md5,fbb5699b8f74fc105fb154e8fac7bfea", - "HG002_Revio_sorted.vcf.gz.tbi:md5,0466518ee265ba63160ed27cee0dec88", - "65999ab8f2bc7841de8172468bf23ab6", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_Revio.vcf.gz", - "#" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-29T10:42:09.011660883" - }, - "test profile - multisample": { - "content": [ - "test.ped:md5,db74c6787a92a70ffaab766fa4d7a873", - "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", - "multiqc_fastqc.txt:md5,b74145ef9fbf8addcc2997ca26b3aa45", - "74b4822241bd8d1bc42f494f1f3e326c", - "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,ccaad2690abccadc4ec3b2c5d8fa4b05", - "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c5bbeabb571453186a39cf6e487dbcc5", - "67fc08c5db63d417992aa4842a567c2d", - "28f964b0683d285fabc5407af0f28580", - "HG002_Revio_A.dip.bed:md5,5c0ad25a4bb82b8ce06f526664ffbd1c", - "HG002_Revio_A.hap1.bed:md5,28ac0570c41a83c231f2c853918d24c5", - "HG002_Revio_A.hap2.bed:md5,8b9a998402277ef043718f95a5410fe1", - "HG002_Revio_A.HG002_Revio_A.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", - "HG002_Revio_A.HG002_Revio_A.depth.bw:md5,20757c985f4713b8568dee05765db701", - "HG002_Revio_A.HG002_Revio_A.maf.bw:md5,4699d7a664277863f06eb48c3cba3c41", - "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", - "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", - "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", - "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,6c040d554c3310e1555c928a68fca9f2", - "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,d250ea1f1a1186d1d324c843bc8a3e7a", - "HG002_Revio_A.dip.vcf.gz:md5,d97b3e520a3bf6f85eb6b5dd66961e71", - "HG002_Revio_A.hap1.paf.gz:md5,493bbf9db4bc541a348de656f29e58f1", - "HG002_Revio_A.hap1.var.gz:md5,55e7be8fb8fe051725890f1cfaae3692", - "HG002_Revio_A.hap2.paf.gz:md5,63066bc6d6abcdff9b6916d549077a41", - "HG002_Revio_A.hap2.var.gz:md5,fb0b9d9708cd907831f9cd7019f1d03d", - "HG002_Revio_A.pair.vcf.gz:md5,8fd0eb40954ed6d829d0632d0cf54414", - "HG002_Revio_A.HG002_Revio_A.vcf.gz:md5,e575fbadcd826243561192310f234c82", - "HG002_Revio_A.HG002_Revio_A.vcf.gz.tbi:md5,e27fe63e51a2cfaec020ad0a1aec4a7f", - "HG002_Revio_A_modkit_pileup.bed.gz:md5,8850d8414ecefc2341452f23ce5e6870", - "HG002_Revio_A_modkit_pileup.bed.gz.tbi:md5,af7e0b1699351d6df3d93d223d5c3da9", - "fcc3f220bb09d3264f97e7f620779be0", - "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", - "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", - "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", - "HG002_PacBio_Revio.bam_other.fastq.gz.tsv.zst:md5,4b073293b3e771d19b4cfdb07909571b", - "HG002_Revio_A_sorted.vcf.gz:md5,680938d6ebeafe73d8df0b21c0310276", - "HG002_Revio_A_sorted.vcf.gz.tbi:md5,a6554ab817e7c232a1554ea85fa00151", - "65999ab8f2bc7841de8172468bf23ab6", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_Revio_A.vcf.gz", - "#" - ], - "fe7bb70701d1100b2874c10a512a2144", - "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,4941730ceacb4012e771208be7a6673a", - "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,be7dcb093d25922b72ef0f7bc1bf0706", - "dc5ae77e003989e86ccbfd14b4ae6c7", - "3608f178b942e804e5588e5bbd9e06ee", - "HG002_Revio_B.dip.bed:md5,865dbd07d7c6b7904176ee25cce91928", - "HG002_Revio_B.hap1.bed:md5,50609668f7b26a9d68d583fdaad9bedd", - "HG002_Revio_B.hap2.bed:md5,865338ef4e621ca1e8efcc0a8a6c64d0", - "HG002_Revio_B.HG002_Revio_B.copynum.bedgraph:md5,22b040fce6bdf6b2e323f1cc1658128d", - "HG002_Revio_B.HG002_Revio_B.depth.bw:md5,26bc36669ae0b066c2462e3c9307860f", - "HG002_Revio_B.HG002_Revio_B.maf.bw:md5,6c5691dbaf6e526f4b8fa0f7147bfc8b", - "HG002_Revio_B.mosdepth.global.dist.txt:md5,c3449580a34c495f537635c3bde4699d", - "HG002_Revio_B.mosdepth.region.dist.txt:md5,98a20c6295a956932c21534cbf5e889c", - "HG002_Revio_B.mosdepth.summary.txt:md5,d4fa8aeabc3b348255e7a2fa0135b1a4", - "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,bd4ae3d478b26ebaa6b64c6795e09e71", - "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,688d9e693b580a901632022b26fd9d5f", - "HG002_Revio_B.dip.vcf.gz:md5,544c42489591d02fa0dc143e6cf1c6b8", - "HG002_Revio_B.hap1.paf.gz:md5,467daced5b3897cf74c68251b8f99e3a", - "HG002_Revio_B.hap1.var.gz:md5,fb4efe049800a27b10d080ea5a563fb6", - "HG002_Revio_B.hap2.paf.gz:md5,fadac5cffae4e167ef1c41de929edf1b", - "HG002_Revio_B.hap2.var.gz:md5,6e4fcd586c9a30b46d23a8de1d0efe73", - "HG002_Revio_B.pair.vcf.gz:md5,987d192995729f82247dffdcea2dd60f", - "HG002_Revio_B.HG002_Revio_B.vcf.gz:md5,59773d5836f76b36dc1bf75e32186898", - "HG002_Revio_B.HG002_Revio_B.vcf.gz.tbi:md5,1408aeaca23a00eee979101eb45d887d", - "HG002_Revio_B_modkit_pileup.bed.gz:md5,e50e61d644ad3219b3088b1c0d701862", - "HG002_Revio_B_modkit_pileup.bed.gz.tbi:md5,ae29296657f0d2c7451d285ec49f8675", - "a8a1403ba192f971638c870a2be35700", - "HG002_Revio_B_cramino_aligned_phased.arrow:md5,bdd385c0b007ffc30c6cfdd98b15ed82", - "HG002_Revio_B_cramino_aligned.arrow:md5,bdd385c0b007ffc30c6cfdd98b15ed82", - "HG002_Revio_B.regions.bed.gz:md5,deaca22783bd058cdc8756efa25b5f53", - "HG002_Revio_B.regions.bed.gz.csi:md5,dd9a0d36d71da0d274d1c9ca6f8571ae", - "HG002_Revio_B.merged.fastq.gz.tsv.zst:md5,0641e175a07429b61710329a2eeef450", - "HG002_Revio_B_sorted.vcf.gz:md5,ce617741468f4bc7f504f8f488332098", - "HG002_Revio_B_sorted.vcf.gz.tbi:md5,e255a5ea92885967f0c126bddc8ea3b2", - "6b0cf3f492ce898398835d1102afd369", - [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", - "# The command line was:\tbcftools stats HG002_Revio_B.vcf.gz", - "#" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-29T10:45:44.41793623" - } -} \ No newline at end of file diff --git a/tests/nextflow.config b/tests/nextflow.config deleted file mode 100644 index 2aa3910c..00000000 --- a/tests/nextflow.config +++ /dev/null @@ -1,77 +0,0 @@ -params { - // Base directory for nf-core/modules test data - modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' - - // Base directory for genomic-medicine-sweden/nallo test data - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/nallo-0.3.2/' - - max_cpus = 4 - max_memory = '15.GB' - max_time = '6.h' - -} - -// Impose same minimum Nextflow version as the pipeline for testing -manifest { - nextflowVersion = '!>=23.04.0' -} - -// Disable all Nextflow reporting options -timeline { enabled = false } -report { enabled = false } -trace { enabled = false } -dag { enabled = false } - -process { - - withLabel: 'process_high' { - cpus = 4 - } - - withLabel: 'process_medium' { - cpus = 2 - } - - withLabel: 'process_low' { - cpus = 1 - } - - withLabel: 'process_single' { - cpus = 1 - } - - withName: '.*:NALLO:ASSEMBLY:HIFIASM' { - - ext.args = '-f0' - } - - withName: '.*:CALL_PARALOGS:PARAPHASE' { - - ext.args = '--gene hba' - } - - withName: '.*:NALLO:PHASING:WHATSHAP_PHASE' { - - ext.args = '--ignore-read-groups --indels --distrust-genotypes --include-homozygous' - } - - withName: '.*:NALLO:SNV_ANNOTATION:ENSEMBLVEP_VEP' { - ext.prefix = { "${meta.id}_vep" } - ext.args = { [ - "--dir_plugins .", - "--plugin LoFtool,LoFtool_scores.txt", - "--plugin pLI,pLI_values.txt", - "--plugin SpliceAI,snv=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz,indel=spliceai_21_scores_raw_snv_-v1.3-.vcf.gz", - '--distance 5000', - '--buffer_size 20000', - '--format vcf --max_sv_size 248387328', - '--appris --biotype --cache --canonical --ccds --compress_output bgzip', - '--domains --exclude_predicted --force_overwrite', - '--hgvs --humdiv --no_progress --numbers', - '--polyphen p --protein --offline --regulatory --sift p --symbol --tsl', - '--uniprot --vcf', - '--no_stats' - ].join(' ') } - } - -} diff --git a/tests/samplesheet.nf.test b/tests/samplesheet.nf.test new file mode 100644 index 00000000..ea02a959 --- /dev/null +++ b/tests/samplesheet.nf.test @@ -0,0 +1,51 @@ +nextflow_pipeline { + + name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" + script "../main.nf" + tag "PIPELINE" + + test("test profile") { + tag "samplesheet" + + when { + params { + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet.csv' + 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') + // bam_files: All bam files + def bam_files = getAllFilesFromDir(params.outdir, include: ['**/*.bam']) + // all_vcf_files: All vcf files - can have unstable variants and/or unstable headers + def all_vcf_files = getAllFilesFromDir(params.outdir, include: ['**/*.vcf.gz']) + // stable_vcf_files: Vcf files with stable variants - can be snapshot unsing variantsMD5 + def stable_vcf_files = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore_unstable_variants', include: ['**/*.vcf.gz']) + 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/nallo_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path, + // All bam files + bam_files.collect{ file -> [ file.getName(), bam(file.toString(), stringency: 'silent').getReadsMD5() ] }, + // All vcf files + all_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.summary ] }, + // Stable vcf files + stable_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.variantsMD5 ] } + ).match() } + ) + } + } + +} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap new file mode 100644 index 00000000..7036b956 --- /dev/null +++ b/tests/samplesheet.nf.test.snap @@ -0,0 +1,678 @@ +{ + "test profile": { + "content": [ + 116, + { + "ADD_FOUND_IN_TAG": { + "bcftools": 1.2, + "busybox_awk": "1.36.1" + }, + "ADD_MOST_SEVERE_CSQ": { + "add_most_severe_consequence": 1.0, + "python": "3.8.3" + }, + "ADD_MOST_SEVERE_PLI": { + "add_most_severe_pli": 1.0, + "python": "3.8.3" + }, + "BCFTOOLS_CONCAT": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS_ANNO": { + "bcftools": 1.2 + }, + "BCFTOOLS_INDEX": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_MULTISAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_SINGLESAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SNVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_QUERY": { + "bcftools": 1.2 + }, + "BCFTOOLS_REHEADER": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT_TRGT": { + "bcftools": 1.2 + }, + "BCFTOOLS_STATS": { + "bcftools": 1.2 + }, + "BCFTOOLS_VIEW": { + "bcftools": 1.2 + }, + "BEDTOOLS_MERGE": { + "bedtools": "2.31.1" + }, + "BEDTOOLS_SORT": { + "bedtools": "2.31.1" + }, + "COMPRESS_STRANGER": { + "bcftools": 1.2 + }, + "CRAMINO": { + "cramino": "0.14.5" + }, + "CRAMINO_PHASED": { + "cramino": "0.14.5" + }, + "CREATE_SAMPLES_FILE": { + "gawk": "5.1.0" + }, + "DEEPVARIANT_RUNDEEPVARIANT": { + "deepvariant": "1.6.1" + }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, + "DIPCALL": { + "dipcall": 0.3 + }, + "ECHTVAR_ANNO": { + "echtvar": "0.2.0" + }, + "ENSEMBLVEP_FILTERVEP": { + "ensemblvep": 113.0 + }, + "ENSEMBLVEP_SNV": { + "ensemblvep": 110.0 + }, + "ENSEMBLVEP_SV": { + "ensemblvep": 110.0 + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GENMOD_ANNOTATE": { + "genmod": 3.9 + }, + "GENMOD_COMPOUND": { + "genmod": 3.9 + }, + "GENMOD_MODELS": { + "genmod": 3.9 + }, + "GENMOD_SCORE": { + "genmod": 3.9 + }, + "GFASTATS_MATERNAL": { + "gfastats": "1.3.6" + }, + "GFASTATS_PATERNAL": { + "gfastats": "1.3.6" + }, + "GLNEXUS": { + "glnexus": "1.4.3-0-gcecf42e" + }, + "GUNZIP_FASTA": { + "gunzip": 1.1 + }, + "HIFIASM": { + "hifiasm": "0.20.0-r639" + }, + "HIFICNV": { + "hificnv": "1.0.0-36e6461" + }, + "LONGPHASE_HAPLOTAG": { + "longphase": "1.7.3" + }, + "LONGPHASE_PHASE": { + "longphase": "1.7.3" + }, + "MINIMAP2_ALIGN": { + "minimap2": "2.28-r1209", + "samtools": 1.2 + }, + "MINIMAP2_INDEX": { + "minimap2": "2.28-r1209" + }, + "MINIMAP2_INDEX_DIPCALL": { + "minimap2": "2.28-r1209" + }, + "MODKIT_PILEUP": { + "modkit": "0.3.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.8" + }, + "PARAPHASE": { + "minimap2": "2.28-r1209", + "paraphase": "3.1.1", + "samtools": 1.2 + }, + "RELATE_RELATE": { + "somalier": "0.2.18" + }, + "SAMPLESHEET_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "SAMTOOLS_IMPORT": { + "samtools": 1.21 + }, + "SAMTOOLS_INDEX_DIPCALL": { + "samtools": 1.21 + }, + "SAMTOOLS_INDEX_LONGPHASE": { + "samtools": 1.21 + }, + "SAMTOOLS_INDEX_TRGT": { + "samtools": 1.21 + }, + "SAMTOOLS_MERGE": { + "samtools": 1.21 + }, + "SAMTOOLS_SORT_TRGT": { + "samtools": 1.21 + }, + "SEVERUS": { + "severus": 1.1 + }, + "SOMALIER_EXTRACT": { + "somalier": "0.2.18" + }, + "SOMALIER_PED_FAMILY": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SPLITUBAM": { + "splitubam": "0.1.1" + }, + "SPLIT_BED_CHUNKS": { + "split_bed_chunks": 1.0 + }, + "STRANGER": { + "stranger": "0.9.2" + }, + "SVDB_MERGE": { + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_MERGE_SVS_CNVS": { + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_QUERY": { + "svdb": "2.8.2" + }, + "TABIX_BGZIPTABIX": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SNV": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SV": { + "tabix": 1.2 + }, + "TABIX_LONGPHASE_PHASE": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE_SVS_CNVS": { + "tabix": 1.2 + }, + "TABIX_TABIX": { + "tabix": 1.2 + }, + "TRGT_GENOTYPE": { + "trgt": "1.2.0-9eda4dd" + }, + "TRGT_MERGE": { + "trgt": "1.2.0-9eda4dd" + }, + "UNTAR_VEP_CACHE": { + "untar": 1.34 + }, + "WHATSHAP_STATS": { + "whatshap": 2.3 + }, + "Workflow": { + "genomic-medicine-sweden/nallo": "v0.4.0" + } + }, + [ + "aligned_reads", + "aligned_reads/HG002_Revio", + "aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam", + "aligned_reads/HG002_Revio/HG002_Revio_haplotagged.bam.bai", + "assembly_haplotypes", + "assembly_haplotypes/gfastats", + "assembly_haplotypes/gfastats/HG002_Revio", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio/HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz", + "assembly_variant_calling", + "assembly_variant_calling/dipcall", + "assembly_variant_calling/dipcall/HG002_Revio", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.bed", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.dip.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.bed", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap1.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.bed", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.hap2.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio/HG002_Revio.pair.vcf.gz", + "methylation", + "methylation/modkit", + "methylation/modkit/pileup", + "methylation/modkit/pileup/HG002_Revio", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_Revio/HG002_Revio_modkit_pileup_ungrouped.bed.gz.tbi", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_adapter_content_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/mosdepth-coverage-per-contig-multi.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.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_somalier.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_phased_bp_plot.txt", + "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_data/somalier_het_check_plot.txt", + "multiqc/multiqc_data/somalier_sex_check_plot.txt", + "multiqc/multiqc_data/somalier_stats.txt", + "multiqc/multiqc_data/whatshap-stats-table.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_adapter_content_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/pdf/mosdepth-coverage-per-contig-multi-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-log.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/multiqc_whatshap_phased_bp_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_het_check_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_sex_check_plot.pdf", + "multiqc/multiqc_plots/pdf/whatshap-stats-table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_adapter_content_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/png/mosdepth-coverage-per-contig-multi-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-log.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/multiqc_whatshap_phased_bp_plot.png", + "multiqc/multiqc_plots/png/somalier_het_check_plot.png", + "multiqc/multiqc_plots/png/somalier_sex_check_plot.png", + "multiqc/multiqc_plots/png/whatshap-stats-table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_adapter_content_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_plots/svg/mosdepth-coverage-per-contig-multi-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-log.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/multiqc_whatshap_phased_bp_plot.svg", + "multiqc/multiqc_plots/svg/somalier_het_check_plot.svg", + "multiqc/multiqc_plots/svg/somalier_sex_check_plot.svg", + "multiqc/multiqc_plots/svg/whatshap-stats-table.svg", + "multiqc/multiqc_report.html", + "paraphase", + "paraphase/HG002_Revio", + "paraphase/HG002_Revio/HG002_Revio.paraphase.bam", + "paraphase/HG002_Revio/HG002_Revio.paraphase.bam.bai", + "paraphase/HG002_Revio/HG002_Revio.paraphase.json", + "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs", + "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz", + "paraphase/HG002_Revio/HG002_Revio_paraphase_vcfs/HG002_Revio_hba.vcf.gz.tbi", + "pedigree", + "pedigree/family", + "pedigree/family/FAM.ped", + "phased_variants", + "phased_variants/HG002_Revio", + "phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz", + "phased_variants/HG002_Revio/HG002_Revio_phased.vcf.gz.tbi", + "pipeline_info", + "pipeline_info/nallo_pipeline_software_mqc_versions.yml", + "qc", + "qc/cramino", + "qc/cramino/phased", + "qc/cramino/phased/HG002_Revio", + "qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_Revio/HG002_Revio_cramino_aligned_phased.txt", + "qc/cramino/unphased", + "qc/cramino/unphased/HG002_Revio", + "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_Revio", + "qc/deepvariant_vcfstatsreport/HG002_Revio/HG002_Revio.visual_report.html", + "qc/fastqc", + "qc/fastqc/HG002_Revio", + "qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html", + "qc/fastqc/HG002_Revio/HG002_Revio_fastqc.zip", + "qc/mosdepth", + "qc/mosdepth/HG002_Revio", + "qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_Revio/HG002_Revio.mosdepth.summary.txt", + "qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz", + "qc/mosdepth/HG002_Revio/HG002_Revio.regions.bed.gz.csi", + "qc/phasing_stats", + "qc/phasing_stats/HG002_Revio", + "qc/phasing_stats/HG002_Revio/HG002_Revio_stats.blocks.tsv", + "qc/phasing_stats/HG002_Revio/HG002_Revio_stats.stats.tsv", + "qc/somalier", + "qc/somalier/relate", + "qc/somalier/relate/test", + "qc/somalier/relate/test/test.html", + "qc/somalier/relate/test/test.pairs.tsv", + "qc/somalier/relate/test/test.samples.tsv", + "repeats", + "repeats/family", + "repeats/family/FAM", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz.tbi", + "repeats/sample", + "repeats/sample/HG002_Revio", + "repeats/sample/HG002_Revio/HG002_Revio_sorted.vcf.gz", + "repeats/sample/HG002_Revio/HG002_Revio_sorted.vcf.gz.tbi", + "repeats/sample/HG002_Revio/HG002_Revio_spanning_sorted.bam", + "repeats/sample/HG002_Revio/HG002_Revio_spanning_sorted.bam.bai", + "snvs", + "snvs/family", + "snvs/family/FAM", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", + "snvs/sample", + "snvs/sample/HG002_Revio", + "snvs/sample/HG002_Revio/HG002_Revio_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio/HG002_Revio_snvs_annotated_ranked.vcf.gz.tbi", + "snvs/stats", + "snvs/stats/sample", + "snvs/stats/sample/HG002_Revio.vcf.gz.bcftools_stats.txt", + "svs", + "svs/family", + "svs/family/FAM", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", + "svs/sample", + "svs/sample/HG002_Revio", + "svs/sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz", + "svs/sample/HG002_Revio/HG002_Revio_cnvs.vcf.gz.tbi", + "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz", + "svs/sample/HG002_Revio/HG002_Revio_svs.vcf.gz.tbi", + "visualization_tracks", + "visualization_tracks/HG002_Revio", + "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.depth.bw", + "visualization_tracks/HG002_Revio/HG002_Revio_hificnv.maf.bw" + ], + [ + "HG002_Revio.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", + "HG002_Revio.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", + "HG002_Revio.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", + "HG002_Revio.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", + "HG002_Revio.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", + "HG002_Revio.dip.vcf.gz:md5,747ea6c9532679ae7eb5ce06f511c4c2", + "HG002_Revio.hap1.bam:md5,91467717def7554e5ed667a103b52ebb", + "HG002_Revio.hap1.bam.bai:md5,3d7137693801619c4afb4cb493c35d40", + "HG002_Revio.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", + "HG002_Revio.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", + "HG002_Revio.hap1.sam.gz:md5,87781cea76b064c23d1b63a34423b23f", + "HG002_Revio.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", + "HG002_Revio.hap2.bam:md5,f1da738bd01db5c6e5e8b18906fe30f2", + "HG002_Revio.hap2.bam.bai:md5,04a41250610872ae3bf86108be610883", + "HG002_Revio.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", + "HG002_Revio.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", + "HG002_Revio.hap2.sam.gz:md5,6d512a060c74428f7758aa51a99ae8c8", + "HG002_Revio.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", + "HG002_Revio.pair.vcf.gz:md5,1909dffa43850282fe7e5ae2b2d273a7", + "HG002_Revio_modkit_pileup_1.bed.gz:md5,ac9bfc455d0b697a4bd565b510c155e0", + "HG002_Revio_modkit_pileup_1.bed.gz.tbi:md5,5a9ac375a0ce33af002e0073635a3425", + "HG002_Revio_modkit_pileup_2.bed.gz:md5,b2c6c3fc27d34b7c588a4a4b3e9611b0", + "HG002_Revio_modkit_pileup_2.bed.gz.tbi:md5,2ad55c2f604cbdf6a784b2dd99b25cb1", + "HG002_Revio_modkit_pileup_ungrouped.bed.gz:md5,04ee840c02e04238b9432bc374a1afe1", + "HG002_Revio_modkit_pileup_ungrouped.bed.gz.tbi:md5,e1418c8075da8831a52e0cd56ceb910e", + "bcftools-stats-subtypes.txt:md5,2c23b13117d584b4f424c2bc56dfa4ba", + "bcftools_stats_indel-lengths.txt:md5,bea599c38615af6a033ea3a4436d52c5", + "fastqc-status-check-heatmap.txt:md5,f98c3e5395cfd3061b3228a97ba86043", + "fastqc_adapter_content_plot.txt:md5,85e76640241ce1fd8e3bbf42eb3fa447", + "fastqc_per_base_n_content_plot.txt:md5,c9e46e2888289c319e1b9f412cb0d8e5", + "fastqc_per_base_sequence_quality_plot.txt:md5,6900fc0ad6d05cc49412c9a169473ea8", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,4f7571e0b1ef7c917054325aff07d96f", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,70bb2678985be387db93805d5e9fbf2f", + "fastqc_per_sequence_quality_scores_plot.txt:md5,f45a447b91a80e8c6d69607057c828fa", + "fastqc_sequence_counts_plot.txt:md5,464423ea1a9c9db427b47df6f441c079", + "fastqc_sequence_duplication_levels_plot.txt:md5,3da083f3e5e3c37d8ba3d766c5ef2b85", + "fastqc_sequence_length_distribution_plot.txt:md5,014a4c2dbe604408e7b0c359252016f1", + "fastqc_top_overrepresented_sequences_table.txt:md5,21d4be95f2fc981c3f5f8fbe1855bf53", + "mosdepth-coverage-per-contig-multi.txt:md5,39f24c236ea9413f3835ddf24eea86a8", + "mosdepth-cumcoverage-dist-id.txt:md5,ae88f53eaadf28d333f1fbd490d38725", + "mosdepth_cov_dist.txt:md5,eeb7f82eb03344d26a99b6596a1c7413", + "mosdepth_cumcov_dist.txt:md5,eeb7f82eb03344d26a99b6596a1c7413", + "mosdepth_perchrom.txt:md5,53806d793d5627e60648daebb6606723", + "multiqc_bcftools_stats.txt:md5,09a616618fb506994ce178d32325159f", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,8c0330b85e73f68610d35dd71f234cce", + "multiqc_general_stats.txt:md5,8ead46d7d8d14fc8892789a40193646f", + "multiqc_whatshap_phased_bp_plot.txt:md5,41dcd2951f7a6f925f64519491c18d45", + "multiqc_whatshap_stats.txt:md5,c8c212ecc6fbf6803f8de87f2395363f", + "somalier_stats.txt:md5,150fa6b9c197c539947168c11d2115f9", + "whatshap-stats-table.txt:md5,c89df1fe6abe77dcbfce8e443c1cecde", + "FAM.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", + "HG002_Revio_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", + "HG002_Revio_stats.blocks.tsv:md5,e73960d863a78848498499480ea9937f", + "HG002_Revio_stats.stats.tsv:md5,cffa4a500350b2227ab40bbbe428e9ef", + "HG002_Revio_hificnv.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio_hificnv.depth.bw:md5,70211e34c58cd83f6c9c6f2a8bda4a3b", + "HG002_Revio_hificnv.maf.bw:md5,8340a82b7b3da36383511631ed21066c" + ], + [ + [ + "HG002_Revio_haplotagged.bam", + "3367d07489e728a2a99d9abb618841ec" + ], + [ + "HG002_Revio.hap1.bam", + "da103c401cf854a00aa75a57cda0f34d" + ], + [ + "HG002_Revio.hap2.bam", + "e8599cef23fc88e2fe09d2bda5ea372f" + ], + [ + "HG002_Revio.paraphase.bam", + "fcc3f220bb09d3264f97e7f620779be0" + ], + [ + "HG002_Revio_spanning_sorted.bam", + "a51f00198c7449fd64772fe680c6241" + ] + ], + [ + [ + "HG002_Revio.dip.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=1917, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio.pair.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1917, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_repeats_annotated.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=2, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_sorted.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=103, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_snvs_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=54, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_snvs_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=87, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=1, variantCount=5, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" + ] + ], + [ + [ + "HG002_Revio.dip.vcf.gz", + "db10cdb233cb09a46c1694536c2e79e7" + ], + [ + "HG002_Revio.pair.vcf.gz", + "fa3bfacdab5449526d29d642340d6708" + ], + [ + "FAM_repeats_annotated.vcf.gz", + "c70a3906d95d9d9c0a1a61c354302c7c" + ], + [ + "HG002_Revio_sorted.vcf.gz", + "d7d518f68789d3d51a26be28a93b9654" + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T15:33:19.851771321" + } +} \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test b/tests/samplesheet_multisample_bam.nf.test new file mode 100644 index 00000000..3099f149 --- /dev/null +++ b/tests/samplesheet_multisample_bam.nf.test @@ -0,0 +1,53 @@ +nextflow_pipeline { + + name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" + script "../main.nf" + tag "PIPELINE" + + test("samplesheet_multisample_bam | --phaser hiphase") { + tag "samplesheet_multisample_bam" + + when { + params { + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam.csv' + outdir = "$outputDir" + phaser = "hiphase" + + } + } + + 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') + // bam_files: All bam files + def bam_files = getAllFilesFromDir(params.outdir, include: ['**/*.bam']) + // all_vcf_files: All vcf files - can have unstable variants and/or unstable headers + def all_vcf_files = getAllFilesFromDir(params.outdir, include: ['**/*.vcf.gz']) + // stable_vcf_files: Vcf files with stable variants - can be snapshot unsing variantsMD5 + def stable_vcf_files = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore_unstable_variants', include: ['**/*.vcf.gz']) + 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/nallo_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path, + // All bam files + bam_files.collect{ file -> [ file.getName(), bam(file.toString(), stringency: 'silent').getReadsMD5() ] }, + // All vcf files + all_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.summary ] }, + // Stable vcf files + stable_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.variantsMD5 ] } + ).match() } + ) + } + } + +} diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap new file mode 100644 index 00000000..6a6c10e0 --- /dev/null +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -0,0 +1,877 @@ +{ + "samplesheet_multisample_bam | --phaser hiphase": { + "content": [ + 159, + { + "ADD_FOUND_IN_TAG": { + "bcftools": 1.2, + "busybox_awk": "1.36.1" + }, + "ADD_MOST_SEVERE_CSQ": { + "add_most_severe_consequence": 1.0, + "python": "3.8.3" + }, + "ADD_MOST_SEVERE_PLI": { + "add_most_severe_pli": 1.0, + "python": "3.8.3" + }, + "BCFTOOLS_CONCAT": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS_ANNO": { + "bcftools": 1.2 + }, + "BCFTOOLS_INDEX": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_MULTISAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_SINGLESAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SNVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_QUERY": { + "bcftools": 1.2 + }, + "BCFTOOLS_REHEADER": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT_TRGT": { + "bcftools": 1.2 + }, + "BCFTOOLS_STATS": { + "bcftools": 1.2 + }, + "BCFTOOLS_VIEW": { + "bcftools": 1.2 + }, + "BEDTOOLS_MERGE": { + "bedtools": "2.31.1" + }, + "BEDTOOLS_SORT": { + "bedtools": "2.31.1" + }, + "COMPRESS_STRANGER": { + "bcftools": 1.2 + }, + "CRAMINO": { + "cramino": "0.14.5" + }, + "CRAMINO_PHASED": { + "cramino": "0.14.5" + }, + "CREATE_SAMPLES_FILE": { + "gawk": "5.1.0" + }, + "DEEPVARIANT_RUNDEEPVARIANT": { + "deepvariant": "1.6.1" + }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, + "DIPCALL": { + "dipcall": 0.3 + }, + "ECHTVAR_ANNO": { + "echtvar": "0.2.0" + }, + "ENSEMBLVEP_FILTERVEP": { + "ensemblvep": 113.0 + }, + "ENSEMBLVEP_SNV": { + "ensemblvep": 110.0 + }, + "ENSEMBLVEP_SV": { + "ensemblvep": 110.0 + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GENMOD_ANNOTATE": { + "genmod": 3.9 + }, + "GENMOD_COMPOUND": { + "genmod": 3.9 + }, + "GENMOD_MODELS": { + "genmod": 3.9 + }, + "GENMOD_SCORE": { + "genmod": 3.9 + }, + "GFASTATS_MATERNAL": { + "gfastats": "1.3.6" + }, + "GFASTATS_PATERNAL": { + "gfastats": "1.3.6" + }, + "GLNEXUS": { + "glnexus": "1.4.3-0-gcecf42e" + }, + "GUNZIP_FASTA": { + "gunzip": 1.1 + }, + "HIFIASM": { + "hifiasm": "0.20.0-r639" + }, + "HIFICNV": { + "hificnv": "1.0.0-36e6461" + }, + "HIPHASE": { + "hiphase": "1.4.0-7bf2743" + }, + "MINIMAP2_ALIGN": { + "minimap2": "2.28-r1209", + "samtools": 1.2 + }, + "MINIMAP2_INDEX": { + "minimap2": "2.28-r1209" + }, + "MINIMAP2_INDEX_DIPCALL": { + "minimap2": "2.28-r1209" + }, + "MODKIT_PILEUP": { + "modkit": "0.3.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.8" + }, + "PARAPHASE": { + "minimap2": "2.28-r1209", + "paraphase": "3.1.1", + "samtools": 1.2 + }, + "RELATE_INFER": { + "somalier": "0.2.18" + }, + "RELATE_RELATE": { + "somalier": "0.2.18" + }, + "SAMPLESHEET_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "SAMTOOLS_FASTQ": { + "samtools": 1.21 + }, + "SAMTOOLS_INDEX_DIPCALL": { + "samtools": 1.21 + }, + "SAMTOOLS_INDEX_TRGT": { + "samtools": 1.21 + }, + "SAMTOOLS_MERGE": { + "samtools": 1.21 + }, + "SAMTOOLS_SORT_TRGT": { + "samtools": 1.21 + }, + "SEVERUS": { + "severus": 1.1 + }, + "SOMALIER_EXTRACT": { + "somalier": "0.2.18" + }, + "SOMALIER_PED_FAMILY": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SPLITUBAM": { + "splitubam": "0.1.1" + }, + "SPLIT_BED_CHUNKS": { + "split_bed_chunks": 1.0 + }, + "STRANGER": { + "stranger": "0.9.2" + }, + "SVDB_MERGE": { + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_MERGE_SVS_CNVS": { + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_QUERY": { + "svdb": "2.8.2" + }, + "TABIX_BGZIPTABIX": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SNV": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SV": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE_SVS_CNVS": { + "tabix": 1.2 + }, + "TABIX_TABIX": { + "tabix": 1.2 + }, + "TRGT_GENOTYPE": { + "trgt": "1.2.0-9eda4dd" + }, + "TRGT_MERGE": { + "trgt": "1.2.0-9eda4dd" + }, + "UNTAR_VEP_CACHE": { + "untar": 1.34 + }, + "WHATSHAP_STATS": { + "whatshap": 2.3 + }, + "Workflow": { + "genomic-medicine-sweden/nallo": "v0.4.0" + } + }, + [ + "aligned_reads", + "aligned_reads/HG002_Revio_A", + "aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam", + "aligned_reads/HG002_Revio_A/HG002_Revio_A_haplotagged.bam.bai", + "aligned_reads/HG002_Revio_B", + "aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam", + "aligned_reads/HG002_Revio_B/HG002_Revio_B_haplotagged.bam.bai", + "assembly_haplotypes", + "assembly_haplotypes/gfastats", + "assembly_haplotypes/gfastats/HG002_Revio_A", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_A/HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio_B", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary", + "assembly_haplotypes/gfastats/HG002_Revio_B/HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz", + "assembly_variant_calling", + "assembly_variant_calling/dipcall", + "assembly_variant_calling/dipcall/HG002_Revio_A", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.bed", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.dip.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.bed", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap1.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.bed", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.hap2.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_A/HG002_Revio_A.pair.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.bed", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.dip.vcf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.bed", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap1.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bam.bai", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.bed", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.paf.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.sam.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.hap2.var.gz", + "assembly_variant_calling/dipcall/HG002_Revio_B/HG002_Revio_B.pair.vcf.gz", + "methylation", + "methylation/modkit", + "methylation/modkit/pileup", + "methylation/modkit/pileup/HG002_Revio_A", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_Revio_A/HG002_Revio_A_modkit_pileup_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_B", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_Revio_B/HG002_Revio_B_modkit_pileup_ungrouped.bed.gz.tbi", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.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/mosdepth-coverage-per-contig-multi.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.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_somalier.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_phased_bp_plot.txt", + "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_data/somalier_het_check_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_heatmap_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_plot.txt", + "multiqc/multiqc_data/somalier_sex_check_plot.txt", + "multiqc/multiqc_data/somalier_stats.txt", + "multiqc/multiqc_data/whatshap-stats-table.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.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/pdf/mosdepth-coverage-per-contig-multi-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-log.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/multiqc_whatshap_phased_bp_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_het_check_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_heatmap_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_sex_check_plot.pdf", + "multiqc/multiqc_plots/pdf/whatshap-stats-table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.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/png/mosdepth-coverage-per-contig-multi-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-log.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/multiqc_whatshap_phased_bp_plot.png", + "multiqc/multiqc_plots/png/somalier_het_check_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_heatmap_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_plot.png", + "multiqc/multiqc_plots/png/somalier_sex_check_plot.png", + "multiqc/multiqc_plots/png/whatshap-stats-table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.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_plots/svg/mosdepth-coverage-per-contig-multi-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-log.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/multiqc_whatshap_phased_bp_plot.svg", + "multiqc/multiqc_plots/svg/somalier_het_check_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_heatmap_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_plot.svg", + "multiqc/multiqc_plots/svg/somalier_sex_check_plot.svg", + "multiqc/multiqc_plots/svg/whatshap-stats-table.svg", + "multiqc/multiqc_report.html", + "paraphase", + "paraphase/HG002_Revio_A", + "paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam", + "paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.bam.bai", + "paraphase/HG002_Revio_A/HG002_Revio_A.paraphase.json", + "paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs", + "paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz", + "paraphase/HG002_Revio_A/HG002_Revio_A_paraphase_vcfs/HG002_Revio_A_hba.vcf.gz.tbi", + "paraphase/HG002_Revio_B", + "paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam", + "paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.bam.bai", + "paraphase/HG002_Revio_B/HG002_Revio_B.paraphase.json", + "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs", + "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz", + "paraphase/HG002_Revio_B/HG002_Revio_B_paraphase_vcfs/HG002_Revio_B_hba.vcf.gz.tbi", + "pedigree", + "pedigree/family", + "pedigree/family/FAM.ped", + "phased_variants", + "phased_variants/HG002_Revio_A", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.blocks.tsv", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.stats.tsv", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.summary.tsv", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz", + "phased_variants/HG002_Revio_A/HG002_Revio_A_phased.vcf.gz.tbi", + "phased_variants/HG002_Revio_B", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.blocks.tsv", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.stats.tsv", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.summary.tsv", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz", + "phased_variants/HG002_Revio_B/HG002_Revio_B_phased.vcf.gz.tbi", + "pipeline_info", + "pipeline_info/nallo_pipeline_software_mqc_versions.yml", + "qc", + "qc/cramino", + "qc/cramino/phased", + "qc/cramino/phased/HG002_Revio_A", + "qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_Revio_A/HG002_Revio_A_cramino_aligned_phased.txt", + "qc/cramino/phased/HG002_Revio_B", + "qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_Revio_B/HG002_Revio_B_cramino_aligned_phased.txt", + "qc/cramino/unphased", + "qc/cramino/unphased/HG002_Revio_A", + "qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_Revio_A/HG002_Revio_A_cramino_aligned.txt", + "qc/cramino/unphased/HG002_Revio_B", + "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_Revio_A", + "qc/deepvariant_vcfstatsreport/HG002_Revio_A/HG002_Revio_A.visual_report.html", + "qc/deepvariant_vcfstatsreport/HG002_Revio_B", + "qc/deepvariant_vcfstatsreport/HG002_Revio_B/HG002_Revio_B.visual_report.html", + "qc/fastqc", + "qc/fastqc/HG002_Revio_A", + "qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html", + "qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.zip", + "qc/fastqc/HG002_Revio_B", + "qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.html", + "qc/fastqc/HG002_Revio_B/HG002_Revio_B_fastqc.zip", + "qc/mosdepth", + "qc/mosdepth/HG002_Revio_A", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.mosdepth.summary.txt", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz", + "qc/mosdepth/HG002_Revio_A/HG002_Revio_A.regions.bed.gz.csi", + "qc/mosdepth/HG002_Revio_B", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.mosdepth.summary.txt", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz", + "qc/mosdepth/HG002_Revio_B/HG002_Revio_B.regions.bed.gz.csi", + "qc/phasing_stats", + "qc/phasing_stats/HG002_Revio_A", + "qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.blocks.tsv", + "qc/phasing_stats/HG002_Revio_A/HG002_Revio_A_stats.stats.tsv", + "qc/phasing_stats/HG002_Revio_B", + "qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.blocks.tsv", + "qc/phasing_stats/HG002_Revio_B/HG002_Revio_B_stats.stats.tsv", + "qc/somalier", + "qc/somalier/relate", + "qc/somalier/relate/test", + "qc/somalier/relate/test/test.html", + "qc/somalier/relate/test/test.pairs.tsv", + "qc/somalier/relate/test/test.samples.tsv", + "repeats", + "repeats/family", + "repeats/family/FAM", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz", + "repeats/family/FAM/FAM_repeats_annotated.vcf.gz.tbi", + "repeats/sample", + "repeats/sample/HG002_Revio_A", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_sorted.vcf.gz.tbi", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam", + "repeats/sample/HG002_Revio_A/HG002_Revio_A_spanning_sorted.bam.bai", + "repeats/sample/HG002_Revio_B", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_sorted.vcf.gz.tbi", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam", + "repeats/sample/HG002_Revio_B/HG002_Revio_B_spanning_sorted.bam.bai", + "snvs", + "snvs/family", + "snvs/family/FAM", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", + "snvs/sample", + "snvs/sample/HG002_Revio_A", + "snvs/sample/HG002_Revio_A/HG002_Revio_A_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio_A/HG002_Revio_A_snvs_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_Revio_B", + "snvs/sample/HG002_Revio_B/HG002_Revio_B_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_Revio_B/HG002_Revio_B_snvs_annotated_ranked.vcf.gz.tbi", + "snvs/stats", + "snvs/stats/sample", + "snvs/stats/sample/HG002_Revio_A.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample/HG002_Revio_B.vcf.gz.bcftools_stats.txt", + "svs", + "svs/family", + "svs/family/FAM", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", + "svs/sample", + "svs/sample/HG002_Revio_A", + "svs/sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz", + "svs/sample/HG002_Revio_A/HG002_Revio_A_cnvs.vcf.gz.tbi", + "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz", + "svs/sample/HG002_Revio_A/HG002_Revio_A_svs.vcf.gz.tbi", + "svs/sample/HG002_Revio_B", + "svs/sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz", + "svs/sample/HG002_Revio_B/HG002_Revio_B_cnvs.vcf.gz.tbi", + "svs/sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz", + "svs/sample/HG002_Revio_B/HG002_Revio_B_svs.vcf.gz.tbi", + "visualization_tracks", + "visualization_tracks/HG002_Revio_A", + "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.depth.bw", + "visualization_tracks/HG002_Revio_A/HG002_Revio_A_hificnv.maf.bw", + "visualization_tracks/HG002_Revio_B", + "visualization_tracks/HG002_Revio_B/HG002_Revio_B_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_Revio_B/HG002_Revio_B_hificnv.depth.bw", + "visualization_tracks/HG002_Revio_B/HG002_Revio_B_hificnv.maf.bw" + ], + [ + "HG002_Revio_A.asm.bp.hap1.p_ctg.assembly_summary:md5,b949217515292b5a7735af4ad4bd5b11", + "HG002_Revio_A.asm.bp.hap1.p_ctg.fasta.gz:md5,380ed173f8d50419a86c229dd81a20c2", + "HG002_Revio_A.asm.bp.hap2.p_ctg.assembly_summary:md5,c3e50f54e9e2871771d1735c54e57c5e", + "HG002_Revio_A.asm.bp.hap2.p_ctg.fasta.gz:md5,6ca4cd66b46b2bf7b1ed1ee959fba6ab", + "HG002_Revio_B.asm.bp.hap1.p_ctg.assembly_summary:md5,7fd907d993bf1140eabc2f3c2116df96", + "HG002_Revio_B.asm.bp.hap1.p_ctg.fasta.gz:md5,323fd57714246acb37e4e5d55e953429", + "HG002_Revio_B.asm.bp.hap2.p_ctg.assembly_summary:md5,241c10b531eae6c6bd56d71be2b0806c", + "HG002_Revio_B.asm.bp.hap2.p_ctg.fasta.gz:md5,6481372dcc00afaea3418749a04ffbbf", + "HG002_Revio_A.dip.bed:md5,8230ffcc5539eef359ab5128fa60e765", + "HG002_Revio_A.dip.vcf.gz:md5,d5a5d0620cba624a482d0e48e725e232", + "HG002_Revio_A.hap1.bam:md5,f5f71f0f37cf23c69981468ed1acc977", + "HG002_Revio_A.hap1.bam.bai:md5,3e8c67dc7fc05362ff09ecbd9d43c205", + "HG002_Revio_A.hap1.bed:md5,44dcedabe0edb29af441df1f0b55210a", + "HG002_Revio_A.hap1.paf.gz:md5,680a7278a2d492ed6ee5c7b19dd5d80f", + "HG002_Revio_A.hap1.sam.gz:md5,7588cdfcad98f12558e80eca03e22a7f", + "HG002_Revio_A.hap1.var.gz:md5,bd714e935825d8c665445d93c7d82206", + "HG002_Revio_A.hap2.bam:md5,490c6e0d6aeef42da8b430a237b390c2", + "HG002_Revio_A.hap2.bam.bai:md5,04a41250610872ae3bf86108be610883", + "HG002_Revio_A.hap2.bed:md5,6b4b879d4ebe97f778921252469a029c", + "HG002_Revio_A.hap2.paf.gz:md5,77ff9e7c1b0ed8454f7a10beba01cbf9", + "HG002_Revio_A.hap2.sam.gz:md5,981e2e08c4b9b4d1d16410514440c2d6", + "HG002_Revio_A.hap2.var.gz:md5,9ba9303b30730e419138e177c7d1e0c2", + "HG002_Revio_A.pair.vcf.gz:md5,4680402dd40f18cc177bd50fb618e6f4", + "HG002_Revio_B.dip.bed:md5,395e61d926c5f9cbda71f770182a52b6", + "HG002_Revio_B.dip.vcf.gz:md5,3b3644ef50af7d513e44e09bf043d129", + "HG002_Revio_B.hap1.bam:md5,c0efe721c19a94dab1037b7a80a8ee05", + "HG002_Revio_B.hap1.bam.bai:md5,479da74059364a71bd24a0a6b98edf8f", + "HG002_Revio_B.hap1.bed:md5,8d007624a4935390fb4731817e251cff", + "HG002_Revio_B.hap1.paf.gz:md5,df23f568c86230a5dea8719e47d233b8", + "HG002_Revio_B.hap1.sam.gz:md5,36f83a3f60747d41f1472a726d2ddad1", + "HG002_Revio_B.hap1.var.gz:md5,6234237b2aee91083b6d4c67a91c0d0b", + "HG002_Revio_B.hap2.bam:md5,2081ccd985b5cf938a258183a296aedf", + "HG002_Revio_B.hap2.bam.bai:md5,d28e7fd4f409cac6d9fb07781aa2184c", + "HG002_Revio_B.hap2.bed:md5,f4d086b5254b13a8d7836290d2c1b1cb", + "HG002_Revio_B.hap2.paf.gz:md5,b1cffc2fa1ed71057acc9cef610a7fc6", + "HG002_Revio_B.hap2.sam.gz:md5,ecdf9b9d50b54776d0555c71a194af7e", + "HG002_Revio_B.hap2.var.gz:md5,f09b01fcb43bf64f92ca7ec8a2380c25", + "HG002_Revio_B.pair.vcf.gz:md5,676492865a9d4765835638d52651af73", + "HG002_Revio_A_modkit_pileup_1.bed.gz:md5,7af3b6246d0c007aec686714b96a0f7f", + "HG002_Revio_A_modkit_pileup_1.bed.gz.tbi:md5,b7083ebf6ba176ed5a472ad653c5be27", + "HG002_Revio_A_modkit_pileup_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", + "HG002_Revio_A_modkit_pileup_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", + "HG002_Revio_A_modkit_pileup_ungrouped.bed.gz:md5,9a077eb24b17d6511e849c5b533cda64", + "HG002_Revio_A_modkit_pileup_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", + "HG002_Revio_B_modkit_pileup_1.bed.gz:md5,d8c15e30192ce878d17dffcc0981658a", + "HG002_Revio_B_modkit_pileup_1.bed.gz.tbi:md5,2d400d38de3f45871bffac0ca0d3d7d3", + "HG002_Revio_B_modkit_pileup_2.bed.gz:md5,a2e1291b468361412899cf811022fe72", + "HG002_Revio_B_modkit_pileup_2.bed.gz.tbi:md5,d1c192d65d8fa8cbb8ffa2e545282fde", + "HG002_Revio_B_modkit_pileup_ungrouped.bed.gz:md5,49d9380eb739081b7a0b4dfa7756d09c", + "HG002_Revio_B_modkit_pileup_ungrouped.bed.gz.tbi:md5,f569a923cc5204df5dc495354ab83a13", + "bcftools-stats-subtypes.txt:md5,5b9c985c35950dfb8cd7827fc8d524c4", + "bcftools_stats_indel-lengths.txt:md5,9272a5340f808c3f5874f1b2fd18da6c", + "fastqc-status-check-heatmap.txt:md5,20c6520b895e05df6cfeab492819e94a", + "fastqc_adapter_content_plot.txt:md5,8f9e7b3e1e31caeb58b0fbf31624ea53", + "fastqc_overrepresented_sequences_plot.txt:md5,9b021bffa0a2d100fdbe637fa7c40a62", + "fastqc_per_base_n_content_plot.txt:md5,47f64b0eb087268bae1d1172c4ce31d6", + "fastqc_per_base_sequence_quality_plot.txt:md5,a3d1e7e58b6c859a06f661f01f920ce7", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,cfbe632f2c5e4a519381c3e3e807909f", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,1172a95a897c2f171dab3d12ce10a70a", + "fastqc_per_sequence_quality_scores_plot.txt:md5,89d24f2fe5c673e9dcf3dbb97e4aa477", + "fastqc_sequence_counts_plot.txt:md5,70873e76a534c7a52c0fc5a87a071121", + "fastqc_sequence_duplication_levels_plot.txt:md5,af3f96831de8d9953021be605fea74cd", + "fastqc_sequence_length_distribution_plot.txt:md5,f857786dd1f7dba0aa558980009d19d4", + "fastqc_top_overrepresented_sequences_table.txt:md5,966e1c4f34623fbf427d2ce5d1adf926", + "mosdepth-coverage-per-contig-multi.txt:md5,9ad34655cae2598a7448da87e147643e", + "mosdepth-cumcoverage-dist-id.txt:md5,f82fef24eefb391616c07268fcc826b4", + "mosdepth_cov_dist.txt:md5,c53933e0b572d115ecd35a5adb3e0a04", + "mosdepth_cumcov_dist.txt:md5,c53933e0b572d115ecd35a5adb3e0a04", + "mosdepth_perchrom.txt:md5,9fd9c40c7a6be06a338f2039a5d91fb8", + "multiqc_bcftools_stats.txt:md5,dbbc176792fbf2845547dfdcd39fc208", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,e466de366de86998b84ba6c25aafafd6", + "multiqc_general_stats.txt:md5,d1bfae61713bed6068386db5cb92cde9", + "multiqc_whatshap_phased_bp_plot.txt:md5,d70d629693c3229c37750440636c0a90", + "multiqc_whatshap_stats.txt:md5,96447de4e14a9b4a570c24513de64970", + "somalier_stats.txt:md5,5f523bdaa8f6b6bf1581694564521891", + "whatshap-stats-table.txt:md5,862f90185133703811c955c45f5750fa", + "FAM.ped:md5,24d8694d580f782ed77d4d1b5c6f6fb4", + "HG002_Revio_A_phased.blocks.tsv:md5,27ce044ba581da15ef838cbb343a64cf", + "HG002_Revio_A_phased.stats.tsv:md5,58ae1b01d01b922d022ad025a81f1026", + "HG002_Revio_A_phased.summary.tsv:md5,714496292cba53669081ac3be3078c28", + "HG002_Revio_B_phased.blocks.tsv:md5,07e7c8ebfff969db8d16890aa6a4766b", + "HG002_Revio_B_phased.stats.tsv:md5,f5d83609c032dee6d3056559a5994b15", + "HG002_Revio_B_phased.summary.tsv:md5,4acacb1a89a27ddf4c4ca49c49899245", + "HG002_Revio_A_cramino_aligned_phased.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_B_cramino_aligned_phased.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_A_cramino_aligned.arrow:md5,72df2934ff8aa7e1bf8cf8a4881a0d2a", + "HG002_Revio_B_cramino_aligned.arrow:md5,544a6513e7604d6425a664855212eced", + "HG002_Revio_A.mosdepth.global.dist.txt:md5,6186315d4d65eda85553af82a98829d1", + "HG002_Revio_A.mosdepth.region.dist.txt:md5,c6c7ee8f056b8b2b92c97ec472b1db16", + "HG002_Revio_A.mosdepth.summary.txt:md5,35c51f1ad9d2856d1e6446205f19a8e3", + "HG002_Revio_A.regions.bed.gz:md5,e051f64c7a780d67ea6727a327dd4281", + "HG002_Revio_A.regions.bed.gz.csi:md5,026eef1c69fb4aa3a1687463fe2088ab", + "HG002_Revio_B.mosdepth.global.dist.txt:md5,830a8b737fea939dcfea4d1626e60576", + "HG002_Revio_B.mosdepth.region.dist.txt:md5,d4cb66ac28dc6816869a73757226f902", + "HG002_Revio_B.mosdepth.summary.txt:md5,191877ae5228e7880276585557a7b218", + "HG002_Revio_B.regions.bed.gz:md5,9c4c037139c752c60385d3c0b905af7f", + "HG002_Revio_B.regions.bed.gz.csi:md5,d0640255d527e36655281f64e184b02c", + "HG002_Revio_A_stats.blocks.tsv:md5,846f21bc3d8dd9e9d68cb00d63484ec2", + "HG002_Revio_A_stats.stats.tsv:md5,1504949804b510cc57d20e2c78fb7294", + "HG002_Revio_B_stats.blocks.tsv:md5,df646f43e67f37df5a9ec148e431d4c3", + "HG002_Revio_B_stats.stats.tsv:md5,40994b57e7c0bafee411bc2ad6ffb79d", + "HG002_Revio_A_hificnv.copynum.bedgraph:md5,517bc59c1b235490c79aa8319437b033", + "HG002_Revio_A_hificnv.depth.bw:md5,70211e34c58cd83f6c9c6f2a8bda4a3b", + "HG002_Revio_A_hificnv.maf.bw:md5,8340a82b7b3da36383511631ed21066c", + "HG002_Revio_B_hificnv.copynum.bedgraph:md5,42095da173e46804977bbbecc2fda3aa", + "HG002_Revio_B_hificnv.depth.bw:md5,f49416b122b334f3defe7bee6dd60d48", + "HG002_Revio_B_hificnv.maf.bw:md5,186a7500b0c039650f726480e44b621d" + ], + [ + [ + "HG002_Revio_A_haplotagged.bam", + "74b4822241bd8d1bc42f494f1f3e326c" + ], + [ + "HG002_Revio_B_haplotagged.bam", + "4fc125e25365fa6e33193fd436ae135d" + ], + [ + "HG002_Revio_A.hap1.bam", + "da103c401cf854a00aa75a57cda0f34d" + ], + [ + "HG002_Revio_A.hap2.bam", + "e8599cef23fc88e2fe09d2bda5ea372f" + ], + [ + "HG002_Revio_B.hap1.bam", + "2352f7a9960c400d8182ad2ec442887" + ], + [ + "HG002_Revio_B.hap2.bam", + "6e4f7fa25e9905d538ecc65f923806" + ], + [ + "HG002_Revio_A.paraphase.bam", + "fcc3f220bb09d3264f97e7f620779be0" + ], + [ + "HG002_Revio_B.paraphase.bam", + "fcc3f220bb09d3264f97e7f620779be0" + ], + [ + "HG002_Revio_A_spanning_sorted.bam", + "a51f00198c7449fd64772fe680c6241" + ], + [ + "HG002_Revio_B_spanning_sorted.bam", + "a51f00198c7449fd64772fe680c6241" + ] + ], + [ + [ + "HG002_Revio_A.dip.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=1917, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A.pair.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1917, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B.dip.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=1862, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B.pair.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=1862, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2121, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=191, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_repeats_annotated.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=2, variantCount=2, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_sorted.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_sorted.vcf.gz", + "VcfFile [chromosomes=[chr20], sampleCount=1, variantCount=1, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=104, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_snvs_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=55, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_snvs_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_snvs_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=100, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=87, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=5, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_A_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=36, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_Revio_B_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=55, phased=false, phasedAutodetect=false]" + ] + ], + [ + [ + "HG002_Revio_A.dip.vcf.gz", + "db10cdb233cb09a46c1694536c2e79e7" + ], + [ + "HG002_Revio_A.pair.vcf.gz", + "fa3bfacdab5449526d29d642340d6708" + ], + [ + "HG002_Revio_B.dip.vcf.gz", + "eecfa7a0111b2ababb2e37fb91686b3f" + ], + [ + "HG002_Revio_B.pair.vcf.gz", + "83dc2bb5d8f46bf3daf99f27e4d3b022" + ], + [ + "FAM_repeats_annotated.vcf.gz", + "951b776cf91119f9962b75756acedbd0" + ], + [ + "HG002_Revio_A_sorted.vcf.gz", + "d7d518f68789d3d51a26be28a93b9654" + ], + [ + "HG002_Revio_B_sorted.vcf.gz", + "d7d518f68789d3d51a26be28a93b9654" + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T15:15:01.966301935" + } +} \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test b/tests/samplesheet_multisample_ont_bam.nf.test new file mode 100644 index 00000000..826bcd65 --- /dev/null +++ b/tests/samplesheet_multisample_ont_bam.nf.test @@ -0,0 +1,55 @@ +nextflow_pipeline { + + name "Test pipeline GENOMICMEDICINESWEDEN_NALLO" + script "../main.nf" + tag "PIPELINE" + + test("samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --alignment_processes 1 --snv_calling_processes 1") { + tag "samplesheet_multisample_ont_bam" + + when { + params { + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/genomic-medicine-sweden/test-datasets/ba720cd29322036d966ab3e4bc4c3d03e1731af5/' + input = params.pipelines_testdata_base_path + 'testdata/samplesheet_multisample_bam_ont.csv' + outdir = "$outputDir" + preset = 'ONT_R10' + alignment_processes = 1 + snv_calling_processes = 1 + phaser = "whatshap" + } + } + + 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') + // bam_files: All bam files + def bam_files = getAllFilesFromDir(params.outdir, include: ['**/*.bam']) + // all_vcf_files: All vcf files - can have unstable variants and/or unstable headers + def all_vcf_files = getAllFilesFromDir(params.outdir, include: ['**/*.vcf.gz']) + // stable_vcf_files: Vcf files with stable variants - can be snapshot unsing variantsMD5 + def stable_vcf_files = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore_unstable_variants', include: ['**/*.vcf.gz']) + 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/nallo_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path, + // All bam files + bam_files.collect{ file -> [ file.getName(), bam(file.toString(), stringency: 'silent').getReadsMD5() ] }, + // All vcf files + all_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.summary ] }, + // Stable vcf files + stable_vcf_files.collect{ file -> [ file.getName(), path(file.toString()).vcf.variantsMD5 ] } + ).match() } + ) + } + } + +} diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap new file mode 100644 index 00000000..01e5e5ab --- /dev/null +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -0,0 +1,643 @@ +{ + "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --alignment_processes 1 --snv_calling_processes 1": { + "content": [ + 107, + { + "ADD_FOUND_IN_TAG": { + "bcftools": 1.2, + "busybox_awk": "1.36.1" + }, + "ADD_MOST_SEVERE_CSQ": { + "add_most_severe_consequence": 1.0, + "python": "3.8.3" + }, + "ADD_MOST_SEVERE_PLI": { + "add_most_severe_pli": 1.0, + "python": "3.8.3" + }, + "BCFTOOLS_CONCAT": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS": { + "bcftools": 1.2 + }, + "BCFTOOLS_FILLTAGS_ANNO": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_MULTISAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_NORM_SINGLESAMPLE": { + "bcftools": 1.2 + }, + "BCFTOOLS_PLUGINSPLIT_SNVS": { + "bcftools": 1.2 + }, + "BCFTOOLS_QUERY": { + "bcftools": 1.2 + }, + "BCFTOOLS_REHEADER": { + "bcftools": 1.2 + }, + "BCFTOOLS_SORT": { + "bcftools": 1.2 + }, + "BCFTOOLS_STATS": { + "bcftools": 1.2 + }, + "BCFTOOLS_VIEW": { + "bcftools": 1.2 + }, + "BEDTOOLS_MERGE": { + "bedtools": "2.31.1" + }, + "BEDTOOLS_SORT": { + "bedtools": "2.31.1" + }, + "CRAMINO": { + "cramino": "0.14.5" + }, + "CRAMINO_PHASED": { + "cramino": "0.14.5" + }, + "CREATE_SAMPLES_FILE": { + "gawk": "5.1.0" + }, + "DEEPVARIANT_RUNDEEPVARIANT": { + "deepvariant": "1.6.1" + }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, + "ECHTVAR_ANNO": { + "echtvar": "0.2.0" + }, + "ENSEMBLVEP_FILTERVEP": { + "ensemblvep": 113.0 + }, + "ENSEMBLVEP_SNV": { + "ensemblvep": 110.0 + }, + "ENSEMBLVEP_SV": { + "ensemblvep": 110.0 + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GENMOD_ANNOTATE": { + "genmod": 3.9 + }, + "GENMOD_COMPOUND": { + "genmod": 3.9 + }, + "GENMOD_MODELS": { + "genmod": 3.9 + }, + "GENMOD_SCORE": { + "genmod": 3.9 + }, + "GLNEXUS": { + "glnexus": "1.4.3-0-gcecf42e" + }, + "GUNZIP_FASTA": { + "gunzip": 1.1 + }, + "HIFICNV": { + "hificnv": "1.0.0-36e6461" + }, + "MINIMAP2_ALIGN": { + "minimap2": "2.28-r1209", + "samtools": 1.2 + }, + "MINIMAP2_INDEX": { + "minimap2": "2.28-r1209" + }, + "MODKIT_PILEUP": { + "modkit": "0.3.0" + }, + "MOSDEPTH": { + "mosdepth": "0.3.8" + }, + "PARAPHASE": { + "minimap2": "2.28-r1209", + "paraphase": "3.1.1", + "samtools": 1.2 + }, + "RELATE_RELATE": { + "somalier": "0.2.18" + }, + "SAMPLESHEET_PED": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "SAMTOOLS_INDEX_WHATSHAP": { + "samtools": 1.21 + }, + "SAMTOOLS_MERGE": { + "samtools": 1.21 + }, + "SEVERUS": { + "severus": 1.1 + }, + "SOMALIER_EXTRACT": { + "somalier": "0.2.18" + }, + "SOMALIER_PED_FAMILY": { + "create_pedigree_file": 1.0, + "python": "3.8.3" + }, + "SPLIT_BED_CHUNKS": { + "split_bed_chunks": 1.0 + }, + "SVDB_MERGE": { + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_MERGE_SVS_CNVS": { + "svdb": "2.8.2", + "bcftools": 1.21 + }, + "SVDB_QUERY": { + "svdb": "2.8.2" + }, + "TABIX_BGZIPTABIX": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SNV": { + "tabix": 1.2 + }, + "TABIX_ENSEMBLVEP_SV": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE": { + "tabix": 1.2 + }, + "TABIX_SVDB_MERGE_SVS_CNVS": { + "tabix": 1.2 + }, + "TABIX_TABIX": { + "tabix": 1.2 + }, + "UNTAR_VEP_CACHE": { + "untar": 1.34 + }, + "WHATSHAP_HAPLOTAG": { + "whatshap": 2.3 + }, + "WHATSHAP_PHASE": { + "whatshap": 2.3, + "bgzip": 1.2, + "tabix": 1.2 + }, + "WHATSHAP_STATS": { + "whatshap": 2.3 + }, + "Workflow": { + "genomic-medicine-sweden/nallo": "v0.4.0" + } + }, + [ + "aligned_reads", + "aligned_reads/HG002_ONT_A", + "aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam", + "aligned_reads/HG002_ONT_A/HG002_ONT_A_haplotagged.bam.bai", + "aligned_reads/HG002_ONT_B", + "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam", + "aligned_reads/HG002_ONT_B/HG002_ONT_B_haplotagged.bam.bai", + "methylation", + "methylation/modkit", + "methylation/modkit/pileup", + "methylation/modkit/pileup/HG002_ONT_A", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_ONT_A/HG002_ONT_A_modkit_pileup_ungrouped.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_B", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_1.bed.gz", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_1.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_2.bed.gz", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_2.bed.gz.tbi", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_ungrouped.bed.gz", + "methylation/modkit/pileup/HG002_ONT_B/HG002_ONT_B_modkit_pileup_ungrouped.bed.gz.tbi", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bcftools-stats-subtypes.txt", + "multiqc/multiqc_data/bcftools_stats_indel-lengths.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Indels.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_SNP.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transitions.txt", + "multiqc/multiqc_data/bcftools_stats_vqc_Count_Transversions.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/mosdepth-coverage-per-contig-multi.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcftools_stats.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_somalier.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/multiqc_whatshap_phased_bp_plot.txt", + "multiqc/multiqc_data/multiqc_whatshap_stats.txt", + "multiqc/multiqc_data/somalier_het_check_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_heatmap_plot.txt", + "multiqc/multiqc_data/somalier_relatedness_plot.txt", + "multiqc/multiqc_data/somalier_sex_check_plot.txt", + "multiqc/multiqc_data/somalier_stats.txt", + "multiqc/multiqc_data/whatshap-stats-table.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcftools-stats-subtypes-pct.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_indel-lengths.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Indels.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_SNP.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transitions.pdf", + "multiqc/multiqc_plots/pdf/bcftools_stats_vqc_Count_Transversions.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/pdf/mosdepth-coverage-per-contig-multi-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-multi-log.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/multiqc_whatshap_phased_bp_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_het_check_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_heatmap_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_relatedness_plot.pdf", + "multiqc/multiqc_plots/pdf/somalier_sex_check_plot.pdf", + "multiqc/multiqc_plots/pdf/whatshap-stats-table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-cnt.png", + "multiqc/multiqc_plots/png/bcftools-stats-subtypes-pct.png", + "multiqc/multiqc_plots/png/bcftools_stats_indel-lengths.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Indels.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_SNP.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transitions.png", + "multiqc/multiqc_plots/png/bcftools_stats_vqc_Count_Transversions.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/png/mosdepth-coverage-per-contig-multi-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-multi-log.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/multiqc_whatshap_phased_bp_plot.png", + "multiqc/multiqc_plots/png/somalier_het_check_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_heatmap_plot.png", + "multiqc/multiqc_plots/png/somalier_relatedness_plot.png", + "multiqc/multiqc_plots/png/somalier_sex_check_plot.png", + "multiqc/multiqc_plots/png/whatshap-stats-table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-cnt.svg", + "multiqc/multiqc_plots/svg/bcftools-stats-subtypes-pct.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_indel-lengths.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Indels.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_SNP.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transitions.svg", + "multiqc/multiqc_plots/svg/bcftools_stats_vqc_Count_Transversions.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_plots/svg/mosdepth-coverage-per-contig-multi-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-multi-log.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/multiqc_whatshap_phased_bp_plot.svg", + "multiqc/multiqc_plots/svg/somalier_het_check_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_heatmap_plot.svg", + "multiqc/multiqc_plots/svg/somalier_relatedness_plot.svg", + "multiqc/multiqc_plots/svg/somalier_sex_check_plot.svg", + "multiqc/multiqc_plots/svg/whatshap-stats-table.svg", + "multiqc/multiqc_report.html", + "paraphase", + "paraphase/HG002_ONT_A", + "paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam", + "paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.bam.bai", + "paraphase/HG002_ONT_A/HG002_ONT_A.paraphase.json", + "paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs", + "paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz", + "paraphase/HG002_ONT_A/HG002_ONT_A_paraphase_vcfs/HG002_ONT_A_hba.vcf.gz.tbi", + "paraphase/HG002_ONT_B", + "paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam", + "paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.bam.bai", + "paraphase/HG002_ONT_B/HG002_ONT_B.paraphase.json", + "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs", + "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz", + "paraphase/HG002_ONT_B/HG002_ONT_B_paraphase_vcfs/HG002_ONT_B_hba.vcf.gz.tbi", + "pedigree", + "pedigree/family", + "pedigree/family/FAM.ped", + "phased_variants", + "phased_variants/HG002_ONT_A", + "phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz", + "phased_variants/HG002_ONT_A/HG002_ONT_A_phased.vcf.gz.tbi", + "phased_variants/HG002_ONT_B", + "phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz", + "phased_variants/HG002_ONT_B/HG002_ONT_B_phased.vcf.gz.tbi", + "pipeline_info", + "pipeline_info/nallo_pipeline_software_mqc_versions.yml", + "qc", + "qc/cramino", + "qc/cramino/phased", + "qc/cramino/phased/HG002_ONT_A", + "qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_ONT_A/HG002_ONT_A_cramino_aligned_phased.txt", + "qc/cramino/phased/HG002_ONT_B", + "qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.arrow", + "qc/cramino/phased/HG002_ONT_B/HG002_ONT_B_cramino_aligned_phased.txt", + "qc/cramino/unphased", + "qc/cramino/unphased/HG002_ONT_A", + "qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_ONT_A/HG002_ONT_A_cramino_aligned.txt", + "qc/cramino/unphased/HG002_ONT_B", + "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.arrow", + "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_ONT_A", + "qc/deepvariant_vcfstatsreport/HG002_ONT_A/HG002_ONT_A.visual_report.html", + "qc/deepvariant_vcfstatsreport/HG002_ONT_B", + "qc/deepvariant_vcfstatsreport/HG002_ONT_B/HG002_ONT_B.visual_report.html", + "qc/fastqc", + "qc/fastqc/HG002_ONT_A", + "qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html", + "qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.zip", + "qc/fastqc/HG002_ONT_B", + "qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.html", + "qc/fastqc/HG002_ONT_B/HG002_ONT_B_fastqc.zip", + "qc/mosdepth", + "qc/mosdepth/HG002_ONT_A", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.mosdepth.summary.txt", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz", + "qc/mosdepth/HG002_ONT_A/HG002_ONT_A.regions.bed.gz.csi", + "qc/mosdepth/HG002_ONT_B", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.global.dist.txt", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.region.dist.txt", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.mosdepth.summary.txt", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz", + "qc/mosdepth/HG002_ONT_B/HG002_ONT_B.regions.bed.gz.csi", + "qc/phasing_stats", + "qc/phasing_stats/HG002_ONT_A", + "qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.blocks.tsv", + "qc/phasing_stats/HG002_ONT_A/HG002_ONT_A_stats.stats.tsv", + "qc/phasing_stats/HG002_ONT_B", + "qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.blocks.tsv", + "qc/phasing_stats/HG002_ONT_B/HG002_ONT_B_stats.stats.tsv", + "qc/somalier", + "qc/somalier/relate", + "qc/somalier/relate/test", + "qc/somalier/relate/test/test.html", + "qc/somalier/relate/test/test.pairs.tsv", + "qc/somalier/relate/test/test.samples.tsv", + "snvs", + "snvs/family", + "snvs/family/FAM", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz", + "snvs/family/FAM/FAM_snv_annotated_ranked.vcf.gz.tbi", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz", + "snvs/family/FAM/FAM_snvs_annotated_ranked_filtered.vcf.gz.tbi", + "snvs/sample", + "snvs/sample/HG002_ONT_A", + "snvs/sample/HG002_ONT_A/HG002_ONT_A_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_ONT_A/HG002_ONT_A_snvs_annotated_ranked.vcf.gz.tbi", + "snvs/sample/HG002_ONT_B", + "snvs/sample/HG002_ONT_B/HG002_ONT_B_snvs_annotated_ranked.vcf.gz", + "snvs/sample/HG002_ONT_B/HG002_ONT_B_snvs_annotated_ranked.vcf.gz.tbi", + "snvs/stats", + "snvs/stats/sample", + "snvs/stats/sample/HG002_ONT_A.vcf.gz.bcftools_stats.txt", + "snvs/stats/sample/HG002_ONT_B.vcf.gz.bcftools_stats.txt", + "svs", + "svs/family", + "svs/family/FAM", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked.vcf.gz.tbi", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "svs/family/FAM/FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz.tbi", + "svs/sample", + "svs/sample/HG002_ONT_A", + "svs/sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz", + "svs/sample/HG002_ONT_A/HG002_ONT_A_cnvs.vcf.gz.tbi", + "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz", + "svs/sample/HG002_ONT_A/HG002_ONT_A_svs.vcf.gz.tbi", + "svs/sample/HG002_ONT_B", + "svs/sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz", + "svs/sample/HG002_ONT_B/HG002_ONT_B_cnvs.vcf.gz.tbi", + "svs/sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz", + "svs/sample/HG002_ONT_B/HG002_ONT_B_svs.vcf.gz.tbi", + "visualization_tracks", + "visualization_tracks/HG002_ONT_A", + "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.depth.bw", + "visualization_tracks/HG002_ONT_A/HG002_ONT_A_hificnv.maf.bw", + "visualization_tracks/HG002_ONT_B", + "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.copynum.bedgraph", + "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.depth.bw", + "visualization_tracks/HG002_ONT_B/HG002_ONT_B_hificnv.maf.bw" + ], + [ + "HG002_ONT_A_modkit_pileup_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", + "HG002_ONT_A_modkit_pileup_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", + "HG002_ONT_A_modkit_pileup_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", + "HG002_ONT_A_modkit_pileup_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", + "HG002_ONT_A_modkit_pileup_ungrouped.bed.gz:md5,b42b812e1dced6242ed206754c7b3f3e", + "HG002_ONT_A_modkit_pileup_ungrouped.bed.gz.tbi:md5,0c232dffb9651d934b179f95365931db", + "HG002_ONT_B_modkit_pileup_1.bed.gz:md5,2be86a42ac0384ac6d27fdf6e65304b7", + "HG002_ONT_B_modkit_pileup_1.bed.gz.tbi:md5,a7955eabc34456dce834a2c966071eaa", + "HG002_ONT_B_modkit_pileup_2.bed.gz:md5,ec565bd66fc73d380b7f9eb768369a65", + "HG002_ONT_B_modkit_pileup_2.bed.gz.tbi:md5,e6eb3c61b79a4abd0fd952f710d6eab3", + "HG002_ONT_B_modkit_pileup_ungrouped.bed.gz:md5,42dcaedf8c379a4e5dee0822d5e8aca4", + "HG002_ONT_B_modkit_pileup_ungrouped.bed.gz.tbi:md5,3d97d016882c99e4e21112fc76ceb2a2", + "bcftools-stats-subtypes.txt:md5,1a8c8da19e5bc947cfb77de3683c8c00", + "bcftools_stats_indel-lengths.txt:md5,cc976b96114f0b68daffec58a7643d53", + "fastqc-status-check-heatmap.txt:md5,03e5dc3abd2f2599a7bb03739dd5ca86", + "fastqc_adapter_content_plot.txt:md5,00c7bec7dd9304848f7d891d7d1fab7f", + "fastqc_overrepresented_sequences_plot.txt:md5,6f0148406e9d5358bf37375b33a4bc01", + "fastqc_per_base_n_content_plot.txt:md5,8551be865db8162f7d6203e0e34288e0", + "fastqc_per_base_sequence_quality_plot.txt:md5,f5e2e866bebda66cd877522342a2bf8a", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,8f108751cb49e0d80729247b84ddee76", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,2c68289482d7bffc37efe8110eff9328", + "fastqc_per_sequence_quality_scores_plot.txt:md5,eb18c5356c9bf4eae99f0103b04a8a81", + "fastqc_sequence_counts_plot.txt:md5,d80ddc5d3e3810f5bad4e04b85bd3056", + "fastqc_sequence_duplication_levels_plot.txt:md5,005e3c05e83b9e681f7d02709007df15", + "fastqc_sequence_length_distribution_plot.txt:md5,befaab9e643f27b4fc184577e2dd9dda", + "fastqc_top_overrepresented_sequences_table.txt:md5,48a5253938a61c69babe90a5c7c4b862", + "mosdepth-coverage-per-contig-multi.txt:md5,4339c1147fa7ec9059126bf4c8b6760e", + "mosdepth-cumcoverage-dist-id.txt:md5,d18aa3d23b90333c6d6d84bd0510c5c6", + "mosdepth_cov_dist.txt:md5,5ad1d589df3fa7fe5d21fc95001573a9", + "mosdepth_cumcov_dist.txt:md5,5ad1d589df3fa7fe5d21fc95001573a9", + "mosdepth_perchrom.txt:md5,86a907217d64d4c2717885403058580f", + "multiqc_bcftools_stats.txt:md5,41a78d00bdca33cf0d2a558bb60838db", + "multiqc_citations.txt:md5,a27affce20d456d20ed387097a4f0350", + "multiqc_fastqc.txt:md5,ce26d17e62f3c8a1c9a01a871a4b9586", + "multiqc_general_stats.txt:md5,0814fb98fbb85e001e9c0c04d586d602", + "multiqc_whatshap_phased_bp_plot.txt:md5,e97b7038c7155326b5d6a2289cc0aeb7", + "multiqc_whatshap_stats.txt:md5,5c4b972c8d52b3d997f117b39ba3ad5d", + "somalier_stats.txt:md5,fec840d4fe202c0e3ff7ce94b2a3bf92", + "whatshap-stats-table.txt:md5,d552daaaef1c92c3351ec2f4de64e6ad", + "FAM.ped:md5,deb1ee6bd38d6e8f7cb92801d8a12f12", + "HG002_ONT_A_cramino_aligned_phased.arrow:md5,d2a5c81595fa34925ab8f03078487d81", + "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", + "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", + "HG002_ONT_B_cramino_aligned.arrow:md5,61af72539e105cec79db7c9b78eb15a7", + "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", + "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", + "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", + "HG002_ONT_A.regions.bed.gz:md5,da66d741bb69b5c259a8611848839dc7", + "HG002_ONT_A.regions.bed.gz.csi:md5,76f06311933695287c8716fe2c8a2d20", + "HG002_ONT_B.mosdepth.global.dist.txt:md5,e551c7a9d1a26cecc99d15ac93a4a924", + "HG002_ONT_B.mosdepth.region.dist.txt:md5,11154f617f447f4c59dc192d9af4249f", + "HG002_ONT_B.mosdepth.summary.txt:md5,bcb06b29c22cb6ad200f283e72c29653", + "HG002_ONT_B.regions.bed.gz:md5,1aa62d46a1e6683da3d44c59c502354b", + "HG002_ONT_B.regions.bed.gz.csi:md5,11db27a464f8996bae5521ee7d71c1ce", + "HG002_ONT_A_stats.blocks.tsv:md5,aac8023443ddf578ffcd11121391f1cf", + "HG002_ONT_A_stats.stats.tsv:md5,27fdac1e01e6491374c631239e6183aa", + "HG002_ONT_B_stats.blocks.tsv:md5,0adf84be03536262bf8d58eda524d709", + "HG002_ONT_B_stats.stats.tsv:md5,eb2a2c3b64feb8acff4df3a1b8d33b78", + "HG002_ONT_A_hificnv.copynum.bedgraph:md5,4c5517c1783afa11ff93c8d8627fbe42", + "HG002_ONT_A_hificnv.depth.bw:md5,69c333b205994200641ea539b4c277c6", + "HG002_ONT_A_hificnv.maf.bw:md5,5b46c27cc53cc8dd68903738ab220c5f", + "HG002_ONT_B_hificnv.copynum.bedgraph:md5,7d30f621d502d16301fa79cf48a3b903", + "HG002_ONT_B_hificnv.depth.bw:md5,5153fd5b008285e0fa0bcfe5026373bf", + "HG002_ONT_B_hificnv.maf.bw:md5,02eba7a84f1de8c042e071587a81d279" + ], + [ + [ + "HG002_ONT_A_haplotagged.bam", + "53495f0b494894437c243a5c5f47c4fc" + ], + [ + "HG002_ONT_B_haplotagged.bam", + "325c284fc112dff72679b38c9ef2c2da" + ], + [ + "HG002_ONT_A.paraphase.bam", + "7b8dc04d36dc2290fd031da73e8c8553" + ], + [ + "HG002_ONT_B.paraphase.bam", + "7b8dc04d36dc2290fd031da73e8c8553" + ] + ], + [ + [ + "HG002_ONT_A_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2101, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_hba.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=2101, phased=true, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=236, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_phased.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=236, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_snv_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=105, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_snvs_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=56, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_snvs_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_snvs_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=99, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_svs_cnvs_merged_annotated_ranked.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=2, variantCount=98, phased=false, phasedAutodetect=false]" + ], + [ + "FAM_svs_cnvs_merged_annotated_ranked_filtered.vcf.gz", + "VcfFile [chromosomes=[chr16], sampleCount=2, variantCount=6, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=30, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_A_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_cnvs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16, chr20], sampleCount=1, variantCount=31, phased=false, phasedAutodetect=false]" + ], + [ + "HG002_ONT_B_svs.vcf.gz", + "VcfFile [chromosomes=[chrX, chr16], sampleCount=1, variantCount=68, phased=false, phasedAutodetect=false]" + ] + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-11-22T15:35:40.786297675" + } +} \ No newline at end of file diff --git a/workflows/nallo.nf b/workflows/nallo.nf index ebf26251..28bf7506 100644 --- a/workflows/nallo.nf +++ b/workflows/nallo.nf @@ -1,5 +1,8 @@ -include { fromSamplesheet } from 'plugin/nf-validation' - +include { samplesheetToList } from 'plugin/nf-schema' +include { + createReferenceChannelFromPath + createReferenceChannelFromSamplesheet +} from '../subworkflows/local/utils_nfcore_nallo_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT LOCAL SUBWORKFLOWS @@ -7,23 +10,28 @@ include { fromSamplesheet } from 'plugin/nf-validation' */ include { ANNOTATE_CSQ_PLI as ANN_CSQ_PLI_SNV } from '../subworkflows/local/annotate_consequence_pli' +include { ANNOTATE_CSQ_PLI as ANN_CSQ_PLI_SVS } from '../subworkflows/local/annotate_consequence_pli' +include { ANNOTATE_SVS } from '../subworkflows/local/annotate_svs' include { ANNOTATE_REPEAT_EXPANSIONS } from '../subworkflows/local/annotate_repeat_expansions' include { ASSEMBLY } from '../subworkflows/local/genome_assembly' include { ASSEMBLY_VARIANT_CALLING } from '../subworkflows/local/assembly_variant_calling' include { CONVERT_INPUT_FILES } from '../subworkflows/local/convert_input_files' include { BAM_INFER_SEX } from '../subworkflows/local/bam_infer_sex' +include { CALL_CNVS } from '../subworkflows/local/call_cnvs' include { CALL_PARALOGS } from '../subworkflows/local/call_paralogs' include { CALL_REPEAT_EXPANSIONS } from '../subworkflows/local/call_repeat_expansions' -include { CNV } from '../subworkflows/local/cnv' +include { CALL_SVS } from '../subworkflows/local/call_svs' +include { FILTER_VARIANTS as FILTER_VARIANTS_SNVS } from '../subworkflows/local/filter_variants' +include { FILTER_VARIANTS as FILTER_VARIANTS_SVS } from '../subworkflows/local/filter_variants' include { METHYLATION } from '../subworkflows/local/methylation' include { PHASING } from '../subworkflows/local/phasing' include { PREPARE_GENOME } from '../subworkflows/local/prepare_genome' include { QC_ALIGNED_READS } from '../subworkflows/local/qc_aligned_reads' include { RANK_VARIANTS as RANK_VARIANTS_SNV } from '../subworkflows/local/rank_variants' +include { RANK_VARIANTS as RANK_VARIANTS_SVS } from '../subworkflows/local/rank_variants' include { SCATTER_GENOME } from '../subworkflows/local/scatter_genome' include { SHORT_VARIANT_CALLING } from '../subworkflows/local/short_variant_calling' include { SNV_ANNOTATION } from '../subworkflows/local/snv_annotation' -include { STRUCTURAL_VARIANT_CALLING } from '../subworkflows/local/structural_variant_calling' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -32,25 +40,26 @@ include { STRUCTURAL_VARIANT_CALLING } from '../subworkflows/local/ */ // local -include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file' -include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file' -include { ECHTVAR_ENCODE } from '../modules/local/echtvar/encode/main' -include { FQCRS } from '../modules/local/fqcrs' -include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' +include { CREATE_PEDIGREE_FILE as SAMPLESHEET_PED } from '../modules/local/create_pedigree_file/main' +include { CREATE_PEDIGREE_FILE as SOMALIER_PED } from '../modules/local/create_pedigree_file/main' +include { CREATE_PEDIGREE_FILE as SOMALIER_PED_FAMILY } from '../modules/local/create_pedigree_file/main' +include { SAMTOOLS_MERGE } from '../modules/nf-core/samtools/merge/main' // nf-core -include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' -include { BCFTOOLS_PLUGINSPLIT } from '../modules/nf-core/bcftools/pluginsplit/main' -include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' -include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/main' -include { FASTQC } from '../modules/nf-core/fastqc/main' -include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' -include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { SPLITUBAM } from '../modules/nf-core/splitubam/main' -include { paramsSummaryMap } from 'plugin/nf-validation' -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_nallo_pipeline' +include { BCFTOOLS_CONCAT } from '../modules/nf-core/bcftools/concat/main' +include { BCFTOOLS_PLUGINSPLIT as BCFTOOLS_PLUGINSPLIT_SNVS } from '../modules/nf-core/bcftools/pluginsplit/main' +include { BCFTOOLS_SORT } from '../modules/nf-core/bcftools/sort/main' +include { BCFTOOLS_STATS } from '../modules/nf-core/bcftools/stats/main' +include { MINIMAP2_ALIGN } from '../modules/nf-core/minimap2/align/main' +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { SPLITUBAM } from '../modules/nf-core/splitubam/main' +include { SVDB_MERGE as SVDB_MERGE_SVS_CNVS } from '../modules/nf-core/svdb/merge/main' +include { TABIX_TABIX as TABIX_SVDB_MERGE_SVS_CNVS } from '../modules/nf-core/tabix/tabix/main' +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_nallo_pipeline' +include { citationBibliographyText } from '../subworkflows/local/utils_nfcore_nallo_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -64,148 +73,88 @@ workflow NALLO { ch_input main: - ch_vep_cache = Channel.value([]) ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - // Optional input files that has to be set depending on which workflow is run - ch_cadd_header = Channel.fromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt", checkIfExists: true).collect() - ch_cadd_resources = params.cadd_resources ? Channel.fromPath(params.cadd_resources).collect() - : '' - ch_cadd_prescored = params.cadd_prescored ? Channel.fromPath(params.cadd_prescored).collect() - : '' - ch_fasta = params.fasta ? Channel.fromPath(params.fasta).map { it -> [ it.simpleName, it ] }.collect() - : '' - ch_tandem_repeats = params.tandem_repeats ? Channel.fromPath(params.tandem_repeats).map{ [ it.simpleName, it ] }.collect() - : Channel.value([[],[]]) - ch_input_bed = params.bed ? Channel.fromPath(params.bed).map{ [ [ id:it.simpleName ] , it ] }.collect() - : Channel.value([[],[]]) - ch_par = params.par_regions ? Channel.fromPath(params.par_regions).map { [ [ id: it.simpleName ], it ] }.collect() - : '' - ch_trgt_bed = params.trgt_repeats ? Channel.fromPath(params.trgt_repeats).map { it -> [ it.simpleName, it ] }.collect() - : '' - ch_variant_catalog = params.variant_catalog ? Channel.fromPath(params.variant_catalog).map { it -> [ it.simpleName, it ] }.collect() - : '' - ch_databases = params.snp_db ? Channel.fromSamplesheet('snp_db', immutable_meta: false).map{ it[1] }.collect() - : '' - ch_variant_consequences_snv = params.variant_consequences_snv ? Channel.fromPath(params.variant_consequences_snv).collect() - : Channel.value([]) - ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache).map { it -> [ [ id:'vep_cache' ], it ] }.collect() - : Channel.value([[],[]]) - ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files).collect() - : '' - ch_expected_xy_bed = params.hificnv_xy ? Channel.fromPath(params.hificnv_xy).collect() - : '' - ch_expected_xx_bed = params.hificnv_xx ? Channel.fromPath(params.hificnv_xx).collect() - : '' - ch_exclude_bed = params.hificnv_exclude ? Channel.fromPath(params.hificnv_exclude).collect() - : '' - ch_reduced_penetrance = params.reduced_penetrance ? Channel.fromPath(params.reduced_penetrance).collect() - : Channel.value([]) - ch_score_config_snv = params.score_config_snv ? Channel.fromPath(params.score_config_snv).collect() - : Channel.value([]) - ch_somalier_sites = params.somalier_sites ? Channel.fromPath(params.somalier_sites).map { [ it.simpleName, it ] }.collect() - : '' - - // Check parameter that doesn't conform to schema validation here - if (params.phaser.matches('hiphase_sv|hiphase_snv') && params.preset == 'ONT_R10') { error "The HiPhase license only permits analysis of data from PacBio. For details see: https://github.com/PacificBiosciences/HiPhase/blob/main/LICENSE.md" } - - // Read and store paths in the vep_plugin_files file - if (params.vep_plugin_files) { - ch_vep_extra_files_unsplit.splitCsv ( header:true ) - .map { row -> - path = file(row.vep_files[0]) - if(path.isFile() || path.isDirectory()){ - return [path] - } else { - error("\nVep database file ${path} does not exist.") - } - } - .collect() - .set {ch_vep_extra_files} - } + // Channels from (optional) input files + // If provided: [[id: 'reference'], [/path/to/reference_full_name.file]] + ch_cadd_header = createReferenceChannelFromPath("$projectDir/assets/cadd_to_vcf_header_-1.0-.txt") + ch_cadd_resources = createReferenceChannelFromPath(params.cadd_resources) + ch_cadd_prescored_indels = createReferenceChannelFromPath(params.cadd_prescored_indels) + ch_fasta = createReferenceChannelFromPath(params.fasta) + ch_tandem_repeats = createReferenceChannelFromPath(params.tandem_repeats, Channel.value([[],[]])) + ch_input_bed = createReferenceChannelFromPath(params.target_regions, Channel.value([[],[]])) + ch_par = createReferenceChannelFromPath(params.par_regions) + ch_trgt_bed = createReferenceChannelFromPath(params.trgt_repeats) + ch_stranger_repeat_catalog = createReferenceChannelFromPath(params.stranger_repeat_catalog) + ch_variant_consequences_snvs = createReferenceChannelFromPath(params.variant_consequences_snvs) + ch_variant_consequences_svs = createReferenceChannelFromPath(params.variant_consequences_svs) + ch_vep_cache_unprocessed = createReferenceChannelFromPath(params.vep_cache, Channel.value([])) + ch_expected_xy_bed = createReferenceChannelFromPath(params.hificnv_expected_xy_cn) + ch_expected_xx_bed = createReferenceChannelFromPath(params.hificnv_expected_xx_cn) + ch_exclude_bed = createReferenceChannelFromPath(params.hificnv_excluded_regions) + ch_genmod_reduced_penetrance = createReferenceChannelFromPath(params.genmod_reduced_penetrance) + ch_genmod_score_config_snvs = createReferenceChannelFromPath(params.genmod_score_config_snvs) + ch_genmod_score_config_svs = createReferenceChannelFromPath(params.genmod_score_config_svs) + ch_somalier_sites = createReferenceChannelFromPath(params.somalier_sites) + ch_svdb_sv_databases = createReferenceChannelFromPath(params.svdb_sv_databases) + + // Channels from (optional) input samplesheets validated by schema + ch_databases = createReferenceChannelFromSamplesheet(params.echtvar_snv_databases, 'assets/schema_snp_db.json') + ch_vep_plugin_files = createReferenceChannelFromSamplesheet(params.vep_plugin_files, 'assets/schema_vep_plugin_files.json', Channel.value([])) + ch_hgnc_ids = createReferenceChannelFromSamplesheet(params.filter_variants_hgnc_ids, 'assets/schema_hgnc_ids.json', Channel.value([])) + .map { it[0].toString() } // only one element per row + .collectFile(name: 'hgnc_ids.txt', newLine: true, sort: true) + .map { file -> [ [ id: 'hgnc_ids' ], file ] } + .collect() // - // Convert BAM files to FASTQ and vice versa + // Convert FASTQ to BAM (and vice versa if assembly workflow is active) // - CONVERT_INPUT_FILES ( ch_input ) + CONVERT_INPUT_FILES ( + ch_input, + !params.skip_genome_assembly, // should bam -> fastq conversion be done + !params.skip_alignment // should fastq -> bam conversion be done + ) ch_versions = ch_versions.mix(CONVERT_INPUT_FILES.out.versions) // - // Run raw (unaligned) read QC with FastQC and fqcrs + // Map reads to reference // - if(!params.skip_raw_read_qc) { - - // Combine samples with multiple input files before QC - not ideal - CONVERT_INPUT_FILES.out.fastq - .groupTuple() - .branch { meta, reads -> - single: reads.size() == 1 - return [ meta, reads[0] ] - multiple: reads.size() > 1 - } - .set { ch_fastq } - - CAT_FASTQ ( ch_fastq.multiple ) - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) - - ch_fastq.single - .concat ( CAT_FASTQ.out.reads ) - .set { raw_read_qc_in } - - FASTQC ( raw_read_qc_in ) - ch_versions = ch_versions.mix(FASTQC.out.versions) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - - FQCRS ( raw_read_qc_in ) - ch_versions = ch_versions.mix(FQCRS.out.versions) - } - - // - // Prepare references - // - if(!params.skip_mapping_wf | !params.skip_assembly_wf ) { + if (!params.skip_alignment) { + // Prepeare references PREPARE_GENOME ( ch_fasta, ch_vep_cache_unprocessed, + params.fasta.endsWith('.gz'), // should we unzip fasta + params.vep_cache.endsWith("tar.gz") // should we untar vep cache ) ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) - if(!params.skip_snv_annotation) { - if (params.vep_cache) { - if (params.vep_cache.endsWith("tar.gz")) { - ch_vep_cache = PREPARE_GENOME.out.vep_resources - } else { - ch_vep_cache = Channel.fromPath(params.vep_cache).collect() - } - } - } - // Gather indices fasta = PREPARE_GENOME.out.fasta fai = PREPARE_GENOME.out.fai mmi = PREPARE_GENOME.out.mmi - } - - // - // (Split input files and), map reads to reference and merge into a single BAM per sample - // - if(!params.skip_mapping_wf) { // Split input files for alignment - if (params.parallel_alignments > 1) { + if (params.alignment_processes > 1) { SPLITUBAM ( CONVERT_INPUT_FILES.out.bam ) ch_versions = ch_versions.mix(SPLITUBAM.out.versions) - - reads_for_alignment = SPLITUBAM.out.bam.transpose() - - } else { - reads_for_alignment = CONVERT_INPUT_FILES.out.bam } - // Align (split) reads - MINIMAP2_ALIGN ( reads_for_alignment, mmi, true, 'bai', false, false ) + + // + // Align reads (could be a split-align-merge subworkflow) + // + MINIMAP2_ALIGN ( + params.alignment_processes > 1 ? SPLITUBAM.out.bam.transpose() : CONVERT_INPUT_FILES.out.bam, + mmi, + true, + 'bai', + false, + false + ) ch_versions = ch_versions.mix(MINIMAP2_ALIGN.out.versions) // Split channel into cases where we have multiple files or single files @@ -224,12 +173,16 @@ workflow NALLO { .set { bam_to_merge } // Merge files if we have multiple files per sample - SAMTOOLS_MERGE ( bam_to_merge.multiple.map { meta, bam, bai -> [ meta, bam ] }, [[],[]], [[],[]], 'bai' ) + SAMTOOLS_MERGE ( + bam_to_merge.multiple.map { meta, bam, bai -> [ meta, bam ] }, + [[],[]], + [[],[]] + ) ch_versions = ch_versions.mix(SAMTOOLS_MERGE.out.versions) // Combine merged with unmerged bams SAMTOOLS_MERGE.out.bam - .join(SAMTOOLS_MERGE.out.index) + .join(SAMTOOLS_MERGE.out.bai) .concat(bam_to_merge.single) .map { meta, bam, bai -> [ meta - meta.subMap('n_files'), bam, bai ] } .set { bam_infer_sex_in } @@ -238,7 +191,7 @@ workflow NALLO { // Create PED from samplesheet // ch_input - .map { meta, files -> [ meta.project, meta ] } + .map { meta, files -> [ [ id: meta.project ], meta ] } .groupTuple() .set { ch_samplesheet_ped_in } @@ -246,258 +199,414 @@ workflow NALLO { ch_versions = ch_versions.mix(SAMPLESHEET_PED.out.versions) SAMPLESHEET_PED.out.ped - .map { project, ped -> [ [ 'id': project ], ped ] } .collect() .set { ch_samplesheet_pedfile } // // Check sex and relatedness, and update with infered sex if the sex for a sample is unknown // - BAM_INFER_SEX ( bam_infer_sex_in, fasta, fai, ch_somalier_sites, ch_samplesheet_pedfile ) + BAM_INFER_SEX ( + bam_infer_sex_in, + fasta, + fai, + ch_somalier_sites, + ch_samplesheet_pedfile + ) ch_versions = ch_versions.mix(BAM_INFER_SEX.out.versions) - ch_multiqc_files = ch_multiqc_files.mix(BAM_INFER_SEX.out.somalier_samples.map{it[1]}.collect().ifEmpty([])) ch_multiqc_files = ch_multiqc_files.mix(BAM_INFER_SEX.out.somalier_pairs.map{it[1]}.collect().ifEmpty([])) + // Set files with updated meta for subsequent processes bam = BAM_INFER_SEX.out.bam bai = BAM_INFER_SEX.out.bai bam_bai = BAM_INFER_SEX.out.bam_bai - // - // Create PED with updated sex - // - bam - .map { meta, files -> [ meta.project, meta ] } - .groupTuple() - .set { ch_somalier_ped_in } + } - SOMALIER_PED ( ch_somalier_ped_in ) - ch_versions = ch_versions.mix(SOMALIER_PED.out.versions) + // + // Run read QC with FastQC, mosdepth and cramino + // + if (!params.skip_qc) { - SOMALIER_PED.out.ped - .map { project, ped -> [ [ 'id': project ], ped ] } - .collect() - .set { ch_updated_pedfile } + QC_ALIGNED_READS ( + bam_bai, + fasta, + ch_input_bed + ) + ch_versions = ch_versions.mix(QC_ALIGNED_READS.out.versions) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.fastqc_zip.collect { it[1] }.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_summary.collect { it[1] } ) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_global_dist.collect { it[1] } ) + ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_region_dist.collect { it[1] }.ifEmpty([]) ) - // - // Run aligned read QC with mosdepth and cramino - // - if (!params.skip_aligned_read_qc) { - QC_ALIGNED_READS( bam_bai, fasta, ch_input_bed ) - ch_versions = ch_versions.mix(QC_ALIGNED_READS.out.versions) + } - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_summary.collect { it[1] } ) - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_global_dist.collect { it[1] } ) - ch_multiqc_files = ch_multiqc_files.mix( QC_ALIGNED_READS.out.mosdepth_region_dist.collect { it[1] }.ifEmpty([]) ) - } + // + // Call paralogous genes with paraphase + // + if(!params.skip_call_paralogs) { + CALL_PARALOGS ( + bam_bai, + fasta + ) + ch_versions = ch_versions.mix(CALL_PARALOGS.out.versions) + } - // - // Call paralogous genes with paraphase - // - if(!params.skip_call_paralogs) { - CALL_PARALOGS ( bam_bai, fasta ) - ch_versions = ch_versions.mix(CALL_PARALOGS.out.versions) - } + // + // Hifiasm assembly and assembly variant calling + // + if(!params.skip_genome_assembly) { + + //Hifiasm assembly + ASSEMBLY( CONVERT_INPUT_FILES.out.fastq ) + ch_versions = ch_versions.mix(ASSEMBLY.out.versions) + + // Update assembly variant calling meta with sex from somalier + ASSEMBLY.out.assembled_haplotypes + .map { meta, hap1, hap2 -> [ meta.id, [ hap1, hap2 ] ] } + .set { haplotypes } + + bam + .map { meta, bam -> [ meta.id, meta ] } + .join( haplotypes ) + .map { id, meta, haplotypes -> [ meta, haplotypes[0], haplotypes[1] ] } + .set { ch_assembly_variant_calling_in } + + // Run dipcall + ASSEMBLY_VARIANT_CALLING ( + ch_assembly_variant_calling_in, + fasta, + fai, + ch_par + ) + ch_versions = ch_versions.mix(ASSEMBLY_VARIANT_CALLING.out.versions) + } + + // + // Call SNVs + // + if(!params.skip_snv_calling) { // - // Hifiasm assembly and assembly variant calling + // Make BED intervals, to be used for parallel SNV calling // - if(!params.skip_assembly_wf) { + SCATTER_GENOME ( + fai, + ch_input_bed, // BED file to scatter + !params.target_regions, // Make bed from fai + !params.skip_snv_calling, + params.snv_calling_processes + ) + ch_versions = ch_versions.mix(SCATTER_GENOME.out.versions) + + // Combine to create a bam_bai - interval pair for each sample + bam_bai + .combine( SCATTER_GENOME.out.bed_intervals ) + .map { meta, bam, bai, bed, intervals -> + [ meta + [ num_intervals: intervals ], bam, bai, bed ] + } + .set{ ch_snv_calling_in } + + // This subworkflow calls SNVs with DeepVariant and outputs: + // 1. A merged and normalised VCF, containing one sample with all regions, to be used in downstream subworkflows requiring SNVs. + // 2. A merged and normalised VCF, containing one region with all samples, to be used in annotation and ranking. + SHORT_VARIANT_CALLING( ch_snv_calling_in, fasta, fai, SCATTER_GENOME.out.bed, ch_par ) + ch_versions = ch_versions.mix(SHORT_VARIANT_CALLING.out.versions) - //Hifiasm assembly - ASSEMBLY( CONVERT_INPUT_FILES.out.fastq ) - ch_versions = ch_versions.mix(ASSEMBLY.out.versions) + SHORT_VARIANT_CALLING.out.family_bcf + .join( SHORT_VARIANT_CALLING.out.family_csi ) + .set { ch_vcf_tbi_per_region } + } + + // + // Annotate SNVs + // + if(!params.skip_snv_annotation) { + + // Annotates family VCFs per variant call region + SNV_ANNOTATION( + SHORT_VARIANT_CALLING.out.family_bcf, + ch_databases.map { meta, databases -> databases }.collect(), + fasta, + fai.map { name, fai -> [ [ id: name ], fai ] }, + PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache }, + params.vep_cache_version, + ch_vep_plugin_files.collect(), + (params.cadd_resources && params.cadd_prescored_indels), // should indels be annotated with CADD + ch_cadd_header, + ch_cadd_resources, + ch_cadd_prescored_indels + ) + ch_versions = ch_versions.mix(SNV_ANNOTATION.out.versions) - // Update assembly variant calling meta with sex from somalier - ASSEMBLY.out.assembled_haplotypes - .map { meta, hap1, hap2 -> [ meta.id, [ hap1, hap2 ] ] } - .set { haplotypes } + ANN_CSQ_PLI_SNV ( + SNV_ANNOTATION.out.vcf, + ch_variant_consequences_snvs + ) + ch_versions = ch_versions.mix(ANN_CSQ_PLI_SNV.out.versions) + + ANN_CSQ_PLI_SNV.out.vcf + .join( ANN_CSQ_PLI_SNV.out.tbi ) + .set { ch_vcf_tbi_per_region } + + } + + // + // Ranks family VCFs per variant call region + // Can only run if samplesheet has affected samples + // + if(!params.skip_rank_variants) { + // Create PED with updated sex - per family + SOMALIER_PED_FAMILY ( bam - .map { meta, bam -> [ meta.id, meta ] } - .join( haplotypes ) - .map { id, meta, haplotypes -> [ meta, haplotypes[0], haplotypes[1] ] } - .set { ch_assembly_variant_calling_in } - - // Run dipcall - ASSEMBLY_VARIANT_CALLING( ch_assembly_variant_calling_in, fasta, fai , ch_par) - ch_versions = ch_versions.mix(ASSEMBLY_VARIANT_CALLING.out.versions) - } + .map { meta, files -> [ [ id: meta.family_id ], meta ] } + .groupTuple() + ) + ch_versions = ch_versions.mix(SOMALIER_PED_FAMILY.out.versions) + + // Give PED file SNV meta so they can be joined later in the subworkflow. + // Since we don't always have matching number of ped files and call regions + // we need to combine and filter instead of join + ANN_CSQ_PLI_SNV.out.vcf + .map { meta, vcf -> [ [ id:meta.family_id ], meta ] } + .combine ( SOMALIER_PED_FAMILY.out.ped ) + .filter { family_id_snv, meta, family_id_ped, ped -> family_id_snv == family_id_ped } + .map { family_id_snv, meta, family_id_ped, ped -> [ meta, ped ] } + .set { snv_ranking_ped_file } + + // Only run if we have affected individuals + RANK_VARIANTS_SNV ( + ANN_CSQ_PLI_SNV.out.vcf, + snv_ranking_ped_file, + ch_genmod_reduced_penetrance, + ch_genmod_score_config_snvs + ) + ch_versions = ch_versions.mix(RANK_VARIANTS_SNV.out.versions) - // - // Call SVs with Sniffles2 - STRUCTURAL_VARIANT_CALLING( bam_bai, fasta, fai, ch_tandem_repeats ) - ch_versions = ch_versions.mix(STRUCTURAL_VARIANT_CALLING.out.versions) + RANK_VARIANTS_SNV.out.vcf + .join( RANK_VARIANTS_SNV.out.tbi ) + .set { ch_vcf_tbi_per_region } + } + + // + // Concatenate, sort, split, make database and get statistics of SNVs (should be a subworkflow) + // + if(!params.skip_snv_calling) { + + ch_vcf_tbi_per_region + .map { meta, vcf, tbi -> [ [ id: meta.family_id ], vcf, tbi ] } + .groupTuple() + .set { ch_bcftools_concat_in } + + // Concat into family VCFs per family with all regions + BCFTOOLS_CONCAT ( + ch_bcftools_concat_in + ) + ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) + + // Sort and publish + BCFTOOLS_SORT ( BCFTOOLS_CONCAT.out.vcf ) + ch_versions = ch_versions.mix(BCFTOOLS_SORT.out.versions) + + // Split family VCFs to also publish a VCF per sample + BCFTOOLS_PLUGINSPLIT_SNVS ( BCFTOOLS_SORT.out.vcf.join(BCFTOOLS_SORT.out.tbi ), [], [], [], [] ) + ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT_SNVS.out.versions) + + BCFTOOLS_PLUGINSPLIT_SNVS.out.vcf + .transpose() + .map { meta, vcf -> [ meta, vcf, [] ] } + .set { ch_bcftools_stats_snv_in } + + BCFTOOLS_STATS ( ch_bcftools_stats_snv_in, [[],[]], [[],[]], [[],[]], [[],[]], [[],[]] ) + ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions) + ch_multiqc_files = ch_multiqc_files.mix(BCFTOOLS_STATS.out.stats.collect{it[1]}.ifEmpty([])) + + } + // + // Filter SNVs + // + if(params.filter_variants_hgnc_ids || params.filter_snvs_expression != '') { + + // Publish filtered `project` SNVs from here + FILTER_VARIANTS_SNVS ( + BCFTOOLS_SORT.out.vcf, + ch_hgnc_ids, + params.filter_variants_hgnc_ids + ) + ch_versions = ch_versions.mix(FILTER_VARIANTS_SNVS.out.versions) + + } + + // + // Call SVs + // + if(!params.skip_alignment) { + + // If both CNV-calling and SV annotation is off, merged variants are output from here + CALL_SVS ( + bam_bai, + fasta, + fai, + params.sv_caller, + ch_tandem_repeats, + ch_input_bed + ) + ch_versions = ch_versions.mix(CALL_SVS.out.versions) + + CALL_SVS.out.family_vcf + .set { annotate_svs_in } + } + + // + // Call CNVs with HiFiCNV + // + if(!params.skip_cnv_calling) { + + CALL_CNVS ( + bam_bai.join(SHORT_VARIANT_CALLING.out.snp_calls_vcf), + fasta, + ch_expected_xy_bed, + ch_expected_xx_bed, + ch_exclude_bed + ) + ch_versions = ch_versions.mix(CALL_CNVS.out.versions) + + } + + // + // Merge SVs and CNVs if we've called both SVs and CNVs + // + if (!params.skip_cnv_calling) { + + CALL_SVS.out.family_vcf + .join(CALL_CNVS.out.family_vcf) + .map { meta, svs, cnvs -> [ meta, [ svs, cnvs ] ] } + .set { svdb_merge_svs_cnvs_in } + + // If SV annotation is off, merged variants are output from here (should be a merge and index subworkflow) + SVDB_MERGE_SVS_CNVS ( + svdb_merge_svs_cnvs_in, + ['svs', 'cnvs'], // Because SVs have better breakpoint resolution, give them priority + true + ) + ch_versions = ch_versions.mix(SVDB_MERGE_SVS_CNVS.out.versions) + + SVDB_MERGE_SVS_CNVS.out.vcf + .set { annotate_svs_in } + } + + // + // Index the merged SVs and SVs if not skipping sv annotation (should be a merge and index subworkflow) + // + if (!params.skip_sv_annotation) { + + TABIX_SVDB_MERGE_SVS_CNVS ( SVDB_MERGE_SVS_CNVS.out.vcf ) + ch_versions = ch_versions.mix(TABIX_SVDB_MERGE_SVS_CNVS.out.versions) + } + + // + // Annotate SVs + // + if (!params.skip_sv_annotation) { + + // If annotation is on, then merged variants are output from here + ANNOTATE_SVS ( + annotate_svs_in, + fasta, + ch_svdb_sv_databases, + PREPARE_GENOME.out.vep_resources.map { meta, cache -> cache }, + params.vep_cache_version, + ch_vep_plugin_files.collect() + ) + ch_versions = ch_versions.mix(ANNOTATE_SVS.out.versions) + + ANN_CSQ_PLI_SVS ( + ANNOTATE_SVS.out.vcf, + ch_variant_consequences_svs + ) + ch_versions = ch_versions.mix(ANN_CSQ_PLI_SVS.out.versions) + } + + // + // Rank SVs + // + if (!params.skip_rank_variants) { + + RANK_VARIANTS_SVS ( + ANN_CSQ_PLI_SVS.out.vcf, + SOMALIER_PED_FAMILY.out.ped, + ch_genmod_reduced_penetrance, + ch_genmod_score_config_svs + ) + ch_versions = ch_versions.mix(RANK_VARIANTS_SVS.out.versions) + } // - // Call (and annotate and rank) SNVs + // Filter SVs // - if(!params.skip_short_variant_calling) { - - // - // Make BED intervals, to be used for parallel SNV calling - // - SCATTER_GENOME ( - fai, - ch_input_bed, - !params.bed, - !params.skip_short_variant_calling, - params.parallel_snv - ) - ch_versions = ch_versions.mix(SCATTER_GENOME.out.versions) - - // Combine to create a bam_bai - interval pair for each sample - bam_bai - .combine( SCATTER_GENOME.out.bed_intervals ) - .map { meta, bam, bai, bed, intervals -> - [ meta + [ num_intervals: intervals ], bam, bai, bed ] - } - .set{ ch_snv_calling_in } - - // - // This subworkflow calls SNVs with DeepVariant and outputs: - // 1. A merged and normalised VCF, containing one sample with all regions, to be used in downstream subworkflows requiring SNVs. - // 2. A merged and normalised VCF, containing one region with all samples, to be used in annotation and ranking. - // - SHORT_VARIANT_CALLING( ch_snv_calling_in, fasta, fai, SCATTER_GENOME.out.bed, ch_par ) - ch_versions = ch_versions.mix(SHORT_VARIANT_CALLING.out.versions) - - // - // Annotate SNVs - // - if(!params.skip_snv_annotation) { - - // - // Annotates one multisample VCF per variant call region - // - SNV_ANNOTATION( - SHORT_VARIANT_CALLING.out.combined_bcf, - ch_databases, - fasta, - fai.map { name, fai -> [ [ id: name ], fai ] }, - ch_vep_cache, - params.vep_cache_version, - ch_vep_extra_files, - (params.cadd_resources && params.cadd_prescored), - ch_cadd_header, - ch_cadd_resources, - ch_cadd_prescored - ) - ch_versions = ch_versions.mix(SNV_ANNOTATION.out.versions) - - ANN_CSQ_PLI_SNV ( - SNV_ANNOTATION.out.vcf, - ch_variant_consequences_snv - ) - ch_versions = ch_versions.mix(ANN_CSQ_PLI_SNV.out.versions) - - // - // Ranks one multisample VCF per variant call region - // - if(!params.skip_rank_variants) { - // Only run if we have affected individuals - RANK_VARIANTS_SNV ( - ANN_CSQ_PLI_SNV.out.vcf_ann.filter { meta, vcf -> meta.contains_affected }, - ch_updated_pedfile.map { meta, ped -> ped }, - ch_reduced_penetrance, - ch_score_config_snv - ) - ch_versions = ch_versions.mix(RANK_VARIANTS_SNV.out.versions) - - // If there are affected individuals and RANK_VARIANTS has been run, - // input that to VCF concatenation - RANK_VARIANTS_SNV.out.vcf - .join( RANK_VARIANTS_SNV.out.tbi ) - .set { ch_vcf_tbi_per_region } - } else { - // otherwise grab the VCF that should have gone into RANK_VARIANTS - ANN_CSQ_PLI_SNV.out.vcf_ann - .join( ANN_CSQ_PLI_SNV.out.tbi_ann ) - .set { ch_vcf_tbi_per_region } - } - } else { - // If neither snv_annotation nor rank_variants was run, take the output from - // SHORT_VARIANT_CALLING - SHORT_VARIANT_CALLING.out.combined_bcf - .join( SHORT_VARIANT_CALLING.out.combined_csi ) - .set { ch_vcf_tbi_per_region } - } + if(params.filter_variants_hgnc_ids || params.filter_svs_expression != '') { - ch_vcf_tbi_per_region - .map { meta, vcf, tbi -> [ [ id: meta.project ], vcf, tbi ] } - .groupTuple() - .set { ch_bcftools_concat_in } - - // Concat into a multisample VCF with all regions and publish - BCFTOOLS_CONCAT ( ch_bcftools_concat_in ) - ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions) - - // Make an echtvar database of all samples - ECHTVAR_ENCODE ( BCFTOOLS_CONCAT.out.vcf ) - ch_versions = ch_versions.mix(ECHTVAR_ENCODE.out.versions) - - // Split multisample VCF to also publish a VCF per sample - BCFTOOLS_PLUGINSPLIT ( BCFTOOLS_CONCAT.out.vcf.join(BCFTOOLS_CONCAT.out.tbi ), [], [], [], [] ) - ch_versions = ch_versions.mix(BCFTOOLS_PLUGINSPLIT.out.versions) - - BCFTOOLS_PLUGINSPLIT.out.vcf - .transpose() - .map { meta, vcf -> [ meta, vcf, [] ] } - .set { ch_bcftools_stats_snv_in } - - BCFTOOLS_STATS ( ch_bcftools_stats_snv_in, [[],[]], [[],[]], [[],[]], [[],[]], [[],[]] ) - ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions) - ch_multiqc_files = ch_multiqc_files.mix(BCFTOOLS_STATS.out.stats.collect{it[1]}.ifEmpty([])) - - // - // Call CNVs with HiFiCNV - // - if(!params.skip_cnv_calling) { - bam_bai - .join(SHORT_VARIANT_CALLING.out.snp_calls_vcf) - .set { cnv_workflow_in } - - CNV(cnv_workflow_in, fasta, ch_expected_xy_bed, ch_expected_xx_bed, ch_exclude_bed) - ch_versions = ch_versions.mix(CNV.out.versions) + if(params.skip_cnv_calling) { + ch_filter_svs_in = params.skip_sv_annotation ? CALL_SVS.out.family_vcf : params.skip_rank_variants ? ANN_CSQ_PLI_SVS.out.vcf : RANK_VARIANTS_SVS.out.vcf + } else { + ch_filter_svs_in = params.skip_sv_annotation ? annotate_svs_in : params.skip_rank_variants ? ANN_CSQ_PLI_SVS.out.vcf : RANK_VARIANTS_SVS.out.vcf } - // - // Phase SNVs and INDELs - // - if(!params.skip_phasing_wf) { - - PHASING( SHORT_VARIANT_CALLING.out.snp_calls_vcf, STRUCTURAL_VARIANT_CALLING.out.ch_sv_calls_vcf, bam_bai, fasta, fai) - ch_versions = ch_versions.mix(PHASING.out.versions) - - ch_multiqc_files = ch_multiqc_files.mix(PHASING.out.stats.collect{it[1]}.ifEmpty([])) - - // - // Create methylation pileups with modkit - // - if(!params.skip_methylation_wf) { - - METHYLATION( PHASING.out.haplotagged_bam_bai, fasta, fai, ch_input_bed ) - ch_versions = ch_versions.mix(METHYLATION.out.versions) - } - - // - // Call repeat expansions with TRGT - // - if(!params.skip_repeat_calling) { - - CALL_REPEAT_EXPANSIONS ( PHASING.out.haplotagged_bam_bai, fasta, fai, ch_trgt_bed ) - ch_versions = ch_versions.mix(CALL_REPEAT_EXPANSIONS.out.versions) - - // - // Annotate repeat expansions with stranger - // - if(!params.skip_repeat_annotation) { - ANNOTATE_REPEAT_EXPANSIONS ( ch_variant_catalog, CALL_REPEAT_EXPANSIONS.out.vcf ) - ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) - } - } - } + FILTER_VARIANTS_SVS ( + ch_filter_svs_in, + ch_hgnc_ids, + params.filter_variants_hgnc_ids + ) } + + // + // Phase SNVs and INDELs + // + if(!params.skip_phasing) { + + PHASING ( + SHORT_VARIANT_CALLING.out.snp_calls_vcf, + SHORT_VARIANT_CALLING.out.snp_calls_tbi, + bam_bai, + fasta, + fai + ) + ch_versions = ch_versions.mix(PHASING.out.versions) + + ch_multiqc_files = ch_multiqc_files.mix(PHASING.out.stats.collect{it[1]}.ifEmpty([])) + + } + + // + // Create methylation pileups with modkit + // + if(!params.skip_methylation_pileups) { + METHYLATION ( + !params.skip_phasing ? PHASING.out.haplotagged_bam_bai : bam_bai, + fasta, + fai, + ch_input_bed, + ) + ch_versions = ch_versions.mix(METHYLATION.out.versions) + } + + // + // Call repeat expansions with TRGT + // + if(!params.skip_repeat_calling) { + + CALL_REPEAT_EXPANSIONS ( PHASING.out.haplotagged_bam_bai, fasta, fai, ch_trgt_bed ) + ch_versions = ch_versions.mix(CALL_REPEAT_EXPANSIONS.out.versions) + } + + // + // Annotate repeat expansions with stranger + // + if(!params.skip_repeat_annotation) { + + ANNOTATE_REPEAT_EXPANSIONS ( ch_stranger_repeat_catalog, CALL_REPEAT_EXPANSIONS.out.family_vcf ) + ch_versions = ch_versions.mix(ANNOTATE_REPEAT_EXPANSIONS.out.versions) } // @@ -506,7 +615,7 @@ workflow NALLO { softwareVersionsToYAML(ch_versions) .collectFile( storeDir: "${params.outdir}/pipeline_info", - name: 'nf_core_pipeline_software_mqc_versions.yml', + name: 'nallo_' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true ).set { ch_collated_versions } @@ -526,28 +635,44 @@ workflow NALLO { summary_params = paramsSummaryMap( workflow, parameters_schema: "nextflow_schema.json") ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + ch_multiqc_files = ch_multiqc_files.mix( + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = Channel.value( - methodsDescriptionText(ch_multiqc_custom_methods_description)) - - ch_multiqc_files = ch_multiqc_files.mix( - ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_methods_description = Channel.of( + methodsDescriptionText(ch_multiqc_custom_methods_description) + ) + ch_methods_description_citation = citationBibliographyText( + ch_versions, + file("$projectDir/assets/software_references.yml"), + 'citation' + ) + ch_methods_description_bibliography = citationBibliographyText( + ch_versions, + file("$projectDir/assets/software_references.yml"), + 'bibliography' + ) ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) ch_multiqc_files = ch_multiqc_files.mix( - ch_methods_description.collectFile( - name: 'methods_description_mqc.yaml', - sort: true - ) + ch_methods_description + .concat(ch_methods_description_citation) + .concat(ch_methods_description_bibliography) + .flatten() + .collectFile( + name: 'methods_description_mqc.yaml', + sort: false // preserve order for correct yaml structure + ) ) MULTIQC ( ch_multiqc_files.collect(), ch_multiqc_config.toList(), ch_multiqc_custom_config.toList(), - ch_multiqc_logo.toList() + ch_multiqc_logo.toList(), + [], + [] ) emit: