Skip to content

siplab-gt/tklfp

Repository files navigation

tklfp - Teleńczuk Kernel LFP

DOI

This is a lightweight package for computing the kernel LFP approximation from Teleńczuk et al., 2020. This method approximates LFP from spikes alone, without the need for more expensive simulations of spatially extended neurons. See the original authors' demo code here.

How to install:

Simply install from pypi:

pip install tklfp

How to use:

Initialization

First you must initialize a TKLFP object which computes and caches the per-spike contribution of each neuron to the total LFP. You will need X, Y, and Z coordinates of the neurons, their cell types (excitatory/inhibitory, represented as a boolean), and the coordinates of the electrode(s):

from tklfp import TKFLP
tklfp = TKLFP(xs_mm, ys_mm, zs_mm, is_excitatory, elec_coords_mm)

The first four arguments must all have the same length N_n, the total number of neurons. elec_coords_mm must an N_e by 3 array-like object, where N_e is the number of recording sites.

Computing LFP

LFP can then be computed with the neuron indices and times of spikes (indices must be between 0 and N_n - 1, corresponding to the parameters given on initialization), as well as the timepoints to evaluate at (must be an iterable):

lfp = tklfp.compute(i_n, t_ms, t_eval_ms)

A complete example, reworking the demo from the original paper, can be found here. Basic usage information is also accessible in docstrings.

Cortical orientation

The TKLFP constructor can also take an orientation argument which represents which direction is "up," that is, towards the surface of the cortex or parallel to the apical dendrites of pyramidal cells. The default is [0, 0, 1], indicating that the positive z axis is "up." In the case your population isn't a sheet of neurons with uniform orientation (for a curved cortical area, for example), you can pass an N_n by 3 array containing the individual orientation vectors for all the neurons.

Future development

The package uses parameters from the original 2020 paper by default. This can be changed by passing in an alternate parameter dictionary on initialization:

tklfp = TKLFP(..., params=new_params)

The new params must have the same content as the default tklfp.params2020. The A0_by_depth params are scipy interpolation objects, but could theoretically be any callable that will return A0 (in μV) for an arbitrary depth (in mm).

About

Lightweight package for computing the kernel LFP approximation from Teleńczuk et al., 2020

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published