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

pirl-unc / tcrsift / 25584246325 / 4
71%
main: 71%

Build:
DEFAULT BRANCH: main
Ran 08 May 2026 11:20PM UTC
Files 24
Run time 1s
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

08 May 2026 11:18PM UTC coverage: 71.245% (+0.1%) from 71.101%
25584246325.4

push

github

web-flow
Add per-donor TIL-overlap aggregation + filter knob (#9 chunk 4) (#22)

Final data-feature slice of #9. Builds on the donor metadata foundation
from chunk 1 (v0.6.0): when TIL data carries patient_id, match_til now
emits a per-donor view of how many TIL cells each culture-validated
clone has within each donor. The matching filter knob captures the
"culture-enriched and present in the same donor's TIL" criterion the
issue calls out.

In match_til:
  - When at least one TIL DataFrame has patient_id populated, group
    cell counts by (donor, clone) and produce two new columns on the
    output:
      til_cells_per_donor      JSON {donor: cells} per clone
      max_til_cells_per_donor  scalar max for filter use
  - No-op when TIL data lacks patient_id (preserves existing
    backwards-compat for legacy TIL workflows that don't carry donor
    metadata).

In filter_clonotypes_threshold + filter_clonotypes:
  - min_til_cells_per_donor knob, reads max_til_cells_per_donor.
  - No-op when the column isn't on the table (consistent convention
    with all the other axis knobs).

CLI: --min-til-cells-per-donor wired into both `tcrsift filter` and
`tcrsift run`, threaded through FilterConfig.

Tests:
  - per-donor JSON dict and max scalar produced correctly across
    multi-donor TIL inputs (B1-2 has 3 cells of clone X, B1-3 has 1)
  - empty per-donor view when clone doesn't appear in any TIL donor
  - per-donor aggregation skipped when TIL data lacks patient_id
  - filter knob behavior + no-op when the column is absent

Bumps version to 0.7.2 — additive surface, no breaking change.

This closes the data-feature scope of #9 (the four data chunks the
issue chunked itself into). Per-donor PDF reports — the reporting
piece of the issue — still remain; tracking as a separate follow-up
since it's its own piece of work (matplotlib/PDF generation, layout
decisions) and doesn't compose with this PR's data shape.

4279 of 6006 relevant lines covered (71.25%)

0.71 hits per line

Source Files on job python-3.9 - 25584246325.4
  • Tree
  • List 24
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25584246325
  • 257f01f5 on github
  • Prev Job for on main (#25584084210.1)
  • Next Job for on main (#25590034963.4)
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