MorganBrizon/EEG_Epilepsy_App
5
1import joblib2import numpy as np3import mne4 5def extract_features(raw, channels=None):6 """7 Fonction de base pour extraire des features simples à partir du signal EEG.8 Ici, on calcule la moyenne par canal.9 À améliorer avec tes features plus avancées !10 """11 if channels:12 raw = raw.copy().pick_channels(channels)13 data = raw.get_data() # shape : (n_channels, n_times)14 features = np.mean(data, axis=1) # Moyenne par canal15 return features16 17def predict_epilepsy(raw, model_path, channels=None):18 """19 Prédiction de l'état épileptique à partir du signal brut et d'un modèle sauvegardé.20 Retourne aussi la probabilité associée.21 """22 try:23 model = joblib.load(model_path)24 if channels:25 raw = raw.copy().pick_channels(channels)26 27 features = extract_features(raw).reshape(1, -1)28 prediction = model.predict(features)[0]29 30 if hasattr(model, "predict_proba"):31 prob = model.predict_proba(features)[0][1] # proba que ce soit 1 (epilepsie)32 else:33 prob = None34 35 label = "Épilepsie détectée" if prediction == 1 else "Pas d’épilepsie détectée"36 return label, prob37 38 except Exception as e:39 return f"Erreur : {e}", None