Skip to content

feat(collect): cellpy.collect foundation + cross-cell bug fixed (#705) - #735

Merged
jepegit merged 2 commits into
masterfrom
705-collect-foundation
Jul 26, 2026
Merged

feat(collect): cellpy.collect foundation + cross-cell bug fixed (#705)#735
jepegit merged 2 commits into
masterfrom
705-collect-foundation

Conversation

@jepegit

@jepegit jepegit commented Jul 26, 2026

Copy link
Copy Markdown
Owner

B1 — cellpy.collect foundation

First arc of Epic B (collectors redesign, #696), on Epic A's cellpy.batch.aggregate. Since the A7 cutover means the legacy collectors can't run against the new facade (they're xfailed), Epic B is a fresh build with new golden tests, not a parity-port.

  • options.pySummaryOptions/CurveOptions/IcaOptions/SaveOptions (immutable .replace()) replacing the "elevated arguments" 3-layer merge.
  • collection.pyCollection = tidy frame + provenance (CollectionMeta); save (parquet+csv+meta.json, explicit directory, no cwd fallback), load_collection, to_wide.
  • cells.pyiter_cells with per-cell isolation.
  • summary.pycollect_summaries on batch.aggregate + column selection.
  • curves.pycollect_cycles fixes the cross-cell cycle-narrowing bug (collectors.py:1609/1691): each cell's cycles are derived from the original request every iteration, never narrowing a shared list.

Tests (6, all green)

Per-cell-isolation regression (cell_a missing a cycle must not drop it for cell_b); Collection save/load round-trip + to_wide; collect_summaries on a real cell + column selection; options immutability.

Next: B2 (#706) — port concat_summaries' rate/group/CV feature set onto the options model; B3 (#707) convenience class + utils.collectors shim; B4 (#708) plotting handover.

Closes #705. Part of #696.

🤖 Generated with Claude Code

First arc of Epic B (collectors redesign, #696). New cellpy/collect/ package
built on Epic A's cellpy.batch.aggregate. Because the A7 cutover means the
legacy collectors can no longer run against the new facade (they are xfailed),
Epic B is a fresh build with new golden tests, not a parity-port.

- options.py: SummaryOptions/CurveOptions/IcaOptions/SaveOptions dataclasses
  (immutable .replace()) replacing the "elevated arguments" 3-layer merge.
- collection.py: Collection = tidy frame + provenance (CollectionMeta); save
  (parquet+csv+meta.json, explicit directory, no cwd fallback) / load_collection
  / to_wide.
- cells.py: iter_cells with per-cell isolation.
- summary.py: collect_summaries on batch.aggregate + column selection.
- curves.py: collect_cycles — FIXES the cross-cell cycle-narrowing bug
  (collectors.py:1609/1691) by deriving each cell's cycles from the ORIGINAL
  request every iteration instead of narrowing a shared list.

6 tests incl. the per-cell-isolation regression (cell_a missing a cycle must
not drop it for cell_b) and Collection save/load round-trip.

Closes #705. Part of #696.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jepegit jepegit added this to the v.2.1 milestone Jul 26, 2026
@jepegit jepegit added the cellpy2-stage4 cellpy 2.1 (Stage 4): batch/collectors redesign, utils waves 3-4, F6, shim removals label Jul 26, 2026
@cursor

cursor Bot commented Jul 26, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@jepegit
jepegit enabled auto-merge (squash) July 26, 2026 22:21
@jepegit
jepegit merged commit e8267ad into master Jul 26, 2026
4 of 5 checks passed
@jepegit
jepegit deleted the 705-collect-foundation branch July 26, 2026 22:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cellpy2-stage4 cellpy 2.1 (Stage 4): batch/collectors redesign, utils waves 3-4, F6, shim removals

Projects

None yet

Development

Successfully merging this pull request may close these issues.

B1: collectors — Phase 0 characterization + cross-cell bug xfail

1 participant