Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
NeuroKit2 is a comprehensive Python toolkit for processing and analyzing physiological signals (biosignals). Use this skill to process cardiovascular, neural, autonomic, respiratory, and muscular signals for psychophysiology research, clinical applications, and human-computer interaction studies.
Apply this skill when working with:
Process electrocardiogram and photoplethysmography signals for cardiovascular analysis. See references/ecg_cardiac.md for detailed workflows.
Primary workflows:
Key functions:
pythonimport 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
Compute comprehensive HRV metrics from cardiac signals. See references/hrv.md for all indices and domain-specific analysis.
Supported domains:
Key functions:
python# 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)
Analyze electroencephalography signals for frequency power, complexity, and microstate patterns. See references/eeg.md for detailed workflows and MNE integration.
Primary capabilities:
Key functions:
python# 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)
Process skin conductance signals for autonomic nervous system assessment. See references/eda.md for detailed workflows.
Primary workflows:
Key functions:
python# 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)
Analyze breathing patterns and respiratory variability. See references/rsp.md for detailed workflows.
Primary capabilities:
Key functions:
python# 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)
Process muscle activity signals for activation detection and amplitude analysis. See references/emg.md for workflows.
Key functions:
python# 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')
Analyze eye movement and blink patterns. See references/eog.md for workflows.
Key functions:
python# Complete EOG processing signals, info = nk.eog_process(eog_signal, sampling_rate=500) # Extract blink features features = nk.eog_features(signals, sampling_rate=500)
Apply filtering, decomposition, and transformation operations to any signal. See references/signal_processing.md for comprehensive utilities.
Key operations:
Key functions:
python# 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)
Compute nonlinear dynamics, fractal dimensions, and information-theoretic measures. See references/complexity.md for all available metrics.
Available measures:
Key functions:
python# 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)
Create epochs around stimulus events and analyze physiological responses. See references/epochs_events.md for workflows.
Primary capabilities:
Key functions:
python# 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)
Process multiple physiological signals simultaneously with unified output. See references/bio_module.md for integration workflows.
Key functions:
python# 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 automatically selects between two analysis modes based on data duration:
Event-related analysis (< 10 seconds):
Interval-related analysis (≥ 10 seconds):
Most *_analyze() functions automatically choose the appropriate mode.
bashuv pip install neurokit2
For development version:
bashuv pip install https://github.com/neuropsychology/NeuroKit/zipball/dev
pythonimport 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)
python# 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)
python# 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)
This skill includes comprehensive reference documentation organized by signal type and analysis method:
Load specific reference files as needed using the Read tool to access detailed function documentation and parameters.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.