Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 63 additions & 5 deletions task_dFC/multi_dataset_analysis/ml_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,47 @@
"DiscreteHMM",
]
)

HYBRID_METHODS = frozenset(
[
"AdaptiveDccRandom_hybrid_ensemble",
"AdaptiveEdgeKalman_hybrid",
"AdaptiveQuantumReservoir_hybrid",
"AdaptiveRandomSparse_hybrid",
"AdaptiveRobustDifferential_hybrid_ensemble",
"ChangepointMultiscaleExp_hybrid_ensemble",
"ChangepointRobustExp_hybrid",
"DccChangepointSparse_hybrid",
"DccEdgeExponential_hybrid",
"DccKalmanVolatility_hybrid_ensemble",
"DifferentialEdgeKalman_hybrid",
"EdgeKalmanExp_hybrid_ensemble",
"EdgeRandomReservoir_hybrid_ensemble",
"EdgeStftQuantum_hybrid",
"KalmanReservoirMultiscale_hybrid",
"MultiscaleDccKalman_hybrid",
"QuantumMultiscaleKalman_hybrid_ensemble",
"QuantumRandomExp_hybrid",
"RandomFourierKalman_hybrid",
"ReservoirChangepointRobust_hybrid_ensemble",
"ReservoirEdgeDcc_hybrid",
"RobustDifferentialStft_hybrid",
"RobustSparseEdge_hybrid",
"RobustVolatilitySliding_hybrid_ensemble",
"SlidingVolatilityDcc_hybrid",
"SparseDccExp_hybrid_ensemble",
"StftEdgeAdaptive_hybrid_ensemble",
"StftExpKalman_hybrid",
"StftQuantumSparse_hybrid_ensemble",
"VolatilityAdaptiveEdge_hybrid"
]
)

