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

pirl-unc / tcrsift / 26552982473
84%

Build:
DEFAULT BRANCH: main
Ran 28 May 2026 03:34AM UTC
Jobs 4
Files 29
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

28 May 2026 03:32AM UTC coverage: 77.375% (+0.02%) from 77.355%
26552982473

push

github

web-flow
1.1.0: split abundance and specificity in default tier definitions (#101)

Closes #99. Before: ``DEFAULT_THRESHOLD_TIERS`` bundled
``min_cells`` (abundance), ``min_frequency`` (abundance), and
``max_conditions`` (specificity) into a single tier label. That
made the label opaque (a tier3 clone could be borderline-cells OR
strongly-enriched-but-demoted-by-condition-cap), prevented
per-sample tier interpretation, and could mask biologically
interesting clones present in many conditions.

The 1.1.0 default tiers carry abundance only:

  tier1: min_cells=10, min_frequency=0.01
  tier2: min_cells=5,  min_frequency=0.005
  tier3: min_cells=3,  min_frequency=0.001
  tier4: min_cells=2,  min_frequency=0.0005
  tier5: min_cells=2,  min_frequency=0.0

Specificity moves to an explicit, separate downstream filter:
``n_conditions <= K`` on the assembled frame, or
``max_conditions=K`` to ``filter_clonotypes_threshold`` (already a
standalone parameter and unchanged). The tier label now answers
"how strong is the enrichment?"; ``n_conditions`` answers "how
narrowly does it appear?". Keeping them orthogonal makes selection
auditable and per-sample interpretation possible.

Back-compat: ``clone_clears_tier`` and ``assign_tiers_threshold``
still honour ``max_conditions`` when present in a *user-supplied*
tier dict — only the bundled defaults dropped it. Custom tier
dicts continue to behave exactly as before.

Per-sample helper: new ``tcrsift.filter.per_sample_tier(cells,
frequency)`` returns the abundance tier for a single (clone,
sample) row. Centralises the threshold table for downstream
report code (per-method PDFs, per-sample heatmaps) that
previously had to re-implement the definitions. By design takes
no ``n_conditions`` — per-sample tier is single-sample, so
specificity isn't applicable.

Tests: 8 new (3 TestAbundanceOnlyDefaultTiers, 5 TestPerSampleTier).
Existing tests using ``max_conditions`` in custom tier dicts still
pass unchanged. Full suite: 1133 passed; r... (continued)

6443 of 8327 relevant lines covered (77.37%)

3.09 hits per line

Coverage Regressions

Lines Coverage ∆ File
27
90.07
0.48% filter.py
Jobs
ID Job ID Ran Files Coverage
1 python-3.10 - 26552982473.1 28 May 2026 03:34AM UTC 29
77.37
GitHub Action Run
2 python-3.9 - 26552982473.2 28 May 2026 03:34AM UTC 29
77.34
GitHub Action Run
3 python-3.12 - 26552982473.3 28 May 2026 03:34AM UTC 29
77.37
GitHub Action Run
4 python-3.11 - 26552982473.4 28 May 2026 03:34AM UTC 29
77.37
GitHub Action Run
Source Files on build 26552982473
  • Tree
  • List 29
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26552982473
  • ef488a7f on github
  • Prev Build on main (#26525649158)
  • Next Build on main (#26575381279)
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