Derive classifier dimensions from bicorder.json automatically
Both export_model_for_js.py and bicorder_classifier.py now read DIMENSIONS and KEY_DIMENSIONS directly from bicorder.json at runtime, so the model stays in sync whenever gradient terms are renamed or added. A COLUMN_RENAMES dict handles historical CSV column name changes. The model now includes bicorder_version so the app's version check works correctly. Regenerated bicorder_model.json against bicorder.json v1.2.6 with correct dimension names, 9 key dimensions from shortform flags, and updated thresholds. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"generated": "2025-12-19T11:46:23.367069",
|
||||
"bicorder_version": "1.2.6",
|
||||
"generated": "2026-03-20T15:08:23.160614",
|
||||
"dimensions": [
|
||||
"Design_explicit_vs_implicit",
|
||||
"Design_precise_vs_interpretive",
|
||||
"Design_elite_vs_vernacular",
|
||||
"Design_institutional_vs_vernacular",
|
||||
"Design_documenting_vs_enabling",
|
||||
"Design_static_vs_malleable",
|
||||
"Design_technical_vs_social",
|
||||
@@ -17,24 +18,25 @@
|
||||
"Entanglement_obligatory_vs_voluntary",
|
||||
"Entanglement_flocking_vs_swarming",
|
||||
"Entanglement_defensible_vs_exposed",
|
||||
"Entanglement_exclusive_vs_non-exclusive",
|
||||
"Experience_sufficient_vs_insufficient",
|
||||
"Entanglement_monopolistic_vs_pluralistic",
|
||||
"Experience_sufficient_vs_limited",
|
||||
"Experience_crystallized_vs_contested",
|
||||
"Experience_trust-evading_vs_trust-inducing",
|
||||
"Experience_predictable_vs_emergent",
|
||||
"Experience_exclusion_vs_inclusion",
|
||||
"Experience_Kafka_vs_Whitehead",
|
||||
"Experience_restraining_vs_liberating",
|
||||
"Experience_dead_vs_alive"
|
||||
],
|
||||
"key_dimensions": [
|
||||
"Design_elite_vs_vernacular",
|
||||
"Entanglement_flocking_vs_swarming",
|
||||
"Design_precise_vs_interpretive",
|
||||
"Design_institutional_vs_vernacular",
|
||||
"Design_static_vs_malleable",
|
||||
"Entanglement_obligatory_vs_voluntary",
|
||||
"Entanglement_self-enforcing_vs_enforced",
|
||||
"Design_explicit_vs_implicit",
|
||||
"Entanglement_sovereign_vs_subsidiary",
|
||||
"Design_technical_vs_social"
|
||||
"Entanglement_self-enforcing_vs_enforced",
|
||||
"Entanglement_obligatory_vs_voluntary",
|
||||
"Entanglement_flocking_vs_swarming",
|
||||
"Experience_predictable_vs_emergent",
|
||||
"Experience_exclusion_vs_inclusion"
|
||||
],
|
||||
"cluster_names": {
|
||||
"1": "Relational/Cultural",
|
||||
@@ -229,14 +231,13 @@
|
||||
]
|
||||
},
|
||||
"thresholds": {
|
||||
"confidence_low": 0.5,
|
||||
"confidence_low": 0.6,
|
||||
"completeness_low": 0.5,
|
||||
"boundary_distance_low": 0.3
|
||||
"boundary_distance_low": 0.5
|
||||
},
|
||||
"metadata": {
|
||||
"total_protocols": 406,
|
||||
"cluster_1_count": 216,
|
||||
"cluster_2_count": 190
|
||||
},
|
||||
"bicorder_version": "1.2.3"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user