Add verkko-fillet 0.1.25 to bio compiled software - #185
Merged
Conversation
verkko-fillet is a toolkit for cleaning Verkko genome assemblies. Installed
via a uv virtual environment rather than conda: it is a pure-Python wheel on
PyPI as `verkkofillet`, and there is no bioconda package at all (upstream's
conda docs only build a dependency environment, then pip install the package).
Two upstream packaging quirks are compensated for here:
* It declares an empty install_requires, so every runtime dependency is
pinned explicitly in pyproject.toml. The list was derived by grepping
src/verkkofillet for third-party imports, NOT from the upstream
requirements.txt (which is a Sphinx list concatenated with a pip freeze
of the author's whole environment).
* It ships no console entry points; its ~40 CLI scripts live inside
site-packages/verkkofillet/bin. The module puts that directory on PATH,
which is what lets getChrNames.sh resolve `which neighborhood`.
The README lists only mashmap, samtools (with bgzip) and seqtk as external
requirements, but the source also shells out to bedtools, meryl and minimap2.
All three already existed in the repo. Newly packaged:
* seqtk 1.5 - plain make, no configure or install target upstream
* mashmap 3.1.3 - the only cmake build here; needs C++17, CMake >= 3.21,
GSL and htslib, so the repo's cmake/3.27.0, libgsl/2.7.1
and htslib/1.22.1 trees are injected into the build env
* minimap2 2.28 - version entry only, matching what upstream validated
against (the repo previously had 2.24)
bgzip comes from the htslib module, not the samtools tarball.
Install (bottom-up, so each depends_on target exists first):
ansible-playbook site.yaml -t seqtk,seqtk1.5
ansible-playbook site.yaml -t mashmap,mashmap3.1.3
ansible-playbook site.yaml -t minimap2,minimap22.28
ansible-playbook site.yaml -t verkko-fillet,verkko-fillet0.1.25
Not yet built on the cluster; mashmap is the step most likely to need
attention on first run.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKjARUHkPUnhsRo6K1Faya
MikeCTZA
approved these changes
Jul 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds verkko-fillet 0.1.25 (bio, compiled) — a toolkit for cleaning Verkko genome assemblies — installed via a uv virtual environment, plus the external tools it needs.
Deliberately not conda: verkko-fillet is a pure-Python
py3-none-anywheel on PyPI asverkkofillet, and there is no bioconda package at all (bioconda-recipes/recipes/verkkofillet→ 404). Upstream's own conda instructions only build a dependency environment and thenpip installthe package, so the uv path costs nothing. Follows the existingcnvpytor.yamlpattern.Also newly packaged, because verkko-fillet shells out to them:
seqtkmake— upstream has noconfigureand noinstalltarget, so the binary is copied out by handmashmapminimap2bgzipcomes from the existing htslib 1.22.1 module, not the samtools tarball.bedtools 2.31.1andmeryl 1.4.1already existed and happen to match upstream's validated versions exactly.Two upstream packaging quirks worth knowing about
install_requires—pip install verkkofilletpulls in nothing. Every runtime dependency is pinned explicitly inpyproject.toml, derived by greppingsrc/verkkofilletfor third-party imports. Deliberately not from upstream'srequirements.txt, which is a Sphinx docs list concatenated with apip freezeof the author's whole environment (it containstwine,PyQt5,snakemake…).entry_points.txt; the ~40 CLI scripts live insidesite-packages/verkkofillet/bin. The module puts that directory on PATH, which is what letsgetChrNames.shresolve itswhich neighborhoodlookup.The README's external-tool list (mashmap, samtools/bgzip, seqtk) undersells the real requirements —
bedtools,merylandminimap2are also used. All are wired up viadepends_on()with pinned versions.Checklist
cd ansible && uv run yamllint . && uv run ansible-lint— reachesProfile 'production' was required, and it passed.neveron eachinclude_tasksentry inbio/main.yml; version tag +neveron each leaf task file.sha256, each verified against the upstream tarball while planning).seqtk.lua,mashmap.lua,verkko-fillet.lua.mode: preservewhen copying the builtseqtkandmashmapbinaries.ansible/group_vars/all.Notes for the maintainer
Upstream: https://github.com/marbl/verkko-fillet (v0.1.25, MIT) · https://github.com/marbl/MashMap (v3.1.3) · https://github.com/lh3/seqtk (v1.5)
Install order matters — each
depends_ontarget must exist before the module referencing it:Not yet built on the cluster.
mashmapis the step most likely to need attention on first run: it is the only cmake build, and I pinned the repo'scmake/3.27.0rather than/usr/bin/cmakesince upstream requires ≥3.21 and the build host's system cmake is unknown. GSL/htslib are injected viaenvironment:following theseqwish.yamlprecedent.What was verified locally
productionprofile passed (0 failures, 445 files)ansible-playbook site.yaml --syntax-checkcleanverkkofillet 0.1.25imports on Python 3.12 and.venv/lib/python3.12/site-packages/verkkofillet/bin/contains 38 scripts, confirming the PATH the module prepends.luatemplates rendered under JinjaStrictUndefinedwith real values — no undefined namesmashmap.yamlresolves to two identical environment mappingsNote that
--list-tagscannot confirm the new tags, since the role'sinclude_tasksare dynamic and are not expanded; the tags are only genuinely exercised by a real playbook run.Known limitations (documented in the module's
help())screenAssembly()will not work —bin/screen-assembly.shresolves verkko's install layout off PATH (verkko=$(dirname $(which verkko)), then$verkko/../lib/verkko/scripts/) and needs the reallib/verkko/tree plus its bundled contaminant FASTAs. verkko is not packaged in this repo. Everything else only reads a Verkko output directory — grepping for any verkko binary invocation across the source returns zero hits outside that one script. Packaging verkko 2.3.2 would be a separate change.graphAlign()needs GraphAligner, not packaged here. Its path is a runtime parameter, so an external build can be passed in without repackaging.shutil.which("gnuplot")and degrades gracefully.verkkofilletships a prebuilt ~480 KB x86-64 binary (bin/neighborhood) inside the wheel — nothing to build, but we do redistribute an opaque binary.Unrelated, not touched
mashappears to be registered twice inansible/roles/compiled/tasks/bio/main.yml(~lines 307 and 321) — looks like an accidental duplicate block. Worth a separate cleanup commit.🤖 Generated with Claude Code
https://claude.ai/code/session_01GKjARUHkPUnhsRo6K1Faya