Source code for fairxai.app.explainability.run_pipeline_tab

import streamlit as st


[docs] def run_pipeline_page(): st.subheader("Esegui la spiegazione del progetto caricato") project = st.session_state.get("current_project", None) if project is None: st.warning("Nessun progetto caricato. Vai prima nella tab 'Progetti' e carica un progetto.") return st.info(f"`{project.id}` ({project.model_type} su {project.dataset_type})") # Mostra gli explainers compatibili explainer_names = [cls.explainer_name for cls in project.explainers] if not explainer_names: st.error("Nessuno spiegatore compatibile trovato per questo progetto.") return selected_explainer = st.selectbox("Scegli uno spiegatore", explainer_names) mode = st.radio("Modalità di spiegazione", ["local", "global"], horizontal=True) params = {} if mode == "local": if project.dataset_type == 'tabular': instance_index = st.number_input("Indice dell'istanza da spiegare", min_value=0, step=1) params["instance_index"] = int(instance_index) elif project.dataset_type == 'image': dataset_files = [f for f in project.dataset_instance.filenames] instance_filename = st.selectbox("Seleziona un file dataset:", dataset_files) permutation_label = st.selectbox("Seleziona la permutazione:", ["HWC", "CHW"]) permutation = {"HWC": [0, 1, 2], "CHW": [1, 2, 0]} params["hwc_permutation"] = permutation[permutation_label] params["instance_filename"] = instance_filename if st.button("Esegui spiegazione"): try: pipeline = [{"explainer": selected_explainer, "mode": mode, "params": params}] results = project.run_explanation_pipeline(pipeline) st.success(f"Spiegazione completata! {len(results)} risultato(i) generato/i.") result = results[0] st.markdown("###Risultato") st.json(result) # Eventuale rendering grafico se il risultato è un dizionario di feature importance if isinstance(result.get("result"), dict): result_values = result["result"] if all(isinstance(v, (int, float)) for v in result_values.values()): st.bar_chart(result_values) except Exception as e: st.error(f"Errore nell'esecuzione dello spiegatore: {e}")