alterlab-neurokit2 について
alterlab-neurokit2は、生理信号を処理・分析するPythonツールキットNeuroKit2を使うためのスキルです。心理生理学、臨床応用、ヒューマンコンピューターインタラクションの生体信号研究に対応します。
主な機能
- 01ECG・PPG処理とHRV分析
- 02EEG周波数帯域・マイクロステート分析
- 03EDA・呼吸・EMG・EOG分析
- 04フィルタリング・イベント分析・信号統合
- 05エントロピーと非線形複雑性の測定
活用シーン
- 01ECGまたはPPGを解析してHRV指標を算出
- 02EEGの周波数パワーとマイクロステートを調査
- 03呼吸・皮膚電気活動・筋活動信号を処理
- 04刺激イベント前後の生理反応を比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-neurokit2インストール後、Claude Code で/alterlab-neurokit2を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/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、瞬目の検出と分析
- マルチモーダル統合:複数の生理信号の同時処理
- 複雑性解析:エントロピー指標、フラクタル次元、非線形ダイナミクス
対象外
| シナリオ | 代わりに使用 |
|---|---|
| 電気皮膚活動ではなく、データセットの探索的データ分析を意味する「EDA」 | alterlab-eda |
| EHRまたは睡眠/EEGデータセット(MIMIC、SleepEDF)を使用した臨床予測モデルのトレーニング | alterlab-pyhealth |
| スパイクソーティングと細胞外電気生理学(Neuropixels、Kilosort) | alterlab-neuropixels |
| DICOM医用画像の読み取りまたは変換 | alterlab-pydicom |
| 一般的な時系列分類、クラスタリング、予測モデル | alterlab-aeon |
主な機能
1. 心臓信号処理(ECG/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 takes the *processed* ECG and RSP signal DataFrames (from ecg_process/rsp_process,
# not raw arrays or bare peaks); pass R-peak indices via rpeaks=. See references/hrv.md.
hrv_rsa = nk.hrv_rsa(ecg_signals, rsp_signals=rsp_signals,
rpeaks=info['ECG_R_Peaks'], sampling_rate=1000)
3. 脳信号分析(EEG)
周波数パワー、複雑性、マイクロステートパターンについて、脳波信号を分析します。詳細なワークフローとMNEとの統合については、references/eeg.mdを参照してください。
主な機能:
- 周波数帯域パワー分析(Delta、Theta、Alpha、Beta、Gamma)
- チャンネル品質評価と再基準化
- 発生源局在化(sLORETA、MNE)
- マイクロステートの分割と遷移ダイナミクス
- 全体電場強度と非類似度の指標
主な関数:
# Power analysis across frequency bands (returns power per channel × band).
# Select/subset channels upstream on the MNE Raw or array; eeg_power has no `channels` arg.
power = nk.eeg_power(eeg_data, sampling_rate=250)
# Microstate analysis (sampling_rate is required for the default train='gfp' path)
microstates = nk.microstates_segment(eeg_data, n_microstates=4, method='kmod',
sampling_rate=250)
static = nk.microstates_static(microstates, sampling_rate=250)
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: pass the EDA vector (raw or signals["EDA_Clean"]),
# not the processed DataFrame; the default 'posada' method needs > 64 s of signal
sympathetic = nk.eda_sympathetic(eda_signal, 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 (accepts the processed DataFrame)
rrv = nk.rsp_rrv(signals, sampling_rate=100)
# Respiratory volume per time: rsp_process already adds an "RSP_RVT" column;
# to recompute, pass the 1-D respiration vector (a DataFrame raises ValueError)
rvt = nk.rsp_rvt(rsp_signal, sampling_rate=100)
6. 筋電図(EMG)
筋活動信号を処理して、筋活動の検出と振幅分析を行います。ワークフローについては、references/emg.md を参照してください。
主な関数:
# Complete EMG processing (adds EMG_Amplitude, EMG_Activity, EMG_Onsets, EMG_Offsets)
signals, info = nk.emg_process(emg_signal, sampling_rate=1000)
# Re-run activation detection with other settings: pass the amplitude vector, not the DataFrame
activity, activation_info = nk.emg_activation(
emg_amplitude=signals["EMG_Amplitude"], sampling_rate=1000, method="threshold"
)
7. 眼電図(EOG)
眼球運動とまばたきのパターンを分析します。ワークフローについては、references/eog.md を参照してください。
主な関数:
# Complete EOG processing. Blink detection defaults to method="mne" (requires
# `uv pip install mne`); method="neurokit" avoids the MNE dependency
signals, info = nk.eog_process(eog_signal, sampling_rate=500, method="neurokit")
# Extract blink features: needs the cleaned signal and the blink peak indices
features = nk.eog_features(signals["EOG_Clean"], info["EOG_Blinks"], 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 を参照してください。
利用可能な指標:
- エントロピー:シャノン、近似、サンプル、置換、スペクトル、ファジー、マルチスケール
- フラクタル次元:カッツ、ヒグチ、ペトロシアン、セブチク、相関次元
- 非線形ダイナミクス:リアプノフ指数、レムペル・ジブ複雑性、再帰定量化
- DFA:トレンド除去変動分析、マルチフラクタルDFA
- 情報理論:フィッシャー情報量、相互情報量
主な関数:
# Multiple complexity metrics at once (note: complexity() takes no sampling_rate)
complexity_indices, info = nk.complexity(signal)
# Specific measures: entropy_*, fractal_*, and complexity_* functions return a
# (value, info) tuple, so unpack them
apen, _ = nk.entropy_approximate(signal)
dfa, _ = nk.fractal_dfa(signal)
lle, _ = nk.complexity_lyapunov(signal, delay=1, dimension=2)
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
このスキルの関数シグネチャは、neurokit2 0.2.13(2026-09 時点の最新リリース。Python >= 3.10 が必要)に対して検証済みです。再現可能な環境が必要な場合は、バージョンを固定してください。
uv pip install "neurokit2==0.2.13"。EEG ヘルパー(mne_*、ソースローカライゼーション)とデフォルトの EOG まばたき検出器には、MNE-Python も必要です:uv pip install mne。
開発版の場合:
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
AlterLab Academic Skills スイートの一部です。