• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

openvax / topiary / 33427386457
93%

Build:
DEFAULT BRANCH: master
Ran 31 Aug 2026 06:55PM UTC
Jobs 3
Files 35
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Aug 2026 06:51PM UTC coverage: 91.134% (-0.01%) from 91.148%
33427386457

push

github

web-flow
Per-peptide allele sets, and the candidates behind a resolved version (#222)

#219: EvalContext(alleles=) declared one set for the whole frame. A reader
emitting one row per (peptide, allele) that passed its own threshold --
LENS does -- gives peptides that were each reported against a different
subset of the genotype, so there is no single set to declare. Every LENS
fixture vaxrank has carries 2 to 8 distinct sets per file.

It now takes the same three forms from_predictions(allele_set=) does:
sequence for every peptide, mapping per peptide (keyed by the peptide
value or the full peptide-key tuple), or callable receiving the peptide
keys.

Declaring the union instead invents a group for every pairing that was
never scored. This hides well: an expression with an allele-scoped term
leaves the invented groups NaN, so output looks unchanged -- vaxrank
swapped in the union and every fixture came out byte-identical. An
expression reading only peptide-level evidence gives each invented group
a real number. Measured on a two-peptide frame with peptide_view(
proteasome_cleavage.score): union scores 6 groups, 2 of them pairings
never predicted; per-peptide scores 4, none invented.

A peptide declared nothing keeps only the groups its rows name rather
than inheriting another's genotype. A mapping key matching no peptide
raises, since a key that declares nothing looks exactly like a peptide
left undeclared on purpose. An empty set for one peptide is meaningful
even though an empty frame-wide sequence stays an error -- the same
absent-versus-empty distinction that has bitten this codebase twice now.

#220: describe_default_versions returns what resolve_default_versions
chose between, so a consumer can say "netMHCpan reports 4.1b and 4.2,
scoring with 4.2" without re-deriving the candidates -- a re-derivation
that re-implements "was a version named at all", the rule whose subtlety
caused the phantom-"nan" bug in both repos. Candidates are ordered by the
same PEP 4... (continued)

71 of 77 new or added lines in 2 files covered. (92.21%)

2 existing lines in 1 file now uncovered.

5828 of 6395 relevant lines covered (91.13%)

2.73 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
91.8
-0.09% topiary/ranking/nodes.py

Coverage Regressions

Lines Coverage ∆ File
2
91.8
-0.09% topiary/ranking/nodes.py
Jobs
ID Job ID Ran Files Coverage
1 python-3.10 - 33427386457.1 31 Aug 2026 06:55PM UTC 35
91.13
GitHub Action Run
2 python-3.12 - 33427386457.2 31 Aug 2026 06:56PM UTC 35
91.13
GitHub Action Run
3 python-3.11 - 33427386457.3 31 Aug 2026 06:55PM UTC 35
91.13
GitHub Action Run
Source Files on build 33427386457
  • Tree
  • List 35
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33427386457
  • 2130a4c8 on github
  • Prev Build on master (#33426610623)
  • Next Build on master (#33428957974)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc