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

pirl-unc / tcrsift / 25580663876
71%

Build:
DEFAULT BRANCH: main
Ran 08 May 2026 09:35PM UTC
Jobs 4
Files 24
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

08 May 2026 09:34PM UTC coverage: 70.822% (+0.01%) from 70.812%
25580663876

push

github

web-flow
Add timepoint and apc_type axis fields; propagate to obs (#9 chunk 1) (#18)

First slice of #9. Lays the metadata foundation for the broader
stratification axes #9 calls out (timepoints, APCs, TIL-overlap,
tissue), in the same shape as #8 chunk 1: add the field, serialize
it, propagate it to obs, register it in rehydrate_obs.

Per-axis decisions:

- timepoint: free-form `str | None`. The issue's examples are mixed
  ("D7", "D14", "baseline", "post-IL2"); strings handle both numeric
  and label cases without the mixed-type column issues that bit
  `culture_days`. The existing `culture_days` int field stays — it's
  per-sample, distinct from `timepoint` which groups samples.
- apc_type: free-form `str | None` (e.g. "mDC", "B-LCL",
  "autologous_PBMC", "K562-A2-CD80"). Distinct from `tissue`
  (anatomical) and `antigen_type` (what was presented).
- tissue: existing field, but wasn't in to_dataframe() or the obs
  metadata propagation block. Wired both up so the existing axis
  participates in chunks 2/3 alongside the two new ones.

Changes:

- sample_sheet.Sample gains timepoint and apc_type fields.
- to_dataframe() now serializes timepoint, apc_type, and tissue.
- loader.load_sample propagates all three into adata.obs alongside
  patient_id / enrichment_method / source, using the conditional-skip
  pattern from #5 so unset axes don't create all-None object columns
  that break write_h5ad.
- _dtypes._STRING_COLS includes timepoint and apc_type so rehydrate_obs
  re-pins them to object after an h5ad roundtrip (tissue was already
  there).

CSV and YAML loaders pass the new fields through unchanged because
Sample(**row_dict) absorbs them.

Tests cover: propagation when set, absence when unset, sample-sheet
DataFrame serialization, free-form value acceptance, CSV/YAML loader
ingestion, and Categorical -> object rehydration for all five axis
columns (donor, method, timepoint, apc, tissue).

Bumps version to 0.6.0 — new sample-sheet schema fields (additive).
... (continued)

4187 of 5912 relevant lines covered (70.82%)

2.83 hits per line

Coverage Regressions

Lines Coverage ∆ File
21
84.92
0.15% sample_sheet.py
15
86.3
0.0% loader.py
Jobs
ID Job ID Ran Files Coverage
1 python-3.11 - 25580663876.1 08 May 2026 09:35PM UTC 24
70.81
GitHub Action Run
2 python-3.10 - 25580663876.2 08 May 2026 09:35PM UTC 24
70.81
GitHub Action Run
3 python-3.12 - 25580663876.3 08 May 2026 09:35PM UTC 24
70.81
GitHub Action Run
4 python-3.9 - 25580663876.4 08 May 2026 09:35PM UTC 24
70.78
GitHub Action Run
Source Files on build 25580663876
  • Tree
  • List 24
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25580663876
  • 4c47cb75 on github
  • Prev Build on main (#25558062992)
  • Next Build on main (#25583981870)
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