_AIGM_COLOR = "#0077B6"
_HYBRID_COLOR = "#30AC30"
_NON_AIGM_COLOR = "#E63946"
_NON_AIGM_LABEL_COLOR = "#D4721A"
_HYBRID_LABEL_COLOR = "#30AC30"
_METRIC_SHORT = {
"Logistic regression balanced accuracy": "LogReg BA",
"SVM balanced accuracy": "SVM BA",
Expand Down Expand Up @@ -487,6 +525,9 @@ def _highlight_nonaigm_labels(ax):
for label in ax.get_yticklabels():
if label.get_text() in NON_AIGM_METHODS:
label.set_color(_NON_AIGM_LABEL_COLOR)
for label in ax.get_yticklabels():
if label.get_text() in HYBRID_METHODS:
label.set_color(_HYBRID_LABEL_COLOR)


def _build_experiment_legend(
Expand Down Expand Up @@ -922,13 +963,14 @@ def plot_aigm_comparison(

df_best = df_best.copy()
df_best["group"] = df_best["dFC method"].apply(
lambda m: "Non-AIGM" if m in NON_AIGM_METHODS else "AIGM"
lambda m: "Non-AIGM" if m in NON_AIGM_METHODS else "Hybrid" if m in HYBRID_METHODS else "AIGM"
)

group_order = ["AIGM", "Non-AIGM"]
group_order = ["Hybrid","AIGM", "Non-AIGM"]
n_aigm = df_best[df_best["group"] == "AIGM"]["dFC method"].nunique()
n_non_aigm = df_best[df_best["group"] == "Non-AIGM"]["dFC method"].nunique()
group_labels = [f"AIGM\n(n={n_aigm} methods)", f"Non-AIGM\n(n={n_non_aigm} methods)"]
n_hybrid = df_best[df_best["group"] == "Hybrid"]["dFC method"].nunique()
group_labels = [f"Hybrid\n(n={n_hybrid} methods)",f"AIGM\n(n={n_aigm} methods)", f"Non-AIGM\n(n={n_non_aigm} methods)"]
df_best["group_label"] = df_best["group"].map(dict(zip(group_order, group_labels)))

fig, ax = plt.subplots(figsize=(9, 4))
Expand All @@ -953,7 +995,7 @@ def plot_aigm_comparison(

# One point per (method × experiment), colored by group
rng = np.random.default_rng(42)
group_colors = {"AIGM": _AIGM_COLOR, "Non-AIGM": _NON_AIGM_COLOR}
group_colors = {"AIGM": _AIGM_COLOR, "Non-AIGM": _NON_AIGM_COLOR, "Hybrid": _HYBRID_COLOR}
for i, (group, label) in enumerate(zip(group_order, group_labels)):
vals = df_best[df_best["group"] == group]["score"].dropna().values
y_jit = i + rng.uniform(-0.18, 0.18, len(vals))
Expand All @@ -970,7 +1012,9 @@ def plot_aigm_comparison(
# Mann-Whitney p-value
aigm_vals = df_best[df_best["group"] == "AIGM"]["score"].dropna().values
non_aigm_vals = df_best[df_best["group"] == "Non-AIGM"]["score"].dropna().values
if len(aigm_vals) >= 2 and len(non_aigm_vals) >= 2:
hybrid_vals = df_best[df_best["group"] == "Hybrid"]["score"].dropna().values
#Ajouter version pour p-value AIGM vs Hybrid
if len(aigm_vals) >= 2 and len(non_aigm_vals) >= 2:
_, pval = mannwhitneyu(aigm_vals, non_aigm_vals, alternative="two-sided")
pstr = "p<0.001" if pval < 0.001 else f"p={pval:.3f}"
ax.text(
Expand All @@ -984,6 +1028,20 @@ def plot_aigm_comparison(
fontweight="bold",
bbox=dict(boxstyle="round,pad=0.3", fc="white", ec="#BBBBBB", alpha=0.9),
)
if len(aigm_vals) >= 2 and len(hybrid_vals) >= 2:
_, pval = mannwhitneyu(aigm_vals, hybrid_vals, alternative="two-sided")
pstr = "p<0.001" if pval < 0.001 else f"p={pval:.3f}"
ax.text(
0.97,
0.03,
pstr,
transform=ax.transAxes,
ha="right",
va="top",
fontsize=11,
fontweight="bold",
bbox=dict(boxstyle="round,pad=0.3", fc="white", ec="#BBBBBB", alpha=0.9),
)

lower, upper = get_pointplot_limits(metric)
if metric == "SI":
Expand Down
32 changes: 0 additions & 32 deletions task_dFC/run_scripts_slurm/achillev@narval.alliancecan

This file was deleted.

60 changes: 30 additions & 30 deletions task_dFC/run_scripts_slurm/methods_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,36 +47,36 @@
"dict_alpha": 0.1
},
"MEASURES_name_lst": [
"ADAPTIVE_DCC_RANDOM_HYBRID_ENSEMBLE",
"ADAPTIVE_EDGE_KALMAN_HYBRID",
"ADAPTIVE_QUANTUM_RESERVOIR_HYBRID",
"ADAPTIVE_RANDOM_SPARSE_HYBRID",
"ADAPTIVE_ROBUST_DIFFERENTIAL_HYBRID_ENSEMBLE",
"CHANGEPOINT_MULTISCALE_EXP_HYBRID_ENSEMBLE",
"CHANGEPOINT_ROBUST_EXP_HYBRID",
"DCC_CHANGEPOINT_SPARSE_HYBRID",
"DCC_EDGE_EXPONENTIAL_HYBRID",
"DCC_KALMAN_VOLATILITY_HYBRID_ENSEMBLE",
"DIFFERENTIAL_EDGE_KALMAN_HYBRID",
"EDGE_KALMAN_EXP_HYBRID_ENSEMBLE",
"EDGE_RANDOM_RESERVOIR_HYBRID_ENSEMBLE",
"EDGE_STFT_QUANTUM_HYBRID",
"KALMAN_RESERVOIR_MULTISCALE_HYBRID",
"MULTISCALE_DCC_KALMAN_HYBRID",
"QUANTUM_MULTISCALE_KALMAN_HYBRID_ENSEMBLE",
"QUANTUM_RANDOM_EXP_HYBRID",
"RANDOM_FOURIER_KALMAN_HYBRID",
"RESERVOIR_CHANGEPOINT_ROBUST_HYBRID_ENSEMBLE",
"RESERVOIR_EDGE_DCC_HYBRID",
"ROBUST_DIFFERENTIAL_STFT_HYBRID",
"ROBUST_SPARSE_EDGE_HYBRID",
"ROBUST_VOLATILITY_SLIDING_HYBRID_ENSEMBLE",
"SLIDING_VOLATILITY_DCC_HYBRID",
"SPARSE_DCC_EXP_HYBRID_ENSEMBLE",
"STFT_EDGE_ADAPTIVE_HYBRID_ENSEMBLE",
"STFT_EXP_KALMAN_HYBRID",
"STFT_QUANTUM_SPARSE_HYBRID_ENSEMBLE",
"VOLATILITY_ADAPTIVE_EDGE_HYBRID"
"AdaptiveDccRandom_hybrid_ensemble",
"AdaptiveEdgeKalman_hybrid",
"AdaptiveQuantumReservoir_hybrid",
"AdaptiveRandomSparse_hybrid",
"AdaptiveRobustDifferential_hybrid_ensemble",
"ChangepointMultiscaleExp_hybrid_ensemble",
"ChangepointRobustExp_hybrid",
"DccChangepointSparse_hybrid",
"DccEdgeExponential_hybrid",
"DccKalmanVolatility_hybrid_ensemble",
"DifferentialEdgeKalman_hybrid",
"EdgeKalmanExp_hybrid_ensemble",
"EdgeRandomReservoir_hybrid_ensemble",
"EdgeStftQuantum_hybrid",
"KalmanReservoirMultiscale_hybrid",
"MultiscaleDccKalman_hybrid",
"QuantumMultiscaleKalman_hybrid_ensemble",
"QuantumRandomExp_hybrid",
"RandomFourierKalman_hybrid",
"ReservoirChangepointRobust_hybrid_ensemble",
"ReservoirEdgeDcc_hybrid",
"RobustDifferentialStft_hybrid",
"RobustSparseEdge_hybrid",
"RobustVolatilitySliding_hybrid_ensemble",
"SlidingVolatilityDcc_hybrid",
"SparseDccExp_hybrid_ensemble",
"StftEdgeAdaptive_hybrid_ensemble",
"StftExpKalman_hybrid",
"StftQuantumSparse_hybrid_ensemble",
"VolatilityAdaptiveEdge_hybrid"
],
"alter_hparams": [],
"params_multi_analysis": {
Expand Down
2 changes: 1 addition & 1 deletion task_dFC/run_scripts_slurm/run_ML.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#SBATCH --output=logs/ML_out_%A_%a.txt # %A = array job ID, %a = task ID
#SBATCH --error=logs/ML_err_%A_%a.txt
#SBATCH --time=24:00:00
#SBATCH --mem=128G
#SBATCH --mem=64G
#SBATCH --requeue

DATASET_INFO="./dataset_info.json"
Expand Down
Loading