NeuroKit2
Vue d'ensemble
NeuroKit2 est une boîte à outils Python complète pour le traitement et l'analyse des signaux physiologiques (biosignaux). Utilisez cette skill pour traiter les signaux cardiovasculaires, neuraux, autonomes, respiratoires et musculaires pour la recherche en psychophysiologie, les applications cliniques et les études d'interaction homme-machine.
Quand utiliser cette skill
Appliquez cette skill en travaillant avec :
- Signaux cardiaques : ECG, PPG, variabilité de la fréquence cardiaque (VFC), analyse du pouls
- Signaux cérébraux : bandes de fréquence EEG, microstats, complexité, localisation de source
- Signaux autonomes : activité électrodermale (AED/GSR), réponses de conductance cutanée (RCC)
- Signaux respiratoires : fréquence respiratoire, variabilité respiratoire (VR), volume par unité de temps
- Signaux musculaires : amplitude EMG, détection de l'activation musculaire
- Suivi oculaire : EOG, détection et analyse des clignements
- Intégration multimodale : traitement simultané de plusieurs signaux physiologiques
- Analyse de complexité : mesures d'entropie, dimensions fractales, dynamiques non linéaires
Capacités principales
1. Traitement des signaux cardiaques (ECG/PPG)
Traiter les signaux d'électrocardiogramme et de photopléthysmographie pour l'analyse cardiovasculaire. Voir references/ecg_cardiac.md pour les workflows détaillés.
Workflows principaux :
- Pipeline de traitement ECG : nettoyage → détection des pics R → délinéation → évaluation de la qualité
- Analyse de la VFC sur les domaines temporel, fréquentiel et non linéaire
- Analyse du pouls PPG et évaluation de la qualité
- Extraction de la respiration dérivée de l'ECG
Fonctions clés :
import neurokit2 as nk
# Pipeline complet de traitement ECG
signals, info = nk.ecg_process(ecg_signal, sampling_rate=1000)
# Analyser les données ECG (événement ou intervalle)
analysis = nk.ecg_analyze(signals, sampling_rate=1000)
# Analyse complète de la VFC
hrv = nk.hrv(peaks, sampling_rate=1000) # Domaines temporel, fréquentiel, non linéaire
2. Analyse de la variabilité de la fréquence cardiaque
Calculer les métriques complètes de VFC à partir des signaux cardiaques. Voir references/hrv.md pour tous les indices et l'analyse spécifique au domaine.
Domaines pris en charge :
- Domaine temporel : SDNN, RMSSD, pNN50, SDSD et métriques dérivées
- Domaine fréquentiel : puissance ULF, VLF, LF, HF, VHF et ratios
- Domaine non linéaire : diagramme de Poincaré (SD1/SD2), mesures d'entropie, dimensions fractales
- Spécialisé : arythmie sinusale respiratoire (RSA), analyse de quantification de récurrence (RQA)
Fonctions clés :
# Tous les indices de VFC à la fois
hrv_indices = nk.hrv(peaks, sampling_rate=1000)
# Analyse spécifique au domaine
hrv_time = nk.hrv_time(peaks)
hrv_freq = nk.hrv_frequency(peaks, sampling_rate=1000)
hrv_nonlinear = nk.hrv_nonlinear(peaks, sampling_rate=1000)
hrv_rsa = nk.hrv_rsa(peaks, rsp_signal, sampling_rate=1000)
3. Analyse des signaux cérébraux (EEG)
Analyser les signaux d'électroencéphalographie pour la puissance fréquentielle, la complexité et les motifs de microstats. Voir references/eeg.md pour les workflows détaillés et l'intégration MNE.
Capacités principales :
- Analyse de la puissance des bandes de fréquence (Delta, Thêta, Alpha, Bêta, Gamma)
- Évaluation de la qualité des canaux et ré-référençage
- Localisation de source (sLORETA, MNE)
- Segmentation des microstats et dynamique des transitions
- Puissance du champ global et mesures de dissimilarité
Fonctions clés :
# Analyse de la puissance sur les bandes de fréquence
power = nk.eeg_power(eeg_data, sampling_rate=250, channels=['Fz', 'Cz', 'Pz'])
# Analyse des microstats
microstates = nk.microstates_segment(eeg_data, n_microstates=4, method='kmod')
static = nk.microstates_static(microstates)
dynamic = nk.microstates_dynamic(microstates)
4. Activité électrodermale (AED)
Traiter les signaux de conductance cutanée pour l'évaluation du système nerveux autonome. Voir references/eda.md pour les workflows détaillés.
Workflows principaux :
- Décomposition du signal en composantes toniques et phasiques
- Détection et analyse de la réponse de conductance cutanée (RCC)
- Calcul de l'indice du système nerveux sympathique
- Détection de l'autocorrélation et des points de rupture
Fonctions clés :
# Traitement AED complet
signals, info = nk.eda_process(eda_signal, sampling_rate=100)
# Analyser les données AED
analysis = nk.eda_analyze(signals, sampling_rate=100)
# Activité du système nerveux sympathique
sympathetic = nk.eda_sympathetic(signals, sampling_rate=100)
5. Traitement des signaux respiratoires (RSP)
Analyser les motifs de respiration et la variabilité respiratoire. Voir references/rsp.md pour les workflows détaillés.
Capacités principales :
- Calcul de la fréquence respiratoire et analyse de la variabilité
- Évaluation de l'amplitude et de la symétrie de la respiration
- Volume respiratoire par unité de temps (applications fMRI)
- Variabilité de l'amplitude respiratoire (VAR)
Fonctions clés :
# Traitement RSP complet
signals, info = nk.rsp_process(rsp_signal, sampling_rate=100)
# Variabilité de la fréquence respiratoire
rrv = nk.rsp_rrv(signals, sampling_rate=100)
# Volume respiratoire par unité de temps
rvt = nk.rsp_rvt(signals, sampling_rate=100)
6. Électromyographie (EMG)
Traiter les signaux d'activité musculaire pour la détection de l'activation et l'analyse d'amplitude. Voir references/emg.md pour les workflows.
Fonctions clés :
# Traitement EMG complet
signals, info = nk.emg_process(emg_signal, sampling_rate=1000)
# Détection de l'activation musculaire
activation = nk.emg_activation(signals, sampling_rate=1000, method='threshold')
7. Électrooculographie (EOG)
Analyser les motifs de mouvement oculaire et de clignement. Voir references/eog.md pour les workflows.
Fonctions clés :
# Traitement EOG complet
signals, info = nk.eog_process(eog_signal, sampling_rate=500)
# Extraire les caractéristiques de clignement
features = nk.eog_features(signals, sampling_rate=500)
8. Traitement général des signaux
Appliquer des opérations de filtrage, de décomposition et de transformation à tout signal. Voir references/signal_processing.md pour les utilitaires complets.
Opérations clés :
- Filtrage (passe-bas, passe-haut, passe-bande, coupe-bande)
- Décomposition (EMD, SSA, ondelette)
- Détection et correction des pics
- Estimation de la densité spectrale de puissance
- Interpolation et ré-échantillonnage du signal
- Analyse de l'autocorrélation et de la synchronie
Fonctions clés :
# Filtrage
filtered = nk.signal_filter(signal, sampling_rate=1000, lowcut=0.5, highcut=40)
# Détection des pics
peaks = nk.signal_findpeaks(signal)
# Densité spectrale de puissance
psd = nk.signal_psd(signal, sampling_rate=1000)
9. Analyse de la complexité et de l'entropie
Calculer les dynamiques non linéaires, les dimensions fractales et les mesures théoriques de l'information. Voir references/complexity.md pour toutes les mesures disponibles.
Mesures disponibles :
- Entropie : Shannon, approximative, d'échantillon, de permutation, spectrale, floue, multiscale
- Dimensions fractales : Katz, Higuchi, Petrosian, Sevcik, dimension de corrélation
- Dynamiques non linéaires : exposants de Lyapunov, complexité de Lempel-Ziv, quantification de récurrence
- DFA : Analyse des fluctuations sans tendance, DFA multifractale
- Théorie de l'information : information de Fisher, information mutuelle
Fonctions clés :
# Plusieurs métriques de complexité à la fois
complexity_indices = nk.complexity(signal, sampling_rate=1000)
# Mesures spécifiques
apen = nk.entropy_approximate(signal)
dfa = nk.fractal_dfa(signal)
lyap = nk.complexity_lyapunov(signal, sampling_rate=1000)
10. Analyse événementielle
Créer des fenêtres temporelles autour d'événements stimulus et analyser les réponses physiologiques. Voir references/epochs_events.md pour les workflows.
Capacités principales :
- Création de fenêtres temporelles à partir de marqueurs d'événement
- Moyenne et visualisation liées aux événements
- Options de correction de la ligne de base
- Calcul de la moyenne générale avec intervalles de confiance
Fonctions clés :
# Trouver les événements dans le signal
events = nk.events_find(trigger_signal, threshold=0.5)
# Créer des fenêtres temporelles autour des événements
epochs = nk.epochs_create(signals, events, sampling_rate=1000,
epochs_start=-0.5, epochs_end=2.0)
# Moyenne sur les fenêtres temporelles
grand_average = nk.epochs_average(epochs)
11. Intégration multi-signaux
Traiter plusieurs signaux physiologiques simultanément avec sortie unifiée. Voir references/bio_module.md pour les workflows d'intégration.
Fonctions clés :
# Traiter plusieurs signaux à la fois
bio_signals, bio_info = nk.bio_process(
ecg=ecg_signal,
rsp=rsp_signal,
eda=eda_signal,
emg=emg_signal,
sampling_rate=1000
)
# Analyser tous les signaux traités
bio_analysis = nk.bio_analyze(bio_signals, sampling_rate=1000)
Modes d'analyse
NeuroKit2 sélectionne automatiquement entre deux modes d'analyse en fonction de la durée des données :
Analyse événementielle (< 10 secondes) :
- Analyse les réponses verrouillées au stimulus
- Segmentation basée sur des fenêtres temporelles
- Convient aux paradigmes expérimentaux avec essais discrets
Analyse par intervalle (≥ 10 secondes) :
- Caractérise les motifs physiologiques sur des périodes prolongées
- État de repos ou activités continues
- Convient aux mesures de base et à la surveillance à long terme
La plupart des fonctions *_analyze() choisissent automatiquement le mode approprié.
Installation
uv pip install neurokit2
Pour la version de développement :
uv pip install https://github.com/neuropsychology/NeuroKit/zipball/dev
Workflows courants
Démarrage rapide : Analyse ECG
import neurokit2 as nk
# Charger les données d'exemple
ecg = nk.ecg_simulate(duration=60, sampling_rate=1000)
# Traiter l'ECG
signals, info = nk.ecg_process(ecg, sampling_rate=1000)
# Analyser la VFC
hrv = nk.hrv(info['ECG_R_Peaks'], sampling_rate=1000)
# Visualiser
nk.ecg_plot(signals, info)
Analyse multimodale
# Traiter plusieurs signaux
bio_signals, bio_info = nk.bio_process(
ecg=ecg_signal,
rsp=rsp_signal,
eda=eda_signal,
sampling_rate=1000
)
# Analyser tous les signaux
results = nk.bio_analyze(bio_signals, sampling_rate=1000)
Potentiel lié à un événement
# Trouver les événements
events = nk.events_find(trigger_channel, threshold=0.5)
# Créer des fenêtres temporelles
epochs = nk.epochs_create(processed_signals, events,
sampling_rate=1000,
epochs_start=-0.5, epochs_end=2.0)
# Analyse événementielle pour chaque type de signal
ecg_epochs = nk.ecg_eventrelated(epochs)
eda_epochs = nk.eda_eventrelated(epochs)
Références
Cette skill inclut une documentation de référence complète organisée par type de signal et méthode d'analyse :
- ecg_cardiac.md : traitement ECG/PPG, détection des pics R, délinéation, évaluation de la qualité
- hrv.md : indices de variabilité de la fréquence cardiaque sur tous les domaines
- eeg.md : analyse EEG, bandes de fréquence, microstats, localisation de source
- eda.md : traitement de l'activité électrodermale et analyse de la RCC
- rsp.md : traitement des signaux respiratoires et variabilité
- ppg.md : analyse des signaux de photopléthysmographie
- emg.md : traitement de l'électromyographie et détection de l'activation
- eog.md : électrooculographie et analyse des clignements
- signal_processing.md : utilitaires généraux de signal et transformations
- complexity.md : mesures d'entropie, fractales et non linéaires
- epochs_events.md : analyse événementielle et création de fenêtres temporelles
- bio_module.md : workflows d'intégration multi-signaux
Charger les fichiers de référence spécifiques selon vos besoins à l'aide de l'outil Read pour accéder à la documentation détaillée des fonctions et aux paramètres.
Ressources supplémentaires
- Documentation officielle : https://neuropsychology.github.io/NeuroKit/
- Dépôt GitHub : https://github.com/neuropsychology/NeuroKit
- Publication : Makowski et al. (2021). NeuroKit2: A Python toolbox for neurophysiological signal processing. Behavior Research Methods. https://doi.org/10.3758/s13428-020-01516-y