elephant.cell_assembly_detection.cell_assembly_detection(binned_spiketrain, max_lag, reference_lag=2, alpha=0.05, min_occurrences=1, size_chunks=100, max_spikes=inf, significance_pruning=True, subgroup_pruning=True, same_configuration_pruning=False, bool_times_format=None, verbose=False)[source]

Perform the CAD analysis [cad1] for the binned (discretized) spike trains given in the input. The method looks for candidate significant patterns with lags (number of bins between successive spikes in the pattern) ranging from -max_lag to max_lag (the second parameter of the function). Thus, between two successive spikes in the pattern there can be at most max_lag`*`bin_size units of time.

The method agglomerates pairs of units (or a unit and a preexisting assembly), tests their significance by a statistical test and stops when the detected assemblies reach their maximal dimension (parameter max_spikes).

At every agglomeration size step (e.g. from triplets to quadruplets), the method filters patterns having the same neurons involved, and keeps only the most significant one. This pruning is optional and the choice is identified by the parameter ‘significance_pruning’. Assemblies already included in a bigger assembly are eliminated in a final pruning step. Also this pruning is optional, and the choice is identified by the parameter subgroup_pruning.


Binned spike trains containing data to be analyzed.


Maximal lag to be tested. For a binning dimension of bin_size the method will test all pairs configurations with a time shift between ‘-max_lag’ and ‘max_lag’.

reference_lagint, optional

Reference lag (in bins) for the non-stationarity correction in the statistical test. Default: 2

alphafloat, optional

Significance level for the statistical test. Default: 0.05

min_occurrencesint, optional

Minimal number of occurrences required for an assembly (all assemblies, even if significant, with fewer occurrences than min_occurrences are discarded). Default: 0

size_chunksint, optional

Size (in bins) of chunks in which the spike trains are divided to compute the variance (to reduce non stationarity effects on variance estimation). Default: 100

max_spikesint, optional

Maximal assembly order (the algorithm will return assemblies composed of maximum max_spikes elements). Default: np.inf

significance_pruningbool, optional

If True, the method performs significance pruning among the detected assemblies. Default: True

subgroup_pruningbool, optional

If True, the method performs subgroup pruning among the detected assemblies. Default: True

same_configuration_pruningbool, optional

If True, performs pruning (not present in the original code and more efficient), not testing assemblies already formed if they appear in the very same configuration. Default: False

bool_times_formatbool, optional

Deprecated since version 0.10.0.

Has no effect, the returning ‘times’ are always a quantity array specifying the pattern spike times. Default: None

verbosebool, optional

Regulates the number of prints given by the method. If true all prints are given, otherwise the method does give any prints. Default: False

assemblylist of dict

Contains the assemblies detected for the bin size chosen. Each assembly is a dictionary with attributes:


Vector of units taking part to the assembly (unit order correspond to the agglomeration order).


Vector of time lags. lag[z] is the activation delay between neurons[1] and neurons[z+1].


Vector containing p-values. pvalue[z] is the p-value of the statistical test between performed adding neurons[z+1] to the neurons[1:z].


Assembly activation times in the units of binned_spiketrain.


Array of two entries (z,c). The first is the number of neurons participating in the assembly (size), and the second is number of assembly occurrences.


If binned_spiketrain is not an instance of elephant.conversion.BinnedSpikeTrain.


If the parameters are out of bounds.


Alias: cad