Skip to content

Commit d642824

Browse files
Guillemdbclaude
andcommitted
Replace channel toggles with per-channel MultiSelect mode selectors
Each channel family (meson, vector, baryon, glueball, tensor) now has its own MultiSelect widget listing all operator modes plus their propagator (frozen-source) equivalents. Users can select multiple modes simultaneously to compare across scales for mass fits. The pipeline runs once for data preparation, then computes additional modes efficiently by calling operator functions directly on the shared PreparedChannelData. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7d1495a commit d642824

28 files changed

Lines changed: 2077 additions & 20857 deletions

src/fragile/physics/app/_fractal_set.py

Lines changed: 1213 additions & 0 deletions
Large diffs are not rendered by default.

src/fragile/physics/app/correlator_plots.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@
3535
"baryon_nucleon": "#54a24b",
3636
"glueball_plaquette": "#b279a2",
3737
"tensor_traceless": "#ff9da6",
38+
"meson_scalar_propagator": "#7b9ec9",
39+
"meson_pseudoscalar_propagator": "#a3d4d0",
40+
"vector_full_propagator": "#f9a84f",
41+
"axial_full_propagator": "#e8817f",
42+
"baryon_nucleon_propagator": "#7ec47b",
43+
"glueball_plaquette_propagator": "#c9a0bf",
3844
}
3945

4046
_DEFAULT_COLOR = "#1f77b4"

src/fragile/physics/app/dashboard.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from fragile.physics.app.diagnostics import build_coupling_diagnostics_tab
1515
from fragile.physics.app.gravity import build_holographic_principle_tab
1616
from fragile.physics.app.simulation import SimulationTab
17+
from fragile.physics.app.mass_extraction_tab import build_mass_extraction_tab
1718
from fragile.physics.app.strong_correlators import build_strong_correlator_tab
1819
from fragile.physics.fractal_gas.history import RunHistory
1920

@@ -87,6 +88,7 @@ def _build_ui():
8788
"_multiscale_geodesic_distribution": None,
8889
"coupling_diagnostics_output": None,
8990
"strong_correlator_output": None,
91+
"mass_extraction_output": None,
9092
}
9193

9294
algorithm_section = build_algorithm_diagnostics_tab(state)
@@ -106,6 +108,21 @@ def _build_ui():
106108
run_tab_computation=_run_tab_computation,
107109
)
108110

111+
mass_section = build_mass_extraction_tab(
112+
state=state,
113+
run_tab_computation=_run_tab_computation,
114+
)
115+
116+
# Wire strong correlator completion to enable mass extraction button.
117+
_orig_strong_on_run = strong_section.on_run
118+
119+
def _on_strong_run(event):
120+
_orig_strong_on_run(event)
121+
if state["strong_correlator_output"] is not None:
122+
mass_section.on_correlators_ready()
123+
124+
strong_section.run_button.on_click(_on_strong_run)
125+
109126
# Wire SimulationTab history changes to all analysis sections.
110127
def _on_history_changed(
111128
history: RunHistory,
@@ -122,6 +139,7 @@ def _on_history_changed(
122139
holographic_section.on_history_changed(defer)
123140
coupling_section.on_history_changed(defer)
124141
strong_section.on_history_changed(defer)
142+
mass_section.on_history_changed(defer)
125143

126144
sim_tab.on_history_changed(_on_history_changed)
127145
holographic_section.fractal_set_run_button.on_click(holographic_section.on_run_fractal_set)
@@ -165,6 +183,7 @@ def _on_history_changed(
165183
("Holographic Principle", holographic_section.fractal_set_tab),
166184
("Coupling Diagnostics", coupling_section.coupling_diagnostics_tab),
167185
("Strong Correlators", strong_section.tab),
186+
("Mass Extraction", mass_section.tab),
168187
)
169188
]
170189

0 commit comments

Comments
 (0)