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

openvax / topiary / 25885551465
90%

Build:
DEFAULT BRANCH: master
Ran 14 May 2026 09:11PM 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

14 May 2026 09:02PM UTC coverage: 89.87% (+0.2%) from 89.625%
25885551465

push

github

web-flow
Add pVACseq report loader + DSL categorical equality (#167)

Adds `topiary.read_pvacseq(path)` plus a DSL-side categorical-equality
extension that vaxrank and other downstream consumers need to filter
multi-class results elegantly.

**Loader (`topiary/io_pvacseq.py`):**

- `read_pvacseq(path)` parses both pVACseq output flavors (auto-detected
  from headers):
  - `*.all_epitopes.aggregated.tsv` — one row per variant, Best Peptide
    × Allele chosen by Median IC50.
  - `*.all_epitopes.tsv` — one row per (peptide, allele, length).
- Long-form output aligned with `TopiaryPredictor`'s schema:
  Median MT IC50 / percentile → `value` / `percentile_rank`; WT
  companions → `wt_*` so DSL `wt.Affinity.value` works without
  further setup.
- Missense WT peptide reconstruction from `Best Peptide` + `Pos` +
  `AA Change` (292/317 rows on HCC1395; non-missense and flanking
  rows leave `wt_peptide` NaN — the unaggregated flavor has
  `WT Epitope Seq` directly).
- Derived columns: `mhc_class`, `contains_mutant_residues`,
  `mutation_start_in_peptide` / `mutation_end_in_peptide` (Int64,
  0-based half-open), per-row `source` provenance.
- `Metadata.extra["kind_support"]` mirrors `TopiaryPredictor.kind_support`
  shape so `apply_filter(..., kind_support=r.extra["kind_support"])`
  composes without callers building a parallel dict.
- `melt_pvacseq_algorithms(result)` expands per-algorithm
  `pvacseq_<algo>_<field>_<mtwt>` columns into separate
  `prediction_method_name=<algo>` rows so `Affinity['mhcflurry'].value`
  reaches them natively.
- `derive_mhc_class(allele_series)` exposed publicly for stamping the
  column on fresh `TopiaryPredictor` results.
- Multi-file composition via `topiary.concat([read_pvacseq(p1),
  read_pvacseq(p2)])`.

**DSL extensions (`topiary/ranking/`):**

- `IsIn` node + `Column.eq(value)` / `.ne(value)` / `.isin(values)`
  methods for filtering on string / boolean / mixed-dtype columns
  (mhc_class, source, gene, ...).  Bypasses `Column.eval... (continued)

269 of 302 new or added lines in 5 files covered. (89.07%)

4551 of 5064 relevant lines covered (89.87%)

2.7 hits per line

Uncovered Changes

Lines Coverage ∆ File
18
88.94
-0.74% topiary/ranking/nodes.py
15
93.51
topiary/io_pvacseq.py
Jobs
ID Job ID Ran Files Coverage
1 python-3.12 - 25885551465.1 14 May 2026 09:10PM UTC 35
89.87
GitHub Action Run
2 python-3.10 - 25885551465.2 14 May 2026 09:11PM UTC 35
89.87
GitHub Action Run
3 python-3.11 - 25885551465.3 14 May 2026 09:11PM UTC 35
89.87
GitHub Action Run
Source Files on build 25885551465
  • Tree
  • List 35
  • Changed 6
  • Source Changed 5
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25885551465
  • 330809a2 on github
  • Prev Build on master (#25821572339)
  • Next Build on master (#25923192409)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc