Montage Concord
A modular SEEG simulation and analysis framework — documentation home
Montage Concord is a Python framework for working with stereotactic EEG (SEEG) data. It is organized as a collection of independent sub-packages that together form a complete pipeline: reading data from disk → re-referencing → computing metrics → visualizing results → fitting neural models.
Current Status
The visualization pipeline is complete (EDF reading, re-referencing, metric computation,
interactive dashboard) and the modeling pipeline has begun: the Model ABC, shared numerical
utilities, and the first neural mass model (Jansen-Rit) are implemented.
Model fitting and additional models are next.
Where to Start
If you are new, read in this order:
Overview
Architecture
How all packages fit together, dependency graph, design rules.
Overview
Data Flow
Trace a single EDF file from disk to interactive visualization.
Package
Core
Recording, MetricResult, ParameterVector, ModelOutput containers. Metric and Model ABCs.
Package
Server
FastAPI backend + interactive browser dashboard.
All Packages
| Package | Purpose | Status |
|---|---|---|
| concord-core | Containers (Recording, MetricResult, ParameterVector, ModelOutput), Metric & Model ABCs | Implemented |
| concord-io | EDF/BIDS reader, re-referencing, epoch slicing | Implemented |
| concord-metrics-utils | Windowing, filtering, analytic signal primitives | Implemented |
| concord-metrics-univariate | Line length, Hjorth parameters | Implemented |
| concord-metrics-spectral | Welch PSD, band power | Implemented |
| concord-viz | Timeseries, spectrogram, PSD, metric preparation for frontend | Implemented |
| concord-server | FastAPI server + browser-based dashboard | Implemented |
| Frontend (JS) | ES module JS: panels, Plotly rendering, 3D brain | Implemented |
| concord-demo | Standalone static demo with pre-baked SEEG data (GitHub Pages) | Implemented |
| concord-fit | Optimization engine for model fitting | Planned |
| concord-connectome | Structural connectivity, parcellation, contact mapping | Planned |
| concord-models-utils | ODE integrators, noise, sigmoid functions | Implemented |
| concord-model-jansen-rit | Jansen-Rit cortical column model (alpha rhythm) | Implemented |
| concord-model-* | Wendling, Epileptor, Robinson models | Planned |
| concord-metrics-connectivity | PLV, coherence, Granger causality, PAC… | Planned |
| concord-metrics-event | Spike detection, seizure pattern classification | Planned |
| concord-metrics-network | Graph metrics, epileptogenicity index | Planned |
| concord-metrics-nonlinear | Sample entropy, Lyapunov exponents, DFA | Planned |
Background Reading
Not familiar with some of the design patterns used? These pages explain them from first principles:
Background
REST API & HTTP
What GET and POST mean, how JSON travels over HTTP, how the browser talks to the server.
Background
FastAPI
How Python FastAPI turns function definitions into HTTP endpoints.
Background
Abstract Base Classes
How Python ABCs define contracts that implementations must satisfy.
Background
Python Entry Points
How packages register themselves for discovery without hard imports.
Background
JS ES Modules
How modern JavaScript splits code into import/export modules.
Background
Neural Mass Models
What neural mass models are, how the Jansen-Rit model works, and why we use them.
Quick-Start: Running the Server
# Activate the environment
conda activate concord
# Start the server
conda run -n concord python -m concord_server.server
# Then open http://localhost:8000 in a browser
# Or use the convenience script at the project root
python serve.py
Once loaded, use the file browser to open an EDF file, switch montage modes, apply notch filtering, and explore the multi-panel visualization dashboard.