neurokit2

Par mkurman · zorai

Boîte à outils complète de traitement des biosignaux pour l'analyse de données physiologiques, notamment les signaux ECG, EEG, EDA, RSP, PPG, EMG et EOG. Utilisez cette skill pour traiter les signaux cardiovasculaires, l'activité cérébrale, les réponses électrodermales, les patterns respiratoires, l'activité musculaire ou les mouvements oculaires. Applicable à l'analyse de la variabilité de la fréquence cardiaque, aux potentiels évoqués, aux mesures de complexité, à l'évaluation du système nerveux autonome, à la recherche en psychophysiologie et à l'intégration multimodale de signaux physiologiques.

npx skills add https://github.com/mkurman/zorai --skill neurokit2

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

Skills similaires