Open-Source Electrophysiology Visualization and Analysis Suite
Full documentation: synaptipy.readthedocs.io
Synaptipy is a cross-platform, open-source application for the visualization and analysis of electrophysiological recordings. It is designed around a modular, extensible architecture that supports interactive single-recording analysis, large-scale batch processing, and integration of custom user-written analysis routines via a plugin interface. The primary focus is whole-cell patch-clamp and intracellular recordings; however, any electrophysiology signal whose file format is supported by the Neo I/O library can be loaded, visualised, and processed — including extracellular, sharp-electrode, and multi-channel recordings. File-format support is therefore not a limitation of Synaptipy itself but of the underlying Neo reader for a given format.
Synaptipy provides 14 built-in analysis modules, each available interactively in the GUI and as a composable unit in the batch processing pipeline.
Intrinsic Membrane Properties
- Resting Membrane Potential (RMP) — statistical baseline extraction from a user-defined window
- Input Resistance (Rin) — delta-V / delta-I from voltage response to a hyperpolarizing current step
- Membrane Time Constant (Tau) — single-exponential fit to the voltage decay after a current step
- I-V Curve — current–voltage relationship and aggregate Rin from multi-trial step protocols
- Cell Capacitance (Cm) — derived from Tau/Rin in current-clamp, or capacitive-transient integration in voltage-clamp
Action Potential Analysis
- Spike Detection — threshold- and dV/dt-based AP detection with refractory period filtering; extracts amplitude, half-width, rise time, decay time, threshold voltage, and after-hyperpolarisation (AHP)
- Burst Analysis — max-ISI burst detection; reports burst count, mean spikes per burst, burst duration, and intra-burst frequency
- Spike Train Dynamics — inter-spike interval (ISI) statistics, coefficient of variation (CV), CV2, and local variation (LV)
- Excitability / F-I Curve (multi-trial) — rheobase, F-I slope, maximum firing frequency, and spike-frequency adaptation ratio
- Phase Plane Analysis — dV/dt versus voltage plot for AP initiation dynamics and threshold characterisation
Synaptic Event Detection
- Adaptive Threshold — prominence-based detection that accommodates shifting baselines and overlapping events
- Template Matching — parametric deconvolution using a user-defined double-exponential template for miniature event detection
- Baseline-Peak — direct baseline-to-peak amplitude detection for evoked or spontaneous events
Optogenetics
- Optogenetic Synchronisation — extracts TTL/digital stimulus pulses from a secondary channel and correlates them with spikes to compute optical latency, response probability, and jitter
Synaptipy is built around a central AnalysisRegistry that maps named analysis functions to the GUI and batch engine via a decorator. Any Python script placed in ~/.synaptipy/plugins/ that uses the @AnalysisRegistry.register decorator is automatically discovered at startup and made available in both the interactive analyser and the batch processing pipeline — no modification to the core package is required.
A fully documented template (src/Synaptipy/templates/analysis_template.py) defines the required function signature and return types, enabling researchers to integrate custom algorithms without any knowledge of the GUI internals.
File I/O is handled through the Neo library, giving Synaptipy broad compatibility across acquisition systems:
| Format | Extension(s) | Acquisition System |
|---|---|---|
| Axon Binary Format | .abf |
Axon / Molecular Devices |
| WinWCP | .wcp |
Strathclyde Electrophysiology Software |
| CED / Spike2 | .smr, .smrx |
Cambridge Electronic Design |
| Igor Pro | .ibw, .pxp |
WaveMetrics |
| Intan | .rhd, .rhs |
Intan Technologies |
| Neurodata Without Borders | .nwb |
NWB standard |
| BrainVision | .vhdr |
Brain Products |
| European Data Format | .edf |
EDF/EDF+ |
| Plexon | .plx, .pl2 |
Plexon |
| Open Ephys | .continuous, .oebin |
Open Ephys |
| Tucker Davis Technologies | .tev, .tbk |
TDT |
| Neuralynx | .ncs, .nse, .nev |
Neuralynx |
| NeuroExplorer | .nex |
NeuroExplorer |
| MATLAB | .mat |
— |
| ASCII / CSV | .txt, .csv, .tsv |
— |
Any format supported by Neo but not listed above can be made available by adding a corresponding entry to the IODict in the infrastructure layer.
- OpenGL-accelerated trace rendering capable of displaying multi-million sample recordings at interactive frame rates
- Tree-based multi-file explorer with synchronised analysis view
- Interactive zooming, panning, and per-channel scaling
- Batch result overlays and popup plots (I-V curves, F-I curves, phase planes) generated directly within the GUI
- Composable pipeline architecture: chain any registered analysis steps in sequence
- Background execution in worker threads — the GUI remains responsive during batch runs
- Automatic metadata extraction (sampling rate, gain, recording datetime)
- Results exported to CSV, compatible with Python/Pandas, R, and MATLAB
- NWB export for standards-compliant data archival
Synaptipy follows a strict separation-of-concerns design:
- Core layer — pure Python analysis logic, fully decoupled from the GUI and independently testable
- Application layer — PySide6 (Qt6) user interface and plugin manager
- Infrastructure layer — file I/O via Neo and PyNWB; NWB export
| Component | Technology | Minimum Version |
|---|---|---|
| Language | Python | 3.10 |
| GUI Framework | PySide6 | 6.7.0 |
| Plotting Engine | PyQtGraph | 0.13.0 |
| Electrophysiology I/O | Neo | 0.14.0 |
| NWB Export | PyNWB | 3.1.0 |
| Numerical Computation | SciPy / NumPy | 1.13.0 / 2.0.0 |
Synaptipy is compatible with Windows, macOS, and Linux. The implementation relies on conda for environment management to handle system-level dependencies efficiently.
-
Clone the Repository
git clone https://github.com/anzalks/synaptipy.git cd synaptipy -
Create the Environment This step installs Python and all required system dependencies defined in
environment.yml.conda env create -f environment.yml
-
Activate the Environment
conda activate synaptipy
-
Install the Application Install the package in editable mode to allow for local development.
pip install -e ".[dev]"
To verify the installation, execute the comprehensive test suite:
python -m pytestLaunch the main application window:
synaptipyAlternatively, run the module directly:
python -m Synaptipy.applicationThe core analysis engine can be utilized in scripts for headless processing:
from Synaptipy.core.analysis.batch_engine import BatchAnalysisEngine
from pathlib import Path
# Initialize the Analysis Engine
engine = BatchAnalysisEngine()
# Define an Analysis Pipeline
pipeline = [
{
'analysis': 'spike_detection',
'scope': 'all_trials',
'params': {'threshold': -20.0, 'refractory_ms': 2.0}
}
]
# Execute on Data Files
file_path = Path("data/example_recording.abf")
results = engine.run_batch([file_path], pipeline)
print(results)Full API reference, tutorials, and the developer guide are hosted on ReadTheDocs:
Collaborations and contributions are welcome. Whether you are adding a new analysis module, supporting an additional file format, or improving the documentation, please refer to the developer guide for project structure, coding standards, and the contribution workflow. The plugin interface provides the lowest-friction path to integrating custom analysis routines.
Synaptipy builds on the following open-source libraries. If you use Synaptipy in published research, please consider citing the relevant upstream packages alongside the Synaptipy repository.
| Library | Role in Synaptipy | Citation |
|---|---|---|
| Neo | Electrophysiology file I/O (all supported formats) | Garcia S et al. (2014). Neo: an object model for handling electrophysiology data in multiple formats. Front. Neuroinformatics 8:10. doi:10.3389/fninf.2014.00010 |
| PyNWB | NWB data export | Rubel O et al. (2022). The Neurodata Without Borders ecosystem for neurophysiological data science. eLife 11:e78362. doi:10.7554/eLife.78362 |
| PySide6 | Qt6 GUI framework | Qt for Python, The Qt Company. https://doc.qt.io/qtforpython/ |
| PyQtGraph | OpenGL-accelerated signal plotting | Campagnola L et al. PyQtGraph. https://www.pyqtgraph.org |
| SciPy | Signal processing and numerical fitting | Virtanen P et al. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods 17:261–272. doi:10.1038/s41592-019-0686-2 |
| NumPy | Array computation | Harris CR et al. (2020). Array programming with NumPy. Nature 585:357–362. doi:10.1038/s41586-020-2649-2 |
Synaptipy is free and open-source software licensed under the GNU Affero General Public License v3 (AGPLv3). See the LICENSE file for full terms.