Skip to content

Split up config/panel.py - #489

Merged
Aratz merged 3 commits into
cursor/02-hashing-marker-id-helpers-e226from
fix/panel_config
Oct 6, 2026
Merged

Aratz merged 3 commits into
cursor/02-hashing-marker-id-helpers-e226from
fix/panel_config

Conversation

@Aratz

@Aratz Aratz commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Description

File src/pixelator/pna/config/panel.py has become quite big. This PR splits it into smaller components to improve readability.


Note

Low Risk
Mostly a move/refactor with re-exported symbols; behavior should match prior validation, now covered by additional targeted tests.

Overview
Replaces the monolithic config/panel.py with a pixelator.pna.config.panel package (antibody_panel, diff, hashing, validation) while keeping the same public imports and APIs via __init__.py.

Panel validation moves into validation.py as composable helpers (structure, types, uniqueness, UniProt, hashing rules). Structural failures still short-circuit before deeper checks; UniProt checking is slightly tidied with a shared regex helper. PNAAntibodyPanel.validate_antibody_panel now delegates to that module instead of inlining the logic.

Adds unit tests that exercise individual validation error paths (missing columns, empty panel, index, duplicate sequences, control dtype, column types).

Reviewed by Cursor Bugbot for commit 4b7b5c2. Bugbot is set up for automated code reviews on this repo. Configure here.

@Aratz
Aratz requested a review from elhb October 6, 2026 11:16
@Aratz Aratz self-assigned this Oct 6, 2026
@Aratz
Aratz marked this pull request as ready for review October 6, 2026 11:55
@Aratz
Aratz merged commit 243ffe8 into cursor/02-hashing-marker-id-helpers-e226 Oct 6, 2026
13 checks passed
@Aratz
Aratz deleted the fix/panel_config branch October 6, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant