Example: Source Localization (MNE-Python)¶
This page explains the source_localization_pipeline_mne.signalJourney.json
example file, documenting a source localization workflow using distributed source modeling with MNE-Python.
Pipeline Overview¶
This MNE-Python pipeline demonstrates brain source localization using forward/inverse modeling: - Load preprocessed evoked data from averaged epochs - Setup source space using FreeSurfer fsaverage template - Compute BEM solution for head modeling - Create forward solution (leadfield matrix) - Compute noise covariance from baseline periods - Create inverse operator for source estimation - Apply dSPM inverse solution to estimate source time courses
Pipeline Flowchart¶
flowchart TD
A[Load Evoked Data
mne.read_evokeds] --> B[Setup Source Space
mne.setup_source_space]
B --> C[Compute BEM Solution
mne.make_bem_solution]
C --> D[Create Forward Solution
mne.make_forward_solution]
D --> E[Compute Covariance
mne.compute_covariance]
E --> F[Create Inverse Operator
mne.minimum_norm.make_inverse_operator]
F --> G[Apply dSPM Solution
mne.minimum_norm.apply_inverse]
%% Input files
H["📁 sub-01_task-rest_ave.fif
Averaged evoked data"] --> A
I["📁 sub-01_task-rest_epo.fif
Epochs for covariance"] --> E
J["📁 fsaverage
Template brain anatomy"] --> B
K["📁 BEM surfaces
Head model"] --> C
%% Inline data
B --> V1["📊 Source Spacing
oct6 (4098 vertices)"]
C --> V2["📊 Conductivity
[0.3, 0.006, 0.3] S/m"]
F --> V3["📊 SNR Parameters
λ² = 1/SNR²"]
%% Final outputs
G --> L["💾 sub-01_task-rest_desc-dSPM_stc.h5
Source time courses"]
G --> M["💾 sub-01_task-rest_desc-sources_plot.png
Brain activation plot"]
%% Quality metrics
D --> Q1["📈 Forward channels: 64
Source points: 4098"]
G --> Q2["📈 Peak activation: 15.2 dSPM
Location: Left STG"]
%% 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,F,G processStep
class H,I,J,K inputFile
class L,M outputFile
class V1,V2,V3 inlineData
class Q1,Q2 qualityMetric
Key MNE-Python Features Demonstrated¶
Source Localization Functions¶
mne.read_evokeds
: Load averaged evoked responses from FIF filesmne.setup_source_space
: Create source space from FreeSurfer anatomymne.make_bem_solution
: Compute boundary element model head solutionmne.make_forward_solution
: Calculate leadfield matrixmne.minimum_norm.make_inverse_operator
: Create inverse solution operatormne.minimum_norm.apply_inverse
: Apply dSPM source estimation
Advanced Source Modeling¶
- Source space: Cortical surface-based source model with configurable resolution
- Forward modeling: Realistic head geometry using boundary element method
- Inverse methods: dSPM, sLORETA, eLORETA distributed source solutions
- Regularization: SNR-based regularization parameter selection
Example JSON Structure¶
The forward solution computation demonstrates complex dependency management:
{
"stepId": "4",
"name": "Create Forward Solution",
"description": "Compute leadfield matrix relating sources to sensors.",
"software": {
"name": "MNE-Python",
"version": "1.6.1",
"functionCall": "mne.make_forward_solution(evoked.info, trans, src, bem_sol, eeg=True, mindist=5.0)"
},
"parameters": {
"trans": "fsaverage",
"eeg": true,
"meg": false,
"mindist": 5.0,
"n_jobs": 1,
"verbose": false
},
"dependsOn": ["1", "2", "3"]
}
Inverse Solution Application¶
The dSPM application step shows advanced parameter control:
{
"stepId": "7",
"name": "Apply dSPM Solution",
"description": "Estimate source time courses using dynamic Statistical Parametric Mapping.",
"software": {
"name": "MNE-Python",
"version": "1.6.1",
"functionCall": "mne.minimum_norm.apply_inverse(evoked, inverse_operator, lambda2, method='dSPM')"
},
"parameters": {
"method": "dSPM",
"lambda2": 0.111111,
"pick_ori": "normal",
"verbose": false
},
"qualityMetrics": {
"peakActivation": 15.2,
"peakLocation": "Left STG",
"snrEstimate": 3.0
}
}
Source Localization Features¶
Anatomical Integration¶
- FreeSurfer compatibility: Seamless integration with FreeSurfer anatomy
- Template brains: Support for fsaverage and individual anatomies
- Source space options: Surface-based, volumetric, or mixed source models
- Coordinate systems: MNI, Talairach, and individual head coordinates
Forward Modeling Accuracy¶
- BEM head model: Multi-layer realistic head geometry
- Conductor specification: Brain, skull, and scalp conductivity values
- Sensor modeling: Accurate EEG and MEG sensor positions
- Quality assessment: Forward solution validation metrics
Inverse Solution Methods¶
- Minimum norm estimation: L2-regularized linear inverse solutions
- dSPM normalization: Dynamic statistical parametric mapping
- sLORETA: Standardized low resolution electromagnetic tomography
- eLORETA: Exact low resolution electromagnetic tomography
MNE-Python vs EEGLAB Comparison¶
Aspect | MNE-Python Version | EEGLAB Version |
---|---|---|
Anatomy | FreeSurfer integration | DIPFIT equivalent dipoles |
Forward Model | BEM head model | 3-sphere or BEM |
Inverse Method | dSPM, sLORETA, eLORETA | LORETA, sLORETA |
Source Space | Cortical surface-based | Volumetric grid |
Visualization | 3D brain rendering | 2D slice display |
File Format | HDF5, STC files | .mat files |
Usage Notes¶
This example demonstrates: - Comprehensive source localization with realistic head modeling - Multi-step dependency management for complex workflows - External resource integration (FreeSurfer, BEM surfaces) - Quality metrics for source localization validation - Advanced parameter documentation for reproducible inverse solutions
The pipeline showcases MNE-Python's sophisticated source localization capabilities while maintaining complete parameter transparency for reproducible brain source estimation. The integration of anatomical templates and realistic head modeling provides state-of-the-art source localization accuracy.