elephant.kernels.RectangularKernel

class elephant.kernels.RectangularKernel(sigma, invert=False)[source]

Class for rectangular kernels.

K(t) = \left\{\begin{array}{ll} \frac{1}{2 \tau}, & |t| < \tau \\
0, & |t| \geq \tau \end{array} \right.

with \tau = \sqrt{3} \sigma corresponding to the half width of the kernel.

The parameter invert has no effect on symmetric kernels.

Examples

from elephant import kernels
import quantities as pq
import numpy as np
import matplotlib.pyplot as plt

time_array = np.linspace(-3, 3, num=100) * pq.s
kernel = kernels.RectangularKernel(sigma=1*pq.s)
kernel_time = kernel(time_array)
plt.plot(time_array, kernel_time)
plt.title("RectangularKernel with sigma=1s")
plt.xlabel("time, s")
plt.ylabel("kernel, 1/s")
plt.show()

(Source code, png, hires.png, pdf)

../../../_images/elephant-kernels-RectangularKernel-1.png

Methods

__call__(times) Evaluates the kernel at all points in the array times.
boundary_enclosing_area_fraction(fraction) Calculates the boundary b so that the integral from -b to b encloses a certain fraction of the integral over the complete kernel.
cdf(time) Cumulative Distribution Function, CDF.
icdf(fraction) Inverse Cumulative Distribution Function, ICDF, also known as a quantile.
is_symmetric() True for symmetric kernels and False otherwise (asymmetric kernels).
median_index(times) Estimates the index of the Median of the kernel.

Attributes

min_cutoff Half width of the kernel.
boundary_enclosing_area_fraction(fraction)[source]

Calculates the boundary b so that the integral from -b to b encloses a certain fraction of the integral over the complete kernel.

By definition the returned value is hence non-negative, even if the whole probability mass of the kernel is concentrated over negative support for inverted kernels.

Parameters:
fractionfloat

Fraction of the whole area which has to be enclosed.

Returns:
pq.Quantity

Boundary of the kernel containing area fraction under the kernel density.

Raises:
ValueError

If fraction was chosen too close to one, such that in combination with integral approximation errors the calculation of a boundary was not possible.

cdf(time)[source]

Cumulative Distribution Function, CDF.

Parameters:
timepq.Quantity

The input time scalar.

Returns:
float

CDF at time.

icdf(fraction)[source]

Inverse Cumulative Distribution Function, ICDF, also known as a quantile.

Parameters:
fractionfloat

The fraction of CDF to compute the quantile from.

Returns:
pq.Quantity

The time scalar times such that CDF(t) = fraction.

is_symmetric()

True for symmetric kernels and False otherwise (asymmetric kernels).

A kernel is symmetric if its PDF is symmetric w.r.t. time:

\text{pdf}(-t) = \text{pdf}(t)

Returns:
bool

Whether the kernels is symmetric or not.

median_index(times)

Estimates the index of the Median of the kernel.

We define the Median index i of a kernel as:

t_i = \text{ICDF}\left( \frac{\text{CDF}(t_0) +
\text{CDF}(t_{N-1})}{2} \right)

where t_0 and t_{N-1} are the first and last entries of the input array, CDF and ICDF stand for Cumulative Distribution Function and its Inverse, respectively.

This function is not mandatory for symmetrical kernels but it is required when asymmetrical kernels have to be aligned at their median.

Parameters:
timespq.Quantity

Vector with the interval on which the kernel is evaluated.

Returns:
int

Index of the estimated value of the kernel median.

Raises:
TypeError

If the input array is not a time pq.Quantity array.

ValueError

If the input array is empty. If the input array is not sorted.

See also

Kernel.cdf
cumulative distribution function
Kernel.icdf
inverse cumulative distribution function
property min_cutoff

Half width of the kernel.

Returns:
float

The returned value varies according to the kernel type.