Synaptipy User Guide
This guide provides detailed instructions for installing, configuring, and using Synaptipy for electrophysiology data visualization and analysis.
Table of Contents
Installation
Requirements
Python 3.11 (recommended); Python 3.10 and 3.12 are also supported
Dependencies are automatically installed during package installation:
PySide6 - Qt6 bindings for Python (GUI framework)
PyQtGraph - OpenGL-accelerated plotting library
Neo - electrophysiology file I/O (Garcia et al., 2014, Front. Neuroinformatics doi:10.3389/fninf.2014.00010)
PyNWB - NWB data export (Rubel et al., 2022, eLife doi:10.7554/eLife.78362)
Standard Installation
Synaptipy is available both as a standalone application and as a Python package.
Standalone Application (Recommended)
You can download pre-built installers for macOS (.dmg), Windows (.exe), and Linux (.AppImage) directly from the GitHub Releases page.
macOS: Download the
.dmg, open it, and drag Synaptipy to your Applications folder.Windows: Download and run the
_Setup.exeinstaller.Linux: Download the
.AppImagefile, make it executable (chmod +x Synaptipy-*.AppImage), and run it directly.
Python Package Installation
Install from source using the conda environment:
git clone https://github.com/anzalks/synaptipy.git
cd synaptipy
conda env create -f environment.yml
conda activate synaptipy
pip install .
Developer Installation
For contributing to Synaptipy, install in editable mode with development dependencies:
git clone https://github.com/anzalks/synaptipy.git
cd synaptipy
conda env create -f environment.yml
conda activate synaptipy
pip install -e ".[dev]"
Getting Started
Running the Application
After installation, run the application using one of these methods:
Using the installed entry point:
synaptipy
Using the Python module:
python -m Synaptipy
User Interface Overview
The Synaptipy interface consists of three main tabs:
Explorer Tab: View and navigate through data files, with interactive plotting
Analyser Tab: Perform various analyses on the loaded data
Exporter Tab: Export data and results to different formats
Quick Start with Demo Data
If you have no recordings to hand, Synaptipy can download a set of curated example files automatically.
Open Help > Download Demo Data… A banner appears below the menu bar.
Click Download Demo Data. Synaptipy downloads five example recordings from the public repository to
~/Documents/SynaptiPy_Demo/:File
Format
Description
2023_04_11_0018.abfABF v2
Whole-cell current-clamp, step protocol
2023_04_11_0019.abfABF v2
Whole-cell current-clamp, ramp protocol
2023_04_11_0021.abfABF v2
Voltage-clamp, IV curve
2023_04_11_0022.abfABF v2
Optogenetic stimulation protocol
240326_003.wcpWinWCP
WinWCP current-clamp recording
Once all files are downloaded the banner closes automatically and the first ABF file opens in the Explorer Tab.
The Help > Download Demo Data… menu item is disabled for the rest of the session (and on future launches if the files are already present).
Note
The download requires an internet connection. Files already present on disk are never re-downloaded. If a download is interrupted, partially written files are cleaned up so the next attempt starts fresh.
Loading Data
Supported File Formats
File I/O is handled through the Neo library (Garcia et al., 2014, Front. Neuroinformatics, doi:10.3389/fninf.2014.00010). Synaptipy can load any recording format for which Neo provides a reader - this includes whole-cell patch-clamp and intracellular recordings as well as extracellular, sharp-electrode, and multi-channel data, provided the file format is supported. Confirmed formats include:
Format |
Extension(s) |
Acquisition System |
|---|---|---|
Axon Binary Format |
|
Axon / Molecular Devices |
WinWCP |
|
Strathclyde Electrophysiology Software |
CED / Spike2 |
|
Cambridge Electronic Design |
Igor Pro |
|
WaveMetrics |
Intan |
|
Intan Technologies |
Neurodata Without Borders |
|
NWB standard |
BrainVision |
|
Brain Products |
European Data Format |
|
EDF/EDF+ |
Plexon |
|
Plexon |
Open Ephys |
|
Open Ephys |
Tucker Davis Technologies |
|
TDT |
Neuralynx |
|
Neuralynx |
NeuroExplorer |
|
NeuroExplorer |
MATLAB |
|
- |
ASCII / CSV |
|
- |
For the full list of Neo-supported formats, see the Neo I/O documentation.
Opening Files
Click “Open File…” in the menu or use the shortcut (Ctrl+O or Cmd+O)
Navigate to your data file and select it
The file will open in the Explorer tab
If other files with the same extension exist in the folder, they will be available for navigation with Prev / Next File - this applies whether you opened one file or many, and whether you used the menu, drag-and-drop, or Help > Download Demo Data
Using the Explorer Tab
Plot Options
Plot Mode:
“Overlay All + Avg”: Shows all trials with the average highlighted
“Cycle Single Trial”: Shows one trial at a time with navigation controls
Cross-File Trial Averaging: While in “Cycle Single Trial” mode, you can manually build a grand average from any combination of files and trials across the entire session:
Use the “Add Current Trial to Avg Set” button to add the currently displayed trial - including any active preprocessing transforms - to the global selection set.
Navigate freely between files (even files of different durations or sampling protocols) and continue adding trials. The selection accumulates persistently until cleared.
Enable “Plot Selected Avg” to overlay the grand average on the current recording view.
Shape-mismatch handling: Because recordings from different files may have different durations, the accumulator uses
sum[:min_len] += trial[:min_len]wheremin_len = min(len(accumulator), len(trial)). This silently truncates every trial to the shortest array in the selection before summing, so recordings with different lengths never cause a NumPy broadcast error. The resulting average is plotted against the time vector of the first trial added to the set.Channel Selection: Choose which channel to view from the dropdown
Channel Visibility: Use the per-channel show/hide checkboxes to hide channels you are not interested in. When a channel is hidden its plot row collapses entirely - no blank white space remains in the canvas. Re-checking the box restores the row immediately.
Downsampling: Enable/disable automatic downsampling for large datasets
Using the Analyser Tab
The Analyser tab provides 17 built-in analysis routines organised into five module tabs. Each sub-tab is auto-generated from registry metadata and provides parameter widgets, an interactive plot, a results table, and plot overlays.
The five Analyser pillars are:
Pillar |
Registry name |
What it covers |
|---|---|---|
Intrinsic Properties |
|
RMP, Rin, Tau, Sag Ratio, I-V Curve, Capacitance |
Spike Analysis |
|
Spike detection, Phase-plane analysis |
Excitability |
|
F-I curve, Burst analysis, Spike Train Dynamics |
Synaptic Events |
|
Event detection (threshold, template match, baseline-to-peak) |
Evoked Responses |
|
Evoked Sync, Paired-Pulse Ratio, Stimulus Train (STP) |
All analysis sub-tabs share the following interface behaviours:
Free-form numeric input - Number fields accept freely typed values; intermediate states (empty field, a lone minus sign, etc.) are tolerated while typing. Stepping uses adaptive decimal increments.
Interactive vs Manual mode - Sub-tabs that have draggable plot regions (e.g. Rin, Tau, Capacitance) expose a mode selector. In Interactive mode the time-window spinboxes are read-only and driven by the plot regions. Switching to Manual mode unlocks all spinboxes for direct entry.
Conditional parameter visibility - Parameters irrelevant to the current clamp mode or analysis type are hidden automatically.
Input Resistance/Conductance Analysis
Select data for analysis from the Explorer tab
Switch to the Analyser tab and select the Input Resistance sub-tab
Choose analysis mode:
Interactive Mode: Drag the blue (baseline) and red (response) regions on the plot - the time-window spinboxes update in real time and become read-only
Manual Mode: Unlock the spinboxes and type time windows directly
Enable Auto Detect Pulse to let the analysis locate step edges automatically from the stimulus derivative. If auto-detection produces invalid windows (e.g. due to action potentials in the trace), the analysis falls back to the current spinbox values and updates the spinboxes to reflect the windows actually used
Results will be displayed showing:
Input resistance in MΩ
Conductance in μS
Voltage and current changes
Click “Save Result” to store the analysis for later export
Baseline/RMP Analysis
Select a channel for analysis
Specify the time window for baseline calculation
Choose analysis method:
Mean: Calculates the average over the specified window
Median: Uses the median (more robust to outliers)
Results will display the baseline value and variability metrics
Save results as needed
Evoked Responses
The Evoked Responses tab contains three analysis sub-tabs for stimulus-evoked measurements.
Evoked Sync
Load a recording that contains a TTL/digital stimulus channel alongside the signal channel
Switch to the Evoked Sync sub-tab in the Analyser
Select the TTL channel from the channel selector and set the TTL Threshold voltage used to binarise the stimulus signal
Choose the Event Detection Type:
Spikes - threshold-crossing AP detection; set the Spike Threshold (mV)
Events (Threshold) - prominence-based threshold event detection; set Event Threshold, Event Direction, and Refractory Period
Events (Template) - matched-filter cross-correlation using a bi-exponential kernel; set Rise Tau, Decay Tau, Template Threshold (SD), and Template Direction. A bank of three kernels scaled at 1x, 2x, and 3x the user-specified decay constant is applied automatically to tolerate dendritic filtering; events are detected on the pointwise maximum of the three z-scored filtered traces. Only the parameters relevant to the selected detection mode are shown.
Set the Response Window (ms) to define how far after each TTL onset to search for an event
Results include optical latency, response probability, jitter, stimulus count, and event count
Click “Save Result” to store for later export
Paired-Pulse Ratio
Load a two-pulse paired-stimulus recording
Switch to the Paired-Pulse Ratio sub-tab
Configure the two stimulus times (Pulse 1 Time, Pulse 2 Time, in seconds)
Set the Amplitude Measurement Window (ms) used to measure R1 and R2
Enable Subtract R1 Tail to fit a mono- or bi-exponential decay to the R1 tail and subtract the residual baseline at the time of the second stimulus; this prevents contamination of R2 by the decaying R1 current
Results include R1 amplitude, R2 amplitude, PPR (R2/R1), and, when tail subtraction is enabled, the corrected R2 and corrected PPR
Click “Save Result” to store for later export
Stimulus Train (STP)
Load a multi-pulse train recording
Switch to the Stimulus Train (STP) sub-tab
Set Number of Pulses and the inter-stimulus interval (ISI (ms))
Set the First Pulse Time (s) and the Amplitude Window (ms) used to measure each response amplitude
Results include per-pulse amplitudes, amplitudes normalised to R1, and an STP classification (facilitation or depression) based on whether the mean normalised amplitude over pulses 2-N is above or below 1.0
Click “Save Result” to store for later export
Sag Ratio (Ih) Analysis
Load a recording containing a hyperpolarising current-step protocol
Switch to the Sag Ratio (Ih) sub-tab in the Analyser
Configure the measurement windows:
Baseline Start / End - resting membrane potential window (before the step)
Peak Window Start / End - early part of the step where the sag minimum occurs
Steady-State Start / End - late part of the step where voltage has plateaued
Adjust Peak Smoothing (ms) to control Savitzky-Golay smoothing of the peak detection (default 5 ms). Increase for noisy traces
Set Rebound Window (ms) to control how far after stimulus offset the rebound depolarisation is measured (default 100 ms)
Results include:
sag_ratio - ratio form (>1 indicates I_h sag, 1 = no sag)
sag_percentage - percentage of sag deflection
v_peak, v_ss, v_baseline - the three voltage levels
rebound_depolarization - post-stimulus rebound amplitude
The plot shows horizontal lines at V_baseline (blue), V_peak (magenta), and V_ss (red)
Additional Analysis Modules
The following analysis modules are also available in the Analyser tab. All parameters are auto-generated from registry metadata and include tooltips, valid ranges, and conditional visibility based on clamp mode.
Intrinsic Properties tab:
Tau (Time Constant) - Single or bi-exponential fit to the voltage decay after a current step. Returns tau in ms with an overlay of the fitted curve. A cyan trace overlay automatically highlights the 5 ms baseline window immediately before the step onset for at-a-glance verification.
I-V Curve - Current-voltage relationship across multi-trial step protocols. Fits aggregate Rin from the slope and opens a popup I-V scatter plot.
Capacitance - Membrane capacitance from Tau/Rin (current-clamp) or capacitive-transient integration (voltage-clamp). In current-clamp mode the series resistance (\(R_s\)) is automatically estimated from the fast voltage artifact at step onset (0.1 ms window) and used in the corrected formula \(C_m = \tau / (R_{\text{in}} - R_s)\).
Spike Analysis tab:
Phase Plane - dV/dt vs. voltage trajectory for AP initiation dynamics. Detects threshold via kink-slope criterion; reports mean threshold voltage and maximum dV/dt. Opens a popup phase-plane plot.
Excitability tab:
Excitability (F-I Curve) - Multi-trial rheobase, F-I slope, maximum firing frequency, and spike-frequency adaptation ratio. Opens a popup F-I scatter plot. Requires multi-trial recordings.
Burst Analysis - Max-ISI burst detection; reports burst count, mean spikes per burst, mean burst duration, and intra-burst frequency.
Spike Train Dynamics - ISI statistics: mean ISI, coefficient of variation (CV), local variation (LV), and CV2. Opens a popup ISI plot.
Synaptic Events tab:
Event Detection (Template Match) - Matched-filter cross-correlation using a bi-exponential kernel for miniature event detection. A fixed bank of three kernels at 1x, 2x, and 3x the user-specified decay constant is convolved with the trace; events are detected on the pointwise maximum of the three z-scored outputs, providing automatic tolerance for dendritic cable filtering. Configurable parameters: rise tau, decay tau, threshold in SD, and direction.
Event Detection (Baseline Peak) - Direct baseline-to-peak amplitude detection with kinetics estimation for evoked or spontaneous events.
Visual Validation Overlays
Several analysis sub-tabs draw semi-transparent overlays directly on top of the raw trace to assist with visual validation of the analysis windows and fitted curves. These overlays are rendered entirely in pyqtgraph and do not affect the underlying data.
Overlay type |
Where it appears |
Default colour |
|---|---|---|
Trace overlay (cyan) |
Baseline region highlighted before the stimulus |
Cyan (#00cfff) |
Event fit overlay (amber) |
Bi-exponential or mono-exponential decay fits on the P1 tail in PPR |
Amber (#ff9900) |
Customising overlay appearance:
Open Edit > Plot Preferences (or the settings toolbar button).
Switch to the Trace Overlay tab to adjust the highlight colour, line width, and opacity with a slider.
Switch to the Event Fit Overlay tab to adjust the fitted-curve colour, width, and opacity.
All overlay settings are persisted via QSettings and restored across sessions.
Using the Exporter Tab
Exporting to NWB
Load a recording in the Explorer tab
Navigate to the Exporter tab and select the “NWB Export” sub-tab
Specify the output file location
Fill in required metadata:
Session description
Experimenter information
Lab/institution details
Click “Export to NWB” and wait for the export to complete
Note
The NWB exporter writes:
Voltage/current traces as
CurrentClampSeries/VoltageClampSerieswith SI unit conversionElectrode metadata and session information
Stimulus waveforms via a 3-step fallback: (1) raw digitized command waveform from the acquisition file; (2) synthetic step waveform reconstructed from ABF epoch metadata (description notes “Synthetic stimulus array reconstructed from protocol metadata.”); (3)
stimulus=Nonewith a warning appended to the response trace description when no waveform is availableIntracellularRecordingsTable linking each response to its electrode and stimulus series
SimultaneousRecordingsTable and SequentialRecordingsTable for NWB 2.x icephys sweep grouping
ProcessingModule containing discrete event arrays (spike times, synaptic event times) produced by the batch engine, stored as HDMF
DynamicTableobjects
See NWB Export Mapping for full container mapping details.
Exporting Analysis Results
Navigate to the “Analysis Results” sub-tab in the Exporter tab
Click “Refresh Results” to see all saved analysis results
Select which results to export
Specify the CSV output file location.
Click “Export Selected” to create the output.
Note: If your exported results contain multiple different types of analysis (e.g. some RMP results and some Spike Detection results), Synaptipy will automatically generate a ZIP Archive containing separate, perfectly cleanly formatted CSV files for each unique analysis type, fully supporting custom plugin columns!
Advanced Options
Reproducibility: How GUI Adjustments Serialize to the Batch Engine
A key design goal of Synaptipy is that any parameter tweak made interactively
in the GUI produces an identical result when replayed by the headless
BatchAnalysisEngine. This section explains the serialization pathway.
Parameter capture
Every widget in an analysis tab (spin-boxes, check-boxes, combo-boxes,
draggable region handles) corresponds to one entry in the tab’s
ui_params list, which is declared alongside the
@AnalysisRegistry.register(...) decorator for that analysis function. The
parameter name, type, and current value are stored together.
When the user clicks Run Analysis, the tab calls
_gather_analysis_parameters(), which iterates over every ui_params entry
and reads the current widget value. The result is a plain Python dictionary:
# Example parameter dict for the Tau analysis tab
params = {
"stim_start_time": 0.200, # s (from a QDoubleSpinBox)
"fit_duration": 0.300, # s
"model": "mono", # (from a QComboBox)
"artifact_blanking_ms": 0.5,
}
Interactive region handles
Draggable baseline or fit windows rendered as pyqtgraph.LinearRegionItem
objects are two-way linked to the corresponding spin-box pair via Qt signals.
Dragging the region emits sigRegionChangeFinished, which updates the
spin-box values. Conversely, typing in a spin-box moves the region.
At the moment of analysis, the spin-box values - not the graphical object
positions - are read into the parameter dictionary. The graphical object is
therefore only a visual convenience; the canonical parameter value is always
the spin-box number.
SessionManager serialization
SessionManager (a singleton) stores:
# Simplified SessionManager state
{
"active_analysis": "tau_analysis",
"preprocessing_settings": { "lowpass_hz": 2000 },
"analysis_params": {
"tau_analysis": {
"stim_start_time": 0.200,
"fit_duration": 0.300,
"model": "mono",
},
...
}
}
These dictionaries are serialized to JSON when the user saves a session file (File - Save Session). Loading a session file restores them, so every tab shows the same parameter values as when the session was saved.
Batch engine replay
The BatchAnalysisEngine accepts a list of file paths plus a parameter
dictionary in exactly the same format produced by _gather_analysis_parameters():
from Synaptipy.core.analysis.batch_engine import BatchAnalysisEngine
import Synaptipy.core.analysis # populates the registry
engine = BatchAnalysisEngine()
pipeline = [
{
"analysis": "tau_analysis",
"scope": "all_trials",
"params": {
"stim_start_time": 0.200,
"fit_duration": 0.300,
"model": "mono",
"artifact_blanking_ms": 0.5,
},
}
]
results = engine.run_batch(
files=["cell_01.abf", "cell_02.abf"],
pipeline_config=pipeline,
)
Because both paths invoke the same registered wrapper function with the same parameter dictionary, the batch result is mathematically identical to the GUI result - provided the same preprocessing pipeline is applied.
Preprocessing pipeline
Preprocessing settings (filters, baseline subtraction) are stored in
SessionManager().preprocessing_settings as a nested dictionary and can be
passed to the engine via the preprocessing_settings argument of
BatchAnalysisEngine.run(). The engine applies the identical
ProcessingPipeline that the GUI uses, ensuring the batch trace matches the
trace the user visually validated.
Preferences
Open Edit > Preferences (or Synaptipy > Preferences on macOS) to access the application settings:
Setting |
Description |
|---|---|
Scroll Behavior |
Choose Natural, Inverted, or System scroll direction for plots. |
Appearance |
Switch between Light, Dark, or System color theme. |
Enable Custom Plugins |
When checked, Synaptipy loads Python plugins from |
Checking for Updates
Synaptipy performs a silent version check in the background each time it starts. If a newer release is found on GitHub Releases a non-intrusive yellow banner appears below the menu bar showing the new version number and a link to the release notes. The banner can be dismissed with the Dismiss button.
You can also trigger a manual check at any time via Help > Check for Updates…. The status bar reports the outcome:
“Checking for updates…” - check in progress.
“You are on the latest version.” - no newer release found.
Yellow banner - a newer version is available (click the link to open the release page in your browser).
The check is a single lightweight request to the GitHub Releases API
(api.github.com). If your machine is offline or behind a firewall the
check fails silently - no error message is shown and no data is sent.
Enable Custom Plugins - Hot-Reload Mechanism
Toggling “Enable Custom Plugins” does not require an application restart. When the checkbox state changes and the dialog is accepted, Synaptipy:
Calls
PluginManager.reload_plugins(), which first callsAnalysisRegistry.unregister_plugins()to purge every plugin-sourced entry (those flaggedsource="plugin") from the registry while leaving all built-in analyses intact.If the setting is now enabled, re-executes every
.pyfile discovered inexamples/plugins/(bundled examples) then~/.synaptipy/plugins/(user additions). Each file’s@AnalysisRegistry.register(...)decorator re-runs and re-populates the registry.Calls
AnalyserTab.rebuild_analysis_tabs()to destroy the existing sub-tab widgets and regenerate them from the updated registry - all within the running process.
The net effect is that plugin tabs appear or disappear immediately without reloading the application. A syntax error or import failure in a single plugin is caught and logged; remaining plugins still load normally.
Tip: If you install a new plugin file while Synaptipy is running, open Preferences and toggle “Enable Custom Plugins” off then on to force an immediate reload of all plugins from disk.
Included Example Plugins
Synaptipy ships three ready-to-run example plugins in examples/plugins/.
With Enable Custom Plugins active they load automatically:
Plugin file |
Analyser tab label |
What it measures |
|---|---|---|
|
Synaptic Charge (AUC) |
Area under a postsynaptic current trace (total charge in pC); shaded fill + peak star overlay |
|
Opto Latency Jitter |
Trial-to-trial variability in spike latency after an optogenetic TTL pulse |
|
AP Repolarization Rate |
Maximum rate of membrane-potential decline (dV/dt minimum) during an action potential |
Copy any of these files to ~/.synaptipy/plugins/ and edit your copy to create
a personalised variant without modifying the Synaptipy installation.
Command Line Arguments
Synaptipy supports several command-line arguments:
synaptipy --help # Show help
synaptipy --dev # Run in development mode with detailed logging
synaptipy --log-dir /path/to/logs # Specify custom log directory
synaptipy --verbose # Enable verbose output
synaptipy --file /path/to/data.abf # Open a file directly on launch
Logging and Debugging
Logs are stored in ~/.synaptipy/logs/ by default. In development mode, logs include detailed information for debugging.
To activate development mode:
# Using command line flag
synaptipy --dev
# Using environment variable
SYNAPTIPY_DEV_MODE=1 synaptipy
Licensing
Synaptipy is released under the GNU Affero General Public License Version 3 (AGPL-3.0). This license ensures that the software remains free and open source, even when used as a service over a network.
Key aspects of the AGPL-3.0 license:
You are free to use, modify, and distribute the software
If you modify the software, you must release the modified source code
If you use the software to provide a service over a network, you must make the complete source code available to users of that service
Any derivative works must also be licensed under AGPL-3.0
For the full license text, see the LICENSE file in the root of the Synaptipy repository.
Troubleshooting
Common Issues
File Format Not Recognized:
Ensure the file is one of the supported formats
Check if you have the necessary dependencies for that format
Some formats require additional libraries not included by default
GUI Display Issues:
Ensure PySide6 is properly installed
Try updating your graphics drivers
If running remotely, ensure X forwarding is enabled
Performance Problems with Large Files:
Enable downsampling for visualization
Increase system RAM if possible
Consider splitting very large recordings into smaller files
Export Failures:
Check available disk space
Ensure write permissions for the target directory
For NWB exports, verify all required metadata is provided
Biological Troubleshooting
These scenarios describe what analysis outputs mean in terms of patch-clamp physiology, not just software errors.
“Tau returns NaN after a current step”
A failed exponential fit almost always means one of:
The patch is leaky - the cell membrane has not sealed properly (seal resistance below ~1 GOhm), so the voltage decays non-exponentially.
The cell has not fully charged - the current step is too short for the membrane RC to reach steady-state. Increase the step duration (>5 x tau, typically 200-500 ms for neurons).
The fit window includes the stimulus artifact - check that Baseline End is placed after the artifact but before the voltage plateau, and that Fit Start skips the initial capacitive transient.
Access resistance is too high (>30 MOhm for whole-cell) - the series resistance is limiting current delivery, making the apparent decay multi-exponential. Compensate or replace the pipette.
“Input resistance (Rin) is abnormally low (< 50 MOhm for a cortical neuron)”
The holding current is wrong: the cell may be partially clamped at an unphysiological potential. Check your resting Vm before stepping.
Shunt conductance: an imperfect seal or damaged membrane adds parallel conductance that reduces apparent Rin. Check seal resistance.
The step amplitude is too large - nonlinear I-V conductances (Ih, inward rectifier K+) are activated. Use small hyperpolarising steps (5-20 pA).
“Spike threshold is reported as NaN”
The d2V/dt2 AP onset detector returns NaN when:
The dV/dt at the detected threshold point is outside the biological range (> 300 V/s indicates a digital artifact; < 2 V/s indicates a noise crossing rather than a true AP upstroke).
The rising phase of the AP is shorter than 0.2 ms (photo-electric artifact or electrical transient picked up from the stimulator).
Increase filtering (Savitzky-Golay smoothing) or reduce the onset lookback window if thresholds are unreliable on noisy recordings.
“Synaptic charge (AUC) is negative or much larger than expected”
Check that the baseline method is set to Pre-Window (Local 10 ms). A global baseline corrupts the measurement when holding current drifts during long recording epochs.
Verify the search window does not include the stimulus artifact. Set Search Window Start at least 2 ms after the stimulus.
If the cell is in voltage-clamp, check the polarity: PSCs are downward (negative) in the standard convention. Use Detection Method: Negative Peak for IPSCs or Absolute Peak when sign is uncertain.
“Opto-jitter is impossibly short (< 1 ms)”
This almost always means the photo-electric artifact from the LED or laser shutter is being detected as a spike. Set the Artifact Blanking Window to at least 1-2 ms. Genuine monosynaptic latencies are 2-5 ms for direct ChR2-expressing targets; disynaptic latencies are 8-15 ms.
“Rs QC warning in batch output: Series resistance destabilized”
The Rs warning appears when the series resistance increased by more than 20% (default) compared to the first sweep. This typically means:
The pipette tip clogged partially during the recording.
The gigaohm seal broke down gradually. Sweeps flagged with
rs_qc_warningshould be excluded from analysis. The default threshold (20%) can be adjusted via thers_toleranceparameter inBatchAnalysisEngine.run_batch().
Analysis Parameter Reference
The table below explains every common parameter in biological terms so you can choose values that match your experimental design.
Parameter |
Unit |
Biological meaning |
Typical range |
|---|---|---|---|
|
mV or pA |
Minimum height of an event above the local baseline. Prevents noise peaks from being counted as real spikes or synaptic events. |
5-30 mV (spikes); 5-50 pA (PSCs) |
|
ms |
Minimum duration of an event at half-maximum. Excludes electrical transients that are far narrower than real APs (0.5-2 ms) or PSCs (2-20 ms). |
0.3-1.0 ms (spikes); 2-10 ms (PSCs) |
|
mV or pA |
Voltage (or current) level a trace must cross to be counted as an event. Set just above the noise floor. |
-20 mV (spikes); 3 x noise RMS (PSCs) |
|
ms |
Minimum inter-event interval. Prevents double-counting the same AP or the same PSC. Should be slightly shorter than the fastest real inter-event interval in your data. |
2-5 ms (spikes); 5-20 ms (PSCs) |
|
ms or s |
Duration of the pre-event window used to measure the resting level. Shorter windows (10 ms) track slow holding-current drift more accurately than long windows. |
5-20 ms |
|
ms |
How far before each spike peak to search for the AP onset (threshold crossing). Should span the full AP upstroke plus noise margin. |
2-5 ms |
|
ms |
Width of the Savitzky-Golay smoothing kernel applied to the trace before differentiation (dV/dt). Increase for noisy recordings; decrease to preserve fast upstroke kinetics. |
0.1-0.5 ms |
|
s |
Time of the voltage or current step command. Auto-detected from the stimulus derivative; override if auto-detection fails. |
Protocol-dependent |
|
mV |
Amplitude of the VC command step. Required for Rs and Cm calculation. Use the actual command amplitude, not the measured response. |
-10 to -5 mV (typical access resistance protocol) |
|
ms |
Duration after a TTL stimulus to ignore. Prevents the photo-electric artifact from the LED from being misclassified as a spike. |
1-2 ms |
|
fraction |
Maximum fractional increase in series resistance before a sweep is flagged as unstable. 0.20 = flag sweeps where Rs has increased by >20% compared to Sweep 1. |
0.10-0.30 |
Getting Help
If you encounter issues not covered here:
Check the GitHub Issues for known problems
Create a new issue with details about your problem
Include the log files and error messages in your report