Skip to content

Multi-class beta polish: label summary wording + preview docs#389

Merged
gbeane merged 3 commits into
feature/multiclassfrom
feature/multiclass-beta-polish
Jun 2, 2026
Merged

Multi-class beta polish: label summary wording + preview docs#389
gbeane merged 3 commits into
feature/multiclassfrom
feature/multiclass-beta-polish

Conversation

@gbeane
Copy link
Copy Markdown
Collaborator

@gbeane gbeane commented Jun 2, 2026

Summary

Two beta-readiness polish items for multi-class mode (SHOULD-DOs from the multi-class plan), so the preview ships with clear, non-misleading UX and documentation.

T12 — Multi-class-aware Label Summary

Previously the Label Summary always showed "Behavior" / "Not Behavior". In multi-class mode "Not Behavior" is misleading and typically stayed at 0, because explicit negatives are stored on the reserved None track rather than as NOT_BEHAVIOR on a single behavior.

  • FrameLabelCountWidget row headers are now retitlable via set_class_labels(positive, negative).
  • In multi-class mode the summary shows the selected behavior name and None; binary mode is unchanged ("Behavior" / "Not Behavior").
  • Counts are sourced correctly per mode: the negative row now reflects the None-track BEHAVIOR counts in multi-class mode (cached as self._none_counts, refreshed for the current video like self._counts), and the selected behavior's NOT_BEHAVIOR counts in binary mode.

Known-limitations documentation

  • New user-guide page Multi-Class Classification (Preview) (multi-class.md) describing the mode, how to enable it, labeling/None semantics, and known limitations (no post-processing, project-level training settings, mutual-exclusivity requirement, no migration, format may change).
  • Added in both doc trees (docs/user-guide/ and the in-app src/jabs/resources/docs/user_guide/), registered in the in-app help tree, and cross-linked from classifier-types.md (distinguishing classifier type from classifier mode).

Tests

  • New tests/ui/test_label_count_widget.py: default headers, set_class_labels retitles both frame/bout rows, and restore-to-default.
  • Full tests/ui suite passes (69); ruff clean.

Notes

Binary mode behavior and wording are unchanged. Part of the multi-class beta-readiness work alongside #385/#386/#387 (section 10 fixes) and #388 (preview label).

@gbeane gbeane requested review from bergsalex, Copilot and keithshep and removed request for keithshep June 2, 2026 18:02
@gbeane gbeane self-assigned this Jun 2, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Polishes multi-class (preview) UX by making the Label Summary wording and negative-class counts multi-class-aware, and adds a dedicated user-guide page documenting multi-class semantics and known limitations.

Changes:

  • Add retitlable row headers to the Label Summary widget and wire it through the main control widget.
  • Update label/bout count aggregation so multi-class negative counts come from the reserved None track (instead of NOT_BEHAVIOR on the selected behavior), and retitle rows accordingly.
  • Add “Multi-Class Classification (Preview)” documentation to both the published docs and in-app help, and cross-link it from classifier type docs.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/ui/test_label_count_widget.py Adds UI tests validating default and retitled Label Summary headers.
src/jabs/ui/main_window/central_widget.py Implements multi-class-aware label summary retitling and None-track negative count sourcing/caching.
src/jabs/ui/main_control_widget/main_control_widget.py Exposes a control-layer method to retitle Label Summary class labels.
src/jabs/ui/main_control_widget/label_count_widget.py Stores row-header QLabel instances and adds set_class_labels() for retitling.
src/jabs/ui/dialogs/user_guide_dialog.py Registers the new multi-class help page in the in-app user guide tree.
src/jabs/resources/docs/user_guide/multi-class.md Adds in-app user guide page for multi-class preview mode.
src/jabs/resources/docs/user_guide/classifier-types.md Cross-links classifier “type vs mode” and points to the multi-class page.
docs/user-guide/multi-class.md Adds published docs page for multi-class preview mode.
docs/user-guide/classifier-types.md Cross-links classifier “type vs mode” and points to the multi-class page.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/jabs/ui/main_window/central_widget.py
@gbeane gbeane requested a review from keithshep June 2, 2026 18:26
@gbeane gbeane merged commit 1ab7027 into feature/multiclass Jun 2, 2026
2 checks passed
@gbeane gbeane deleted the feature/multiclass-beta-polish branch June 2, 2026 20:09
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.

2 participants