|
|
|
|
@ -160,6 +160,10 @@ Single public function: `classify_axes(positions_by_window, axes, db_path)`. |
|
|
|
|
|
|
|
|
|
The function is pure except for reading two CSV files (cached module-level after first load). |
|
|
|
|
|
|
|
|
|
CSV paths are derived from `db_path`: `Path(db_path).parent / "party_ideologies.csv"` and |
|
|
|
|
`Path(db_path).parent / "coalition_membership.csv"`. Both files live in the same `data/` directory |
|
|
|
|
as the database. |
|
|
|
|
|
|
|
|
|
**Algorithm per window:** |
|
|
|
|
|
|
|
|
|
1. Collect parties that appear in both `positions_by_window[window_id]` and `party_ideologies.csv`. |
|
|
|
|
@ -184,7 +188,9 @@ The function is pure except for reading two CSV files (cached module-level after |
|
|
|
|
6. Repeat steps 3–5 for Y-axis using `party_y`. |
|
|
|
|
7. After processing all windows, pick global X label = modal label across annual windows only |
|
|
|
|
(quarterly windows participate in quality tracking but not in the modal vote, to avoid |
|
|
|
|
over-weighting). |
|
|
|
|
over-weighting). The `current_parliament` window is excluded from modal voting entirely and |
|
|
|
|
from the coalition dimension (no year to look up); it still gets x_quality and x_interpretation |
|
|
|
|
based on the left_right and progressive correlations. |
|
|
|
|
|
|
|
|
|
**Interpretation strings (Dutch):** |
|
|
|
|
|
|
|
|
|
|