neurokit2 について
neurokit2は、生理信号の処理と分析を行うPythonツールキットです。心理生理学、臨床、人間とコンピューターの相互作用の研究向けに、多様な信号の統合やイベント関連分析を提供します。
主な機能
- 01ECG、PPG、HRVの処理
- 02EEGと脳波マイクロステートの分析
- 03EDA、呼吸、EMG、EOGの処理
- 04エントロピー、フラクタル、非線形指標の計算
- 05イベントエポックの作成と応答分析
- 06複数の生理信号の統合
活用シーン
- 01心臓活動と心拍変動の評価
- 02EEGの帯域パワーとマイクロステートの分析
- 03皮膚電気反応と筋活動の検出
- 04刺激に合わせた信号分割と応答比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill neurokit2インストール後、Claude Code で/neurokit2を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/bio_module.mdcomplexity.mdecg_cardiac.mdeda.mdeeg.mdemg.mdeog.mdepochs_events.mdhrv.mdppg.mdrsp.mdsignal_processing.md詳細
NeuroKit2
概要
NeuroKit2 は、生体信号(バイオシグナル)の処理と解析のための包括的な Python ツールキットです。心血管、神経、自律神経、呼吸、筋肉の信号を処理するために、このスキルを使用します。精神生理学の研究、臨床応用、ヒューマンコンピュータインタラクションの研究に活用できます。
このスキルを使用するタイミング
次のような作業を行う場合にこのスキルを適用します:
- 心臓信号: ECG、PPG、心拍変動(HRV)、脈波解析
- 脳信号: EEG 周波数帯域、マイクロステート、複雑性、ソース推定
- 自律神経信号: 皮膚電気活動(EDA/GSR)、皮膚コンダクタンス反応(SCR)
- 呼吸信号: 呼吸数、呼吸変動(RRV)、時間あたりの換気量
- 筋電信号: EMG 振幅、筋活動検出
- 視線追跡: EOG、まばたきの検出と解析
- マルチモーダル統合: 複数の生体信号の同時処理
- 複雑性解析: エントロピー指標、フラクタル次元、非線形動力学
主要機能
1. 心臓信号処理(ECG/PPG)
心血管解析のために、心電図および光電式容積脈波記録(PPG)の信号を処理します。詳細なワークフローについては references/ecg_cardiac.md を参照してください。
主なワークフロー:
- ECG 処理パイプライン: クリーニング → R 波検出 → 波形境界の特定(デリニエーション) → 品質評価
- 時間領域、周波数領域、非線形領域にわたる HRV 解析
- PPG 脈波解析と品質評価
- ECG 由来の呼吸成分の抽出
主要関数:
import neurokit2 as nk
# Complete ECG processing pipeline
signals, info = nk.ecg_process(ecg_signal, sampling_rate=1000)
# Analyze ECG data (event-related or interval-related)
analysis = nk.ecg_analyze(signals, sampling_rate=1000)
# Comprehensive HRV analysis
hrv = nk.hrv(peaks, sampling_rate=1000) # Time, frequency, nonlinear domains
2. 心拍変動解析
心臓信号から包括的な HRV 指標を算出します。すべての指標およびドメイン別の解析については references/hrv.md を参照してください。
対応ドメイン:
- 時間領域: SDNN、RMSSD、pNN50、SDSD、および派生指標
- 周波数領域: ULF、VLF、LF、HF、VHF のパワーおよび比率
- 非線形領域: ポアンカレプロット(SD1/SD2)、エントロピー指標、フラクタル次元
- 特殊解析: 呼吸性洞性不整脈(RSA)、再帰定量解析(RQA)
主要関数:
# All HRV indices at once
hrv_indices = nk.hrv(peaks, sampling_rate=1000)
# Domain-specific analysis
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. 脳信号解析(EEG)
脳波(EEG)信号を解析し、周波数パワー、複雑性、マイクロステートのパターンを調べます。詳細なワークフローと MNE 連携については references/eeg.md を参照してください。
主な機能:
- 周波数帯域パワー解析(デルタ、シータ、アルファ、ベータ、ガンマ)
- チャンネル品質評価と再参照
- ソース推定(sLORETA、MNE)
- マイクロステートのセグメンテーションと遷移ダイナミクス
- グローバルフィールドパワーおよび非類似度指標
主要関数:
# Power analysis across frequency bands
power = nk.eeg_power(eeg_data, sampling_rate=250, channels=['Fz', 'Cz', 'Pz'])
# Microstate analysis
microstates = nk.microstates_segment(eeg_data, n_microstates=4, method='kmod')
static = nk.microstates_static(microstates)
dynamic = nk.microstates_dynamic(microstates)
4. 皮膚電気活動(EDA)
自律神経系の評価のために、皮膚コンダクタンス信号を処理します。詳細なワークフローについては references/eda.md を参照してください。
主なワークフロー:
- 信号の緊張性成分と位相性成分への分解
- 皮膚コンダクタンス反応(SCR)の検出と解析
- 交感神経系指数の算出
- 自己相関と変化点検出
主要関数:
# Complete EDA processing
signals, info = nk.eda_process(eda_signal, sampling_rate=100)
# Analyze EDA data
analysis = nk.eda_analyze(signals, sampling_rate=100)
# Sympathetic nervous system activity
sympathetic = nk.eda_sympathetic(signals, sampling_rate=100)
5. 呼吸信号処理(RSP)
呼吸パターンと呼吸変動を解析します。詳細なワークフローについては references/rsp.md を参照してください。
主な機能:
- 呼吸数の算出と変動解析
- 呼吸振幅と対称性の評価
- 時間あたりの呼吸量(fMRI への応用)
- 呼吸振幅変動(RAV)
主要関数:
# Complete RSP processing
signals, info = nk.rsp_process(rsp_signal, sampling_rate=100)
# Respiratory rate variability
rrv = nk.rsp_rrv(signals, sampling_rate=100)
# Respiratory volume per time
rvt = nk.rsp_rvt(signals, sampling_rate=100)
6. 筋電図(EMG)
筋活動信号を処理し、活動の検出と振幅の解析を行います。ワークフローについては references/emg.md を参照してください。
主要関数:
# Complete EMG processing
signals, info = nk.emg_process(emg_signal, sampling_rate=1000)
# Muscle activation detection
activation = nk.emg_activation(signals, sampling_rate=1000, method='threshold')
7. 眼電図(EOG)
眼球運動とまばたきのパターンを解析します。ワークフローについては references/eog.md を参照してください。
主要関数:
# Complete EOG processing
signals, info = nk.eog_process(eog_signal, sampling_rate=500)
# Extract blink features
features = nk.eog_features(signals, sampling_rate=500)
8. 汎用信号処理
任意の信号にフィルタリング、分解、変換の操作を適用します。包括的なユーティリティについては references/signal_processing.md を参照してください。
主な操作:
- フィルタリング(ローパス、ハイパス、バンドパス、バンドストップ)
- 分解(EMD、SSA、ウェーブレット)
- ピーク検出と補正
- パワースペクトル密度推定
- 信号の補間とリサンプリング
- 自己相関と同期解析
主な関数:
# Filtering
filtered = nk.signal_filter(signal, sampling_rate=1000, lowcut=0.5, highcut=40)
# Peak detection
peaks = nk.signal_findpeaks(signal)
# Power spectral density
psd = nk.signal_psd(signal, sampling_rate=1000)
9. 複雑性とエントロピー解析
非線形ダイナミクス、フラクタル次元、情報理論的指標を計算します。利用可能なすべての指標については references/complexity.md を参照してください。
利用可能な指標:
- エントロピー: Shannon、近似、サンプル、順列、スペクトル、ファジー、マルチスケール
- フラクタル次元: Katz、Higuchi、Petrosian、Sevcik、相関次元
- 非線形ダイナミクス: リアプノフ指数、Lempel-Ziv 複雑性、再帰定量化
- DFA: 去トレンド変動解析、マルチフラクタル DFA
- 情報理論: フィッシャー情報量、相互情報量
主な関数:
# Multiple complexity metrics at once
complexity_indices = nk.complexity(signal, sampling_rate=1000)
# Specific measures
apen = nk.entropy_approximate(signal)
dfa = nk.fractal_dfa(signal)
lyap = nk.complexity_lyapunov(signal, sampling_rate=1000)
10. イベント関連解析
刺激イベントを中心としたエポックを作成し、生理学的反応を解析します。ワークフローについては references/epochs_events.md を参照してください。
主な機能:
- イベントマーカーからのエポック作成
- イベント関連の平均化と可視化
- ベースライン補正のオプション
- 信頼区間付きのグランドアベレージ計算
主な関数:
# Find events in signal
events = nk.events_find(trigger_signal, threshold=0.5)
# Create epochs around events
epochs = nk.epochs_create(signals, events, sampling_rate=1000,
epochs_start=-0.5, epochs_end=2.0)
# Average across epochs
grand_average = nk.epochs_average(epochs)
11. マルチシグナル統合
複数の生理信号を統一された出力で同時に処理します。統合ワークフローについては references/bio_module.md を参照してください。
主な関数:
# Process multiple signals at once
bio_signals, bio_info = nk.bio_process(
ecg=ecg_signal,
rsp=rsp_signal,
eda=eda_signal,
emg=emg_signal,
sampling_rate=1000
)
# Analyze all processed signals
bio_analysis = nk.bio_analyze(bio_signals, sampling_rate=1000)
解析モード
NeuroKit2 はデータの長さに応じて、2 つの解析モードを自動的に選択します。
イベント関連解析(10 秒未満):
- 刺激に同期した反応を解析します
- エポックに基づくセグメンテーション
- 離散的な試行を含む実験パラダイムに適しています
区間関連解析(10 秒以上):
- 長期間にわたる生理学的パターンを特徴づけます
- 安静状態または連続的な活動
- ベースライン測定や長期モニタリングに適しています
ほとんどの *_analyze() 関数は、適切なモードを自動的に選択します。
インストール
uv pip install neurokit2
開発版の場合:
uv pip install https://github.com/neuropsychology/NeuroKit/zipball/dev
一般的なワークフロー
クイックスタート: ECG 解析
import neurokit2 as nk
# Load example data
ecg = nk.ecg_simulate(duration=60, sampling_rate=1000)
# Process ECG
signals, info = nk.ecg_process(ecg, sampling_rate=1000)
# Analyze HRV
hrv = nk.hrv(info['ECG_R_Peaks'], sampling_rate=1000)
# Visualize
nk.ecg_plot(signals, info)
マルチモーダル解析
# Process multiple signals
bio_signals, bio_info = nk.bio_process(
ecg=ecg_signal,
rsp=rsp_signal,
eda=eda_signal,
sampling_rate=1000
)
# Analyze all signals
results = nk.bio_analyze(bio_signals, sampling_rate=1000)
イベント関連電位
# Find events
events = nk.events_find(trigger_channel, threshold=0.5)
# Create epochs
epochs = nk.epochs_create(processed_signals, events,
sampling_rate=1000,
epochs_start=-0.5, epochs_end=2.0)
# Event-related analysis for each signal type
ecg_epochs = nk.ecg_eventrelated(epochs)
eda_epochs = nk.eda_eventrelated(epochs)
参考資料
このスキルには、信号の種類と解析手法ごとに整理された包括的なリファレンス文書が含まれています。
- ecg_cardiac.md: ECG/PPG の処理、R 波検出、デリニエーション、品質評価
- hrv.md: すべての領域にわたる心拍変動指標
- eeg.md: EEG 解析、周波数帯域、マイクロステート、ソース推定
- eda.md: 皮膚電気活動の処理と SCR 解析
- rsp.md: 呼吸信号の処理と変動解析
- ppg.md: 光電脈波の信号解析
- emg.md: 筋電図の処理と活動検出
- eog.md: 眼電図と瞬目解析
- signal_processing.md: 汎用の信号ユーティリティと変換
- complexity.md: エントロピー、フラクタル、非線形指標
- epochs_events.md: イベント関連解析とエポック作成
- bio_module.md: マルチシグナル統合ワークフロー
詳細な関数ドキュメントとパラメータにアクセスするには、必要に応じて Read ツールを使用して特定のリファレンスファイルを読み込んでください。
追加リソース
- 公式ドキュメント: https://neuropsychology.github.io/NeuroKit/
- GitHub リポジトリ: https://github.com/neuropsychology/NeuroKit
- 論文: Makowski et al. (2021). NeuroKit2: A Python toolbox for neurophysiological signal processing. Behavior Research Methods. https://doi.org/10.3758/s13428-020-01516-y