hhh / pages /step3_left.py
github-actions[bot]
Deploy from GitHub Actions (commit: 8b247ffacd77c0672965b8378f1d52a7dcd187ae)
9366995
"""
Step 3 Left Panel: Predefined Metrics
"""
import streamlit as st
def render_step3_left():
"""Render the left panel for Step 3: Predefined Metrics"""
st.markdown("### 📊 Available Metrics")
st.markdown("Select which therapeutic metrics to evaluate:")
# Get available metrics from registry
from evaluators import list_available_metrics, get_metrics_by_category, get_metric_metadata
available_metrics = list_available_metrics()
metrics_by_category = get_metrics_by_category()
selected_metrics = []
# Display metrics grouped by category
if metrics_by_category:
for category, metric_keys in metrics_by_category.items():
if category:
st.markdown(f"**{category}**")
for metric_key in metric_keys:
metadata = get_metric_metadata(metric_key)
if metadata:
label = metadata.label
description = metadata.description
help_text = description if description else None
if st.checkbox(
label,
value=st.session_state.get(f'metric_{metric_key}', False),
key=f'metric_{metric_key}',
help=help_text
):
selected_metrics.append(metric_key)
else:
# Fallback: display all metrics without categories
for metric_key in available_metrics:
metadata = get_metric_metadata(metric_key)
label = metadata.label if metadata else metric_key.replace('_', ' ').title()
description = metadata.description if metadata else None
if st.checkbox(
label,
value=st.session_state.get(f'metric_{metric_key}', False),
key=f'metric_{metric_key}',
help=description
):
selected_metrics.append(metric_key)
st.session_state.selected_metrics = selected_metrics
# Validation message for metrics
if not selected_metrics:
st.warning("⚠️ Please select at least one metric.")
else:
st.success(f"✅ {len(selected_metrics)} metric(s) selected")
return selected_metrics