Syncopy Data Classes

The data structure in Syncopy is based around the idea that all electrophysiology data can be represented as multidimensional arrays. For example, a multi-channel local field potential can be stored as a two-dimensional float array with the dimensions being time (sample) and channel. This array is always stored in the data property and can be indexed using NumPy indexing.


Each Syncopy data object is simply an annotated multi-dimensional array.

Different types of electrophysiology data often share common properties (e.g. having channel/electrode labels, having a time axis, etc.). An efficient way of organizing these different data types are classes organized in a hierarchy, with shared properties inherited from the top level to the bottom classes (see also Wikipedia).

Inheritance diagram of syncopy.AnalogData, syncopy.SpectralData, syncopy.SpikeData, syncopy.EventData

The bottom classes in the class tree are for active use in analyses.

Usable Syncopy Data Classes

The following classes can be instanced at the package-level (spy.AnalogData(...) etc.)

syncopy.AnalogData([data, filename, …])

Multi-channel, uniformly-sampled, analog (real float) data

syncopy.SpectralData([data, filename, …])

Multi-channel, real or complex spectral data

syncopy.SpikeData([data, filename, …])

Spike times of multi- and/or single units

syncopy.EventData([data, filename, …])

Timestamps and integer codes of experimental events