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

pirl-unc / tcrsift / 25878034169

14 May 2026 06:30PM UTC coverage: 75.226% (+0.09%) from 75.141%
25878034169

push

github

web-flow
Fix #70: add antigen-response signature + extract tcrsift.signatures module (#73)

* Fix #70: add antigen-response signature constants + audit

Closes #70. The per-sample signature scatter
(`plot_clone_freq_vs_signature_per_sample`) already accepts any
gene set via `gene_ids`; this PR adds the three focal 2-gene
signatures the experiments wrapper uses so callers don't have to
duplicate them.

New plots-side constants matching the experiment's three focal
signatures (which it already imports from `tcrsift.til_select`):

- `ANTIGEN_RESPONSE_GENES_HGNC = ("TNFRSF9", "MKI67")` — AIM-assay
  activation marker + Ki-67 proliferation. The #70 ask.
- `CYTOLYTIC_GENES_HGNC = ("PRF1", "GZMB")` — canonical cytotoxic
  effector readout (Caushi 2021, Krishna 2021, Hanada 2022).
- `TUMOR_REACTIVE_GENES_HGNC = ("CXCL13", "ENTPD1")` — TIL-resident
  tumor-reactive phenotype (Workel 2019, Duhen 2018).

These mirror the existing `til_select` defaults
(`ANTIGEN_RESPONSE_GENES_DEFAULT`, `CYTOLYTIC_GENES_DEFAULT`,
`ENRICHMENT_GENES_DEFAULT`); a sync test in
`test_plots_43_remaining.py::TestFocalSignatureConstants` locks the
two sources together so they can't drift.

Audit result against `~/code/experiments/sarah-tcrseq-run2-run3`:
all three focal signatures the experiment uses are already present
in `tcrsift.til_select`; the experiment also already imports them
from tcrsift (with a hardcoded fallback). The gap was that
`tcrsift.plots` didn't re-expose them with the same `_HGNC` naming
convention as activation / exhaustion, so the per-sample scatter
required callers to hardcode them. Fixed.

Semver minor bump 0.10.0 → 0.11.0 for the three new public constants.

933 tests pass; lint clean.

* Move T-cell signatures from til_select into tcrsift.signatures

Per code review on #73 and follow-up: the curated gene-set signatures
shouldn't live in `til_select.py`, since they're equally useful for
selecting other kinds of T cells — antigen-response screens,
exhaustion-state phenoty... (continued)

5742 of 7633 relevant lines covered (75.23%)

3.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

69.3
/til_select.py


Source Not Available

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