diff --git a/.notes/implementation-notes.html b/.notes/implementation-notes.html index 0a23504f..d1bb62e1 100644 --- a/.notes/implementation-notes.html +++ b/.notes/implementation-notes.html @@ -6,6 +6,138 @@
Issue #213 closes the final Fable 5 architecture closeout phase for + statistics and ICLabel/viewprops ownership. The branch keeps public call + signatures, return values, command strings, GUI labels, and Matplotlib + dashboard layout behavior stable while moving implementations into focused + owner modules.
+functions/statistics/_core.py into the existing same-name
+ public modules such as fdr.py, statcond.py,
+ surrogdistrib.py, and the anova*_cell.py and
+ ttest*_cell.py helpers. _core.py is now only a
+ compatibility re-export shell; shared array/grid helpers and two-way ANOVA
+ data containers live in _shared.py.plugins/ICLabel/pop_prop_extended.py into pop/dialog
+ glue, _prop_numerics.py for classifier, DIPFIT, PVAF, spectra,
+ and dashboard data assembly, and _prop_browser.py for the
+ Matplotlib property-browser rendering and rejection controls.pop_prop_extended module as a facade that
+ re-exports the existing helper names used by tests and by
+ pop_viewprops, so users do not need to change imports.| Remaining item | Disposition | Rationale |
|---|---|---|
pop_load_frombids.py raw-reader and montage
+ ownership | Fixed in PR #216 / issue #212 | BIDS raw loading
+ and montage inference moved into EEG-BIDS helper modules while
+ pop_load_frombids stayed orchestration/history glue. |
functions/statistics/_core.py mega-module | Fixed + in issue #213 | Implementations now live in same-name statistics
+ modules, with _shared.py holding only shared helpers. |
plugins/ICLabel/pop_prop_extended.py mixed
+ ownership | Fixed in issue #213 | Pop/history/dialog glue, + numerics/data assembly, and Matplotlib browser rendering now have + separate owner modules. |
functions/guifunc/qt.py stateless renderer namespace | Fixed + in PR #216 / issue #212 | Qt renderer helpers were split into + module-level helpers while preserving call-site compatibility and dialog + behavior. |
pop_clust finite-outlier robust k-means dispatch | Fixed + in PR #217 / issue #210 | STUDY clustering behavior was consolidated + in the STUDY/time-frequency/statistics phase with dedicated tests. |
pop_chanplot, measure-field maps, cached measure
+ axes, range masks, default plot targets, _trial_rows, factor
+ matching, and std_clustplot history construction | Fixed + in PR #217 / issue #210 | STUDY measure/cache helper ownership was + consolidated as one phase because those paths share STUDY data contracts. |
| Time-frequency numeric-vector parsing, bootstrap/FDR helpers, + threshold-vector helpers, and empirical p-value convention audit | Fixed + or explicitly documented in PR #214 / issue #208 and PR #217 / issue + #210 | Shared parsing moved to lower-level helpers in Phase 1; + time-frequency and statistics behavior consolidation landed in Phase 3 + where numerical behavior could be tested together. |
Divergent is_on(), empty-value, Python literal,
+ chanloc serialization, topographic channel selection, boundary-event
+ detection, and ConsoleEegh history mutation copies | Fixed + in PR #214 / issue #208 | Shared low-level contracts were centralized + before later phases consumed them. |
| Rejection-family browser plumbing, epoched rejection scaffolds, + component activation access, ICA finalization, and clean_rawdata + channel-removal masks | Fixed in PR #215 / issue #209 | These + scientific rejection/ICA/cleaning helpers were consolidated in the phase + that could test visual rejection state and numerical side effects + together. |
| CLI transform/pipeline duplication, JSON detection, stale + per-module harness contracts, extension catalog split, entry-point + helpers, active-record predicate, and bundled-plugin metadata | Fixed + in PR #218 / issue #211 | CLI and extension ownership was + consolidated in one agent-facing architecture phase. |
| FIR helper ownership and FIR GUI band-edge/shape duplication | Fixed + in PR #216 / issue #212 | plugins/firfilt now owns FIR
+ design helpers, and clean_rawdata imports downward from firfilt. |
| GUI extension pop-result STUDY return handling from #197/#205 | Non-goal + for #213 | The earlier tracker identified this as behavior-changing
+ because GUI extension pop_* functions returning STUDY state
+ would expand observable session behavior. No #213 work touched extension
+ GUI result semantics; this remains outside a mechanical closeout split
+ unless a future behavior issue requests it. |
| All other #197 findings not named above | Superseded by epic + #207 phase split | #197 and #205 were closed as superseded by the + replacement architecture closeout epic. PRs #214, #215, #217, #218, #216, + and this #213 branch are the final accounting set for those remaining + findings. |
_core.py
+ compatibility re-exports, and existing statistical behavior.pop_prop_extended facade, classifier/DIPFIT/PVAF data assembly,
+ dashboard rendering, navigation, rejection controls, packaged help, and
+ pop_viewprops delegation.Issue #212 closes the Phase 5 architecture ownership work for BIDS + import helpers, Qt dialog rendering helpers, and FIR design helpers while + preserving standalone EEGPrep runtime behavior.
+pop_load_frombids as the BIDS orchestration,
+ metadata, event, history, and report wrapper, and moved raw EEG file
+ loading plus packaged montage inference into plugins/EEG_BIDS
+ helper modules.plugins/firfilt
+ so clean_rawdata imports shared filter design behavior from the plugin
+ that owns FIR filtering semantics.QtDialogRenderer._helper aliases for
+ existing callers and tests.Issue #164 turns the final-epic documentation into a coherent standalone EEGPrep manual modeled after EEGLAB's learning path but written for Python, @@ -566,5 +698,28 @@
eegprep dispatcher the canonical owner of
+ JSON error envelopes, including nested command parse failures such as
+ eegprep qc report --json.pop_* invocation behavior.eegprep.extension_catalog_validation
+ while eegprep.extension_catalog remains the manager-facing runtime
+ catalog module.eegprep.extensions
+ so the registry, validator, and plugin menu use the same metadata rules.