LZeroSpikeInference
Exact Spike Inference Via L0 Optimization
Install / Use
/learn @jewellsean/LZeroSpikeInferenceREADME
LZeroSpikeInference: A package for estimating spike times from calcium imaging data using an L0 penalty 
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. See https://jewellsean.github.io/fast-spike-deconvolution/ for tutorials and additional information.
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
devtools::install_github("jewellsean/LZeroSpikeInference")
Usage
Once installed type
library(LZeroSpikeInference)
?LZeroSpikeInference
Python
This package can be called from Python using the py2 package. To install LZeroSpikeInference and rpy2 for use in Python first
- Install R (for example
apt-get install r-base)
and then from within R install this package (as above). Then pip install rpy2
- pip install --user rpy2
The following example illustrates use of the LZeroSpikeInference package from python
from numpy import array
import rpy2.robjects.packages
lzsi = rpy2.robjects.packages.importr("LZeroSpikeInference")
d = lzsi.simulateAR1(n = 500, gam = 0.998, poisMean = 0.009, sd = 0.15, seed = 8)
fit = lzsi.estimateSpikes(d[1], **{'gam':0.998, 'lambda':8, 'type':"ar1"})
spikes = array(fit[0])
fittedValues = array(fit[1])
Thanks to Luke Campagnola for suggesting this approach!
Reference
See Jewell and Witten, Exact Spike Train Inference Via L0 Optimization (2017)
Related Skills
node-connect
352.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
