Example: Time-Frequency Analysis (MNE-Python)¶
This page explains the time_frequency_analysis_pipeline_mne.signalJourney.json
example file, which documents a typical time-frequency analysis using MNE-Python.
Pipeline Overview¶
This MNE-Python pipeline demonstrates time-frequency analysis using Morlet wavelets:
- Load cleaned data from ICA decomposition pipeline
- Extract event-related epochs
- Compute time-frequency decomposition using mne.time_frequency.tfr_morlet
- Apply baseline correction and save results
- Generate visualization plots
Pipeline Flowchart¶
flowchart TD
A[Load Cleaned Data
mne.io.read_raw_fif] --> B[Extract Epochs
mne.Epochs]
B --> C[Compute TFR
mne.time_frequency.tfr_morlet]
C --> D[Apply Baseline Correction
tfr.apply_baseline]
D --> E[Save TFR Results
tfr.save]
%% Input file
F["📁 sub-01_task-rest_desc-cleaned_eeg.fif
From: ICA Decomposition Pipeline"] --> A
%% Inline data
C --> V2["📊 Frequencies
[4, 8, 13, 30] Hz"]
%% Final outputs
E --> G["💾 sub-01_task-rest_desc-tfr_eeg.h5
Time-frequency results"]
D --> H["💾 sub-01_task-rest_desc-tfr_plot.png
Visualization"]
%% Quality metrics
C --> Q1["📈 Frequency range: 4-30 Hz
Cycles: 2-15"]
D --> Q2["📈 Baseline: [-0.2, 0] s
Mode: percent"]
%% Styling
classDef processStep fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef inputFile fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef outputFile fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
classDef inlineData fill:#f3e5f5,stroke:#4a148c,stroke-width:1px
classDef qualityMetric fill:#f9f9f9,stroke:#666,stroke-width:1px
class A,B,C,D,E processStep
class F inputFile
class G,H outputFile
class V2 inlineData
class Q1,Q2 qualityMetric
Key MNE-Python Features Demonstrated¶
Time-Frequency Functions¶
mne.Epochs
: Event-related epoch extractionmne.time_frequency.tfr_morlet
: Morlet wavelet decompositiontfr.apply_baseline
: Baseline correction for power changestfr.save
: Save time-frequency results in HDF5 format
Advanced Parameters¶
- Wavelet parameters: Adaptive cycles for different frequencies
- Baseline correction: Percent change from pre-stimulus period
- Frequency selection: Logarithmically spaced frequencies
- Output formats: Both HDF5 data and PNG visualization
Example JSON Structure¶
The time-frequency computation step demonstrates complex parameter documentation:
{
"stepId": "3",
"name": "Compute Time-Frequency Decomposition",
"description": "Calculate time-frequency representation using Morlet wavelets.",
"software": {
"name": "MNE-Python",
"version": "1.6.1",
"functionCall": "mne.time_frequency.tfr_morlet(epochs, freqs=freqs, n_cycles=n_cycles, return_itc=False)"
},
"parameters": {
"freqs": [4, 6, 8, 10, 13, 17, 22, 30],
"n_cycles": [2, 3, 4, 5, 6.5, 8.5, 11, 15],
"use_fft": true,
"return_itc": false,
"decim": 1,
"n_jobs": 1
}
}
Multi-Output Documentation¶
Steps can produce multiple related outputs:
"outputTargets": [
{
"targetType": "file",
"location": "./derivatives/signaljourney/sub-01/eeg/sub-01_task-rest_desc-tfr_eeg.h5",
"format": "HDF5",
"description": "Time-frequency power data."
},
{
"targetType": "file",
"location": "./derivatives/signaljourney/sub-01/eeg/sub-01_task-rest_desc-tfr_plot.png",
"format": "PNG",
"description": "Time-frequency plot visualization."
}
]
Time-Frequency Analysis Features¶
Wavelet Parameter Selection¶
- Frequency-dependent cycles: Lower frequencies use fewer cycles for better temporal resolution
- Higher frequencies: More cycles for better frequency resolution
- Adaptive approach: Balances time-frequency trade-off across spectrum
Baseline Correction Methods¶
- Percent change:
(power - baseline) / baseline * 100
- Ratio:
power / baseline
- Decibel:
10 * log10(power / baseline)
- Z-score:
(power - baseline_mean) / baseline_std
MNE-Python vs EEGLAB Comparison¶
Aspect | MNE-Python Version | EEGLAB Version |
---|---|---|
Method | Morlet wavelets | Morlet wavelets (timef) |
Baseline | apply_baseline() |
Built into timef |
Output | HDF5, NPZ formats | MATLAB .mat files |
Visualization | matplotlib plots | EEGLAB plots |
Cycles | Manual specification | Automatic or manual |
Usage Notes¶
This example demonstrates: - Time-frequency decomposition with optimal parameters - Baseline correction for interpretable results - Multi-format outputs for analysis and visualization - Pipeline integration building on previous processing steps - Quality documentation for reproducible analysis
The pipeline showcases MNE-Python's comprehensive time-frequency analysis capabilities while maintaining full parameter transparency for reproducibility.