This is a package for performing filering and active learning for a binomial synaptic model using nested particle filters. Performance is achieved by providing a CUDA GPU implementation, but the code also runs (much more slowly) on the CPU.
This package needs at least Julia 1.6.1. In a Julia REPL, activate an environment and type:
]add BinomialSynapses
User API is work in progress. This is a minimal working example for running the nested particle filter on synthetic data and producing a plot of the observation trace and the posterior histograms.
using BinomialSynapses
sim = NestedFilterSimulation(
10, 0.85, 1.0, 0.2, 0.2, # ground truth parameters
1:20, # parameter ranges for filter
LinRange(0.05, 0.95, 100), # .
LinRange(0.10, 2.00, 100), # .
LinRange(0.05, 2.00, 100), # .
LinRange(0.05, 2.00, 100), # .
2048, 512, # outer and inner number of particles
12 # jittering kernel width
)
times, epsps = run!(sim, T = 1000)
posterior_plot(sim.fstate, times, epsps, truemodel = sim.hmodel)
- On the nested particle filter: Crisan, Dan, and Joaquin Miguez. "Nested particle filters for online parameter estimation in discrete-time state-space Markov models." Bernoulli 24.4A (2018): 3039-3086.
- On the model of stochastic synapse: Gontier, Camille, and Jean-Pascal Pfister. "Identifiability of a Binomial Synapse." Frontiers in computational neuroscience 14 (2020): 86.