Skip to content

perf: autobump snakemake wrappers - #183

Open
johanneskoester wants to merge 1 commit into
mainfrom
perf/autobump-wrappers
Open

perf: autobump snakemake wrappers#183
johanneskoester wants to merge 1 commit into
mainfrom
perf/autobump-wrappers

Conversation

@johanneskoester

@johanneskoester johanneskoester commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Automated changes by create-pull-request GitHub action

Summary by CodeRabbit

  • Chores
    • Updated workflow tooling for variant annotation, VCF comparison, normalization, indexing, alignment, duplicate marking, and reference retrieval.
    • Refreshed bioinformatics processing components to newer supported versions, improving workflow compatibility and reliability.
    • No user-facing features or public interfaces changed.

@johanneskoester
johanneskoester force-pushed the perf/autobump-wrappers branch from 35b25ee to b5ad7d4 Compare August 1, 2026 00:48
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The workflow updates Snakemake wrapper references across annotation, comparison, download, and utility rules. The changes cover VEP, tabix, bcftools, samtools, BWA-MEM, and Picard wrappers.

Changes

Workflow wrapper refresh

Layer / File(s) Summary
Annotation wrapper updates
workflow/rules/annotation.smk
Updates the VEP cache, tabix indexing, and VEP annotation wrapper versions.
Processing and comparison wrapper updates
workflow/rules/compare-vcfs.smk, workflow/rules/utils.smk
Updates bcftools wrappers for filtering, conversion, indexing, normalization, and sorting.
Download and alignment wrapper updates
workflow/rules/download.smk
Updates bcftools normalization, samtools faidx and indexing, BWA-MEM, and Picard duplicate-marking wrappers.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

