# Exact Spike Train Inference via L0 Optimization

An implementation of algorithms described in Jewell and Witten (2017) .

This package implements an algorithm for deconvolving calcium imaging data for a single neuron in order to estimate the times at which the neuron spikes.

This algorithm solves the optimization problems

### AR(1) model

minimize_{c1,...,cT} 0.5 sum_{t=1}^T ( y_t - c_t )^2 + lambda sum_{t=2}^T 1_{c_t neq gamma c_{t-1} }

for the global optimum, where y_t is the observed fluorescence at the tth timepoint. We also solve the above problem with the constraint that c_t >= 0 (hardThreshold = T).

### AR(1) with intercept

minimize_{c1,...,cT,b1,...,bT} 0.5 sum_{t=1}^T (y_t - c_t - b_t)^2 + lambda sum_{t=2}^T 1_{c_t neq gamma c_{t-1}, b_t neq b_{t-1} }

where the indicator variable 1_{(A,B)} equals 1 if the event A cup B holds, and equals zero otherwise.

## Install

In R, if `devtools` is installed type

## Usage

Once installed type

## Python

This package can be called from Python using the py2 package. To install LZeroSpikeInference and rpy2 for use in Python first

1. Install R (for example `apt-get install r-base`)

and then from within R install this package (as above). Then pip install rpy2

1. pip install --user rpy2

The following example illustrates use of the LZeroSpikeInference package from python

Thanks to Luke Campagnola for suggesting this approach!

## Reference

See Jewell and Witten, Exact Spike Train Inference Via L0 Optimization (2017)

# Reference manual

install.packages("LZeroSpikeInference")

1.0.3 by Sean Jewell, 3 years ago

Browse source code at https://github.com/cran/LZeroSpikeInference

Authors: Sean Jewell [aut, cre]

Documentation:   PDF Manual