You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
Session: svd_axis_consistency_fix
Updated: 2026-04-13T23:08:19Z
Goal
Ensure SVD components tab and compass show consistent party positions by using aligned PCA positions for components 1-2.
Constraints
- Right-wing parties (PVV, FVD, JA21, SGP) must appear on RIGHT side of all axes in both visualizations
- SVD labels should reflect voting patterns, not semantic content
- Components 1-2 use aligned PCA; Components 3-10 use raw SVD values
Progress
Done
- Fix SVD axis label alignment (removed static left_pole/right_pole, derive from runtime flip)
- Fix score mismatch in tijdtraject view (components 3-10 use per-window scores, not Procrustes-aligned)
- Fix PCA alignment consistency between compass and SVD components tab
- Update all 10 component labels based on motion analysis
- Add pool-based motion assignment (10 motions per component)
- Add SVD axis alignment and label consistency tests
In Progress
- (none)
Blocked
- (none)
Key Decisions
- Components 1-2 use aligned PCA positions: Consistent with compass visualization, derived from
load_positions() - Components 3-10 use raw SVD scores: Per-window flip handles orientation, Procrustes not needed
- New helper
_get_aligned_party_coords(): Converts aligned MP positions to party centroids for components 1-2
Next Steps
- Run visual verification to confirm compass and SVD tab show consistent party orderings
- Consider adding tests for the new
_get_aligned_party_coords()helper - Update any documentation that references the old behavior
File Operations
Read
explorer.py(components tab, load_positions, trajectory rendering)analysis/political_axis.py(PCA alignment, compute_party_centroids)analysis/config.py(SVD_THEMES)analysis/svd_labels.py(label derivation)
Modified
explorer.py- Added_get_aligned_party_coords(), updated component 1-2 to use aligned positions
Critical Context
- Commit
823df6f: Removed static left_pole/right_pole, fixed tijdtraject score mismatch - Commit
12936c5: Use aligned PCA for components 1-2 (consistent with compass) - Commit
036c3f9: Extended aligned PCA to all SVD components 1-10 - Commit
3a67100: Use aligned PCA scores for time trajectory view - Related docs:
docs/solutions/ui-bugs/svd-axis-pole-labels-incorrect-after-flip.md
Working Set
- Branch:
main - Key files:
explorer.py,analysis/config.py,analysis/svd_labels.py,tests/test_svd_axis_alignment.py