gridcells.analysis.bumps - bump tracking

Classes and functions for processing data related to bump attractors.

Classes

Inheritance diagram of gridcells.analysis.bumps

MLFit(mu, sigma2, ln_lh, err2) Maximum likelihood fit data holer.
MLFitList([mu, sigma2, ln_lh, err2, times]) A container for holding results of maximum likelihood fitting.
MLGaussianFit(amplitude, mu_x, mu_y, sigma, ...) Gaussian fit performed by applying maximum likelihood estimator.
MLGaussianFitList([amplitude, mu_x, mu_y, ...]) A container for holding maximum likelihood Gaussian fits.
SingleBumpPopulation(senders, times, sheet_size) A population of neurons that is supposed to form a bump on a twisted torus.
SymmetricGaussianParams(amplitude, mu_x, ...) Parameters for the symmetric Gaussian function.

Functions

fit_gaussian_tt(sig_f, i) Fit a 2D circular Gaussian function to a 2D signal using a maximum likelihood estimator.
fit_gaussian_bump_tt(sig) Fit a 2D Gaussian onto a (potential) firing rate bump on the twisted torus.
fit_maximum_lh(sig) Fit a maximum likelihood solution under Gaussian noise.
class gridcells.analysis.bumps.MLFit(mu, sigma2, ln_lh, err2)[source]

Bases: object

Maximum likelihood fit data holer.

class gridcells.analysis.bumps.MLFitList(mu=None, sigma2=None, ln_lh=None, err2=None, times=None)[source]

Bases: gridcells.analysis.bumps.MLFit, collections.abc.Sequence

A container for holding results of maximum likelihood fitting.

Can be accessed as a Sequence object.

append_data(d, t)[source]

d must be an instance of MLFit

class gridcells.analysis.bumps.MLGaussianFit(amplitude, mu_x, mu_y, sigma, err2, ln_lh, lh_precision)[source]

Bases: gridcells.analysis.bumps.SymmetricGaussianParams

Gaussian fit performed by applying maximum likelihood estimator.

class gridcells.analysis.bumps.MLGaussianFitList(amplitude=None, mu_x=None, mu_y=None, sigma=None, err2=None, ln_lh=None, lh_precision=None, times=None)[source]

Bases: gridcells.analysis.bumps.MLGaussianFit, collections.abc.Sequence

A container for holding maximum likelihood Gaussian fits.

Can be accessed as a Sequence.

append_data(d, t)[source]

d must be an instance of MLGaussianFit

class gridcells.analysis.bumps.SingleBumpPopulation(senders, times, sheet_size)[source]

Bases: gridcells.analysis.spikes.TwistedTorusSpikes

A population of neurons that is supposed to form a bump on a twisted torus.

Parameters:

senders : array_like

A an array of neurons’ IDs.

times : array_like

An array of spike times. Length must be the same as as <senders>.

sheet_size : A pair

A pair of X and Y dimensions of the torus.

bump_position(tstart, tend, dt, win_len, full_err=True)[source]

Estimate bump positions during the simulation time:

  1. Estimates population firing rate for each bin.
  2. Apply the bump position estimation procedure to each of the population activity items.
Parameters:

tstart, tend, dt, win_len : float

Start and end time, time step, and window length. See also sliding_firing_rate().

full_err : bool

If True, save the full error of fit. Otherwise a sum only.

Returns:

pos:list MLGaussianFitList

A list of fitted Gaussian parameters

Notes

This method uses the Maximum likelihood estimator to fit the Gaussian function (fit_gaussian_bump_tt())

uniform_fit(tstart, tend, dt, win_len, full_err=True)[source]

Estimate the mean firing rate using maximum likelihood estimator (fit_maximum_lh())

  1. Uses sliding_firing_rate().
  2. Apply the estimator.
Parameters:

tstart, tend, dt, win_len

As in sliding_firing_rate().

full_err : bool

If True, save the full error of fit. Otherwise a sum only.

Returns:

MLFitList

A list of fitted parameters.

class gridcells.analysis.bumps.SymmetricGaussianParams(amplitude, mu_x, mu_y, sigma, err2)[source]

Bases: object

Parameters for the symmetric Gaussian function.

gridcells.analysis.bumps.fit_gaussian_bump_tt(sig)[source]

Fit a 2D Gaussian onto a (potential) firing rate bump on the twisted torus.

Parameters:

sig : np.ndarray

2D firing rate map to fit. Axis 0 is the Y position. This will be passed directly to fit_gaussian_tt().

Returns:

analysis.image.MLGaussianFit

Estimated values of the fit.

Notes

The function initialises the Gaussian fitting parameters to a position at the maximum of sig.

gridcells.analysis.bumps.fit_gaussian_tt(sig_f, i)[source]

Fit a 2D circular Gaussian function to a 2D signal using a maximum likelihood estimator.

The Gaussian is not generic: \(\sigma_x = \sigma_y = \sigma\), i.e. it is circular only.

The function fitted looks like this:

\[f(\mathbf{X}) = |A| \exp\left\{\frac{-|\mathbf{X} - \mathbf{\mu}|^2}{2\sigma^2}\right\}\]

where \(|\cdot|\) is a distance metric on the twisted torus.

Parameters:

sig_f : np.ndarray

A 2D array that specified the signal to fit the Gaussian onto. The dimensions of the torus will be inferred from the shape of sig_f: (dim.y, dim.x) = sig_f.shape.

i : SymmetricGaussianParams

Guassian initialisation parameters. The err2 field will be ignored.

Returns:

MLGaussianFit

Estimated values, together with maximum likelihood value and precision (inverse variance of noise: NOT of the fitted Gaussian).

gridcells.analysis.bumps.fit_maximum_lh(sig)[source]

Fit a maximum likelihood solution under Gaussian noise.

Parameters:

sig : np.ndarray

A vector containing the samples

Returns

fit : MLFit

Maximum likelihood parameters