Suggested reviewers: famosab, biancastoecker

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the automated updates to Snakemake wrapper versions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch perf/autobump-wrappers

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@workflow/rules/annotation.smk`:
- Line 27: Update the release value used by both get_vep_cache rules to "116" so
it matches the ensembl-vep=116.0 pins in the v9.9.0/bio/vep/cache and
v9.14.0/bio/vep/annotate environments. Keep the existing cache-generation
behavior otherwise unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 736fa1ac-740d-4a3d-8678-83cd124faa54

📥 Commits

Reviewing files that changed from the base of the PR and between 62fd9fd and b5ad7d4.

📒 Files selected for processing (4)
  • workflow/rules/annotation.smk
  • workflow/rules/compare-vcfs.smk
  • workflow/rules/download.smk
  • workflow/rules/utils.smk

release="115",
wrapper:
"v7.6.0/bio/vep/cache"
"v9.9.0/bio/vep/cache"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

release="$(sed -n 's/.*release="\([^"]*\)".*/\1/p' workflow/rules/annotation.smk | head -n1)"
cache_vep="$(curl -fsSL https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.9.0/bio/vep/cache/environment.yaml | sed -n 's/.*ensembl-vep =\([0-9.]*\).*/\1/p')"
annotate_vep="$(curl -fsSL https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.14.0/bio/vep/annotate/environment.yaml | sed -n 's/.*ensembl-vep =\([0-9.]*\).*/\1/p')"

cache_major="${cache_vep%%.*}"
annotate_major="${annotate_vep%%.*}"

if [[ "$release" != "$cache_major" || "$release" != "$annotate_major" ]]; then
    printf 'VEP mismatch: cache release=%s, cache VEP=%s, annotate VEP=%s\n' \
        "$release" "$cache_vep" "$annotate_vep"
    exit 1
fi

Repository: snakemake-workflows/dna-seq-benchmark

Length of output: 244


🌐 Web query:

Ensembl VEP cache version must match VEP release cache formats incompatible newer versions

💡 Result:

Ensembl strongly recommends using a VEP cache version that strictly matches your installed Ensembl VEP software version [1][2]. For instance, VEP version 116 should be used with the version 116 cache [1]. This requirement exists because the cache data content and internal structure are generated specifically for each Ensembl release to align with corresponding data updates and API changes [1][2]. Consequently, cache data formats can change between releases, potentially rendering older caches incompatible with newer versions of the VEP tool [1][2]. Using mismatched versions can lead to discrepancies, unexpected behavior, or errors during annotation [3][4]. If you must use a different cache version (e.g., when working with Ensembl Genomes, where version numbers differ from Ensembl Vertebrates/VEP versions), you can use the --cache_version option to explicitly specify the version [1][5][6]. In standard workflows, however, it is best practice to keep the VEP and cache versions synchronized to ensure stability and accuracy [3][4].

Citations:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '--- annotation.smk VEP-related lines ---\n'
rg -n 'get_vep_cache|v9\.9\.0/v9\.14\.0/vep|release=|release=' workflow/rules/annotation.smk

printf '\n--- referenced wrapper environment files ---\n'
for url in \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.9.0/bio/vep/cache/environment.yaml" \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.14.0/bio/vep/annotate/environment.yaml"
do
  printf '\nURL: %s\n' "$url"
  sed -n '/^conda:/,/^\s*dependencies:/p; /^conda:/,/^[^[:space:]]/p' "$url" || true
  sed -n 's/^.*:\s*`{0,1}ensembl-vep\s*[:=]\s*{0,1}[^`"]*$/\0/p' "$url" || true
done

printf '\n--- local dependency files mentioning VEP ---\n'
rg -n "ensembl-vep|VEP|vep" -S --glob '!*.ipynb' --glob '!.snakemake/**' .

Repository: snakemake-workflows/dna-seq-benchmark

Length of output: 266


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- annotation.smk VEP-related lines ---'
rg -n 'get_vep_cache|v9\.9\.0/v9\.14\.0/vep|release=|release=' workflow/rules/annotation.smk || true

printf '%s\n' ''
printf '%s\n' '--- referenced wrapper environment files ---'
for url in \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.9.0/bio/vep/cache/environment.yaml" \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.14.0/bio/vep/annotate/environment.yaml"
do
  printf '%s\n' ""
  printf '%s\n' "URL: ${url}"
  sed -n '1,220p' "$url" | sed -n '1,80p' || true
  rg -n '^[\s-]*`?ensembl-vep' "$url" || true
done

printf '%s\n' ''
printf '%s\n' '--- local dependency files mentioning VEP ---'
rg -n "ensembl-vep|VEP|vep" -S --glob '!*.ipynb' --glob '!.snakemake/**' . || true

Repository: snakemake-workflows/dna-seq-benchmark

Length of output: 6818


🌐 Web query:

snakemake wrappers v9.9.0 bio vep cache environment.yaml ensembl-vep

💡 Result:

In Snakemake wrappers version 9.9.0, the bio/vep/cache wrapper is designed to manage the downloading and installation of Ensembl VEP caches [1]. Key details for usage in Snakemake 9.9.0 include: Environment and Dependencies The environment for the bio/vep/cache wrapper is managed via a corresponding environment.yaml file [2]. This environment typically includes ensembl-vep, which is kept up to date through automated maintenance in the snakemake-wrappers repository [2][3]. For example, recent updates have seen ensembl-vep versions around 115.2, paired with specific compatible versions of tools like bcftools to resolve environment installation issues (e.g., LibMambaUnsatisfiableError) [4][5]. Cache Wrapper Configuration The bio/vep/cache wrapper supports parameters to define the specific VEP cache to download [1]: - species: The target species (e.g., saccharomyces_cerevisiae). - build: The genome assembly version (e.g., R64-1-1). - release: The Ensembl release version (e.g., 114). - indexed: A boolean parameter (default is True) that determines whether to download a pre-indexed cache [1][6]. Releases 114 and newer are supported only for indexed VEP caches [1]. General Usage Pattern When using the wrapper in a workflow, the cache directory produced by the bio/vep/cache wrapper can be passed directly as input to the bio/vep/annotate wrapper using the cache parameter [7][1]. Using the cache: "omit-software" directive within your rule is recommended to save space and enable efficient between-workflow caching [1]. Always refer to the official Snakemake wrappers documentation for the most accurate and up-to-date parameter definitions for version 9.9.0 [7][1].

Citations:


🌐 Web query:

snakemake wrappers v9.14.0 bio vep annotate environment.yaml ensembl-vep

💡 Result:

The Ensembl VEP wrapper in the Snakemake wrappers repository (bio/vep/annotate) relies on an automatically managed Conda environment [1][2]. As of recent versions, the environment definition (environment.yaml) typically includes ensembl-vep, bcftools, and associated Perl dependencies [1][3]. Key points regarding the bio/vep/annotate environment and usage: 1. Environment Management: The environment is subject to regular automatic updates (autobumps) within the snakemake-wrappers repository [4][5][6]. Users should rely on the version of the environment provided with the specific wrapper version they are using (e.g., via the wrapper URL referencing a specific release or master branch) [2][7]. 2. Troubleshooting and Compatibility: If you encounter issues (e.g., LibMambaUnsatisfiableError), they are often related to version conflicts between ensembl-vep and supporting tools like bcftools [1]. The repository maintainers have historically addressed these by adjusting dependency versions (e.g., pinning bcftools or specific Perl packages) [1][3]. 3. Usage Requirements: * The wrapper supports both VEP cache-based annotation and custom GFF/Fasta annotation [8]. * When using custom GFF files, they must be sorted, bgzipped, and tabix-indexed [8][9]. The official documentation provides an example rule for preparing these files using tabix and bgzip [8]. * Plugins can be specified in the wrapper params, and any required auxiliary files for those plugins must be defined within the wrapper input [8]. For the most accurate environment.yaml file, refer to the specific version of the wrapper you are utilizing on the official Snakemake wrappers documentation or GitHub repository [8][4]. If you are working with a specific tag (e.g., v9.14.0), navigate to the corresponding directory in the source tree to inspect the precise dependencies defined at that time [2].

Citations:


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- fetch wrapper environment headers ---'
for url in \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.9.0/bio/vep/cache/wrapper.py" \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.9.0/bio/vep/cache/environment.yaml" \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.14.0/bio/vep/annotate/wrapper.py" \
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.14.0/bio/vep/annotate/environment.yaml"
do
  printf '%s\n' ""
  printf '%s\n' "URL: ${url}"
  if curl -fsSIL "$url" >/dev/null; then
    curl -fsSL "$url" | sed -n '1,40p'
  else
    printf '%s\n' "FETCH FAILED"
  fi
done

python3 - <<'PY'
import urllib.request
urls = [
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.9.0/bio/vep/cache/environment.yaml",
  "https://raw.githubusercontent.com/snakemake/snakemake-wrappers/v9.14.0/bio/vep/annotate/environment.yaml",
]
for url in urls:
    text = urllib.request.urlopen(url, timeout=20).read().decode()
    lines = [line.strip() for line in text.splitlines() if "ensembl-vep" in line]
    print(url, "=>", "; ".join(lines) or "NO ensembl-vep line")
PY

Repository: snakemake-workflows/dna-seq-benchmark

Length of output: 5931


Align the downloaded VEP cache release with the wrapper VEP version.

get_vep_cache downloads release 115, but the v9.9.0/bio/vep/cache environment pins ensembl-vep=116.0 and the v9.14.0/bio/vep/annotate environments also pin ensembl-vep=116.0. Ensembl recommends matching the cache release to the installed VEP release because cache formats can differ between versions. Update release to "116" in both cache-producing rules, or keep release 115 by pinning both wrappers to VEP 115.2-compatible versions.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@workflow/rules/annotation.smk` at line 27, Update the release value used by
both get_vep_cache rules to "116" so it matches the ensembl-vep=116.0 pins in
the v9.9.0/bio/vep/cache and v9.14.0/bio/vep/annotate environments. Keep the
existing cache-generation behavior otherwise unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants