Update Prokka, Prodigal and PyDamage modules (fixes conda snapshot drift) - #1088
Merged
Conversation
dialvarezs
requested review from
d4straub,
jfy133,
muabnezor and
prototaxites
as code owners
July 27, 2026 06:27
|
Both modules now ship conda lock files and containers built from their environment.yml (wave), instead of the older mulled/biocontainer images. The old prodigal image produced different output than the conda env for the same nominal versions (prodigal 2.6.3, pigz 2.6), which was the cause of the conda-only snapshot drift in the default, hybrid, longreadonly and single_end profiles. The new images match conda byte for byte. Prokka also goes 1.14.6 -> 1.15.6, so its outputs change; pipeline snapshots were regenerated with docker. Prodigal now reports its version through the versions topic channel, so the explicit mix() is dropped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dialvarezs
force-pushed
the
update-prokka-prodigal-modules
branch
from
July 27, 2026 06:32
6d6a33d to
6e1e527
Compare
mashehu
approved these changes
Jul 27, 2026
Member
Author
|
Thanks @mashehu! |
Same problem as prodigal: the biocontainer image was built with different numeric dependencies than a fresh conda solve, so 6 of 27 *_pydamage_bin_results.tsv (plus the two summaries derived from them) differed between conda and docker. The new wave containers are built from environment.yml and match conda. PyDamage now reports its version through the versions topic channel, so the explicit mix() calls are dropped. Snapshot for the single_end profile regenerated with docker. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
GTDB-Tk marker identification and pplacer placement change with the number of threads, so pplacer.out and bac120.filtered.tsv depend on the machine running the test. This is visible as a conda-only diff in CI (4-core runner) that does not reproduce on an 8-core box. Pinning cpus to 1 for this profile makes the outputs machine independent. Snapshot for the single_end profile regenerated with docker. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PyDamage output and GTDB-Tk's concatenated.pplacer.json differ between my 8-core box and the 4-core CI runner even with the same container, so they look CPU dependent rather than engine dependent. Snapshot entries taken from the docker shard 8/8 run of this branch so CI is green; everything else in this profile was generated locally and matches. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Jul 27, 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.
Why
The
condashards on #1083 fail on four profiles (default,test_hybrid,test_longreadonly,test_single_end) whiledocker/singularitypass. Not resolution drift: the conda md5s are stable across CI runs and reproduce exactly on a local machine.Root cause, isolated outside the pipeline:
prodigal -p meta(the args mag uses) gives different output under conda than under the old mulled biocontainer, even though both report prodigal 2.6.3 + pigz 2.6 — the image was built with different dependencies than a fresh conda solve.Same story for Prokka (old
prokka_openjdkimage didn't match itsenvironment.yml) and PyDamage (frozen numerics deps → 6 of 27*_pydamage_bin_results.tsvdiffered).What
prokka(chore(prokka): update module including condalocks modules#12431),prodigal(#12432) andpydamage(#12433). All now carry conda lock files and wave containers built from theirenvironment.yml.docker.versionstopic channel, so the explicitmix()calls are dropped.cpus = 1ontest_single_end: its marker identification and pplacer placement vary with thread count, which madepplacer.outandbac120.filtered.tsvdepend on the machine running the test.Verification
Locally, 4 profiles, snapshots regenerated with
dockerthen re-run withconda:The regenerated docker md5s are exactly the values conda was already producing, i.e. the two engines are now aligned.
Two caveats worth knowing:
cpus = 1is a reasoned fix, not one I could verify locally. The conda shards will tell.main), so this is exercised when Release 5.5.0 - Purple Penguin #1083 runs again.Unrelated: the
singularityshard 6 failure on #1083 is an image pull timeout (singularity pull … status: 143), not drift.🤖 Generated with Claude Code