Repository navigation
Update app-cytoland with latest changes in app-dynaclr - #381
Conversation
…istry - 19 test cases covering config creation, defaults, channel maps, validation errors, YAML loading, tau-range conversion, and lookups - All tests fail with ModuleNotFoundError (module not yet implemented) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ExperimentConfig dataclass with all fields and defaults - ExperimentRegistry with fail-fast validation at __post_init__: empty check, duplicate names, source_channel membership, channel count consistency, interval_minutes positivity, condition_wells non-empty, data_path existence, zarr channel match - channel_maps: per-experiment source position -> zarr index mapping - from_yaml classmethod for YAML config loading - tau_range_frames for hours-to-frames conversion with warning - get_experiment lookup by name with KeyError - All 19 tests pass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… member - Fix ruff I001 (import sorting) and F401 (unused import) in test file - Exclude applications/dynacrl (typo) from uv workspace to unblock builds Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SUMMARY.md with TDD execution results, self-check passed - STATE.md updated with position, decisions, session continuity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add iohub>=0.3a2 and pyyaml as explicit dependencies in dynaclr pyproject.toml - Re-export ExperimentConfig and ExperimentRegistry from dynaclr __init__.py - Both classes now importable via `from dynaclr import ExperimentConfig, ExperimentRegistry` Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Demonstrate positional channel alignment across 2 experiments - SEC61 (30min interval, ER) and TOMM20 (15min interval, mito) - Show condition_wells with infected/uninfected/mock conditions - Include comments explaining channel alignment and tau_range conversion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SUMMARY.md with execution results and self-check - STATE.md updated: Phase 20 complete, 20/25 phases (80%) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 20 Experiment Configuration verified (11/11 must-haves). ExperimentConfig + ExperimentRegistry with TDD, package wiring, example YAML. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 17 test cases covering CELL-01 (unified tracks), CELL-02 (lineage), CELL-03 (border clamping) - All fail with ModuleNotFoundError (dynaclr.index not yet implemented) - Test fixtures create mini OME-Zarr stores with tracking CSVs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lamping - Unified tracks DataFrame from all experiments with enriched columns - Lineage reconstruction linking daughters to root ancestor via parent_track_id - Border clamping: retains border cells with shifted patch origins instead of exclusion - All 23 tests pass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unused variable (F841) in test_global_track_id_unique_across_experiments - Use .to_numpy() instead of .values (PD011) in test_exclude_fovs_filter - Export MultiExperimentIndex from dynaclr __init__.py Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 21-01-SUMMARY.md with full execution documentation - STATE.md updated for 21-01 completion, decisions, session continuity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mary - 8 tests for valid_anchors: basic validity, subset check, end-of-track exclusion, lineage continuity, different tau ranges, empty tracks, gap handling, self-exclusion - 9 tests for properties/summary: experiment_groups, condition_groups, summary() - All 17 new tests fail with TypeError (tau_range_hours not yet accepted) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…oups, summary - Add tau_range_hours parameter to MultiExperimentIndex.__init__ - _compute_valid_anchors: per-experiment tau conversion, lineage-based lookup - experiment_groups/condition_groups properties returning index arrays - summary() with experiment counts, observation counts, per-experiment breakdowns - All 40 tests pass (23 existing + 17 new) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SUMMARY.md with self-check passed - STATE.md updated: Phase 21 complete, ready for Phase 22 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Experiment-aware batching: single-experiment restriction, all experiments appear - Condition balancing: 2-condition and 3-condition proportional tests - Leaky mixing: zero leak, 20% leak injection, no-effect when not experiment-aware - Small group fallback: no crash, warning emission - Determinism: same seed/epoch reproduces, set_epoch changes sequence - Sampler protocol: yields list[int], correct __len__ - DDP partitioning: disjoint interleaved batches across ranks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ndition-balanced, leaky mixing - FlexibleBatchSampler(Sampler[list[int]]) with cascade batch construction - experiment_aware=True restricts each batch to a single experiment - condition_balanced=True balances condition representation per batch - leaky > 0.0 injects cross-experiment samples into restricted batches - Deterministic via np.random.default_rng(seed + epoch) - DDP support via interleaved batch partitioning across ranks - Small group fallback to replacement sampling with logged warning - Pre-computed group indices at __init__ for O(1) lookup - Fix lint issues in test file (import sorting, .values -> .to_numpy(), nunique -> len(unique)) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add FlexibleBatchSampler to viscy_data.__init__.py public API - Place import in alphabetically correct position for ruff isort compliance - Add to __all__ exports under Utilities section Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create 22-01-SUMMARY.md with TDD execution results - Update STATE.md: plan 01/02 complete, decisions, session continuity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… validation - 6 temporal enrichment tests (focal concentration, global_fraction edge cases, validation) - 5 DDP disjoint coverage tests (interleaving, coverage, epoch reproducibility) - 3 validation guard tests (missing experiment/condition/hpi columns) - 2 package import tests (import, __all__) - All 9 new feature tests fail as expected (RED) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…verage - Add temporal_enrichment, temporal_window_hours, temporal_global_fraction params - Implement _enrich_temporal: focal/global sampling from experiment pool - Add column validation guards for experiment/condition/hpi columns - Conditional precomputation: only groupby columns when feature enabled - Fix stale smoke test __all__ count (45 -> 46) from Plan 01 - All 35 sampler tests pass, 107 total viscy-data tests pass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 22-02-SUMMARY.md with all metrics, decisions, deviations - STATE.md advanced to Phase 23, progress 22/25 (88%) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 22 verified: FlexibleBatchSampler with all 5 SAMP requirements. 5/5 must-haves passed. 35 tests, 107 full suite pass. No regressions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 12 test cases covering subclass, beta=0 equivalence, hard negatives, gradients, temperature effect, edge cases, defaults, and CUDA - All fail with ModuleNotFoundError (dynaclr.loss not yet created) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds test_multi_experiment_fast_dev_run_with_parquet which verifies the full Lightning training loop works when loading from a pre-built cell index parquet via MultiExperimentDataModule. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…uracy and binary_f1_score
- Add `collection.py` for ML training collection definitions - Rename `hours_post_infection` → `hours_post_perturbation` in `_typing.py` - Update `cell_index.py` to use `collection_path` and renamed field - Add corresponding tests for new modules and updated cell index
…calls deg2rad internally) - Fix docstrings to reflect ZYX input order, facet naming, and unit conventions - Remove stale timepoint_statistics lookup in _normalize.py
…/norm maps - MultiExperimentIndex with parallel FOV loading and lineage-aware anchors - MultiExperimentDataModule with stratify_by, num_workers_index, FOV-level split - Dataset updates for new pipeline; remove ExperimentConfig from __init__ - Consolidate shared test helpers and constants into conftest.py
- Update build-cell-index, train-multi-experiment, troubleshooting recipes - Add sampling-strategies.md documenting FlexibleBatchSampler axes - Update README table - Add CLAUDE.md with data pipeline design principles
There was a problem hiding this comment.
Copilot reviewed 119 out of 223 changed files in this pull request and generated no comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Code review
Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
No description provided.