Implementation of SNPE

Hi,

Does anyone have a code for SNPE in Julia?

see delfi for a python version.

Thank you,

Best.

Hi, I don’t

…but just today I released a beta package that does something similar: MinimallyDisruptiveCurves.jl: Documentation

similar in the sense that it traces along high-density regions of the posterior. It doesn’t try and recreate the full posterior like snpe. But this means it doesn’t suffer from the curse of dimensionality.

(time to trace curves is limited by speed of model simulation instead of the number of parameters. each curve is typically couple of hundred to couple of thousand cost/gradient evaluations)

also it requires a differentiable cost function, unlike snpe

Nice work!

But this means it doesn’t suffer from the curse of dimensionality.

you mean in the parameter space?

also it requires a differentiable cost function, unlike snpe

ah…

Hi, thanks.

Yes I mean in the parameter space. The computational cost of the implementation depends on the computational cost of model simulation. Typically requires 100s to 10000 model simulations for each curve. Took a few mins on my laptop for each parametric relationship in e.g. a bursting, conductance-based neural model.

I’m currently working on implementing differentiable analogues of standard ‘non-differentiable’ costs, like the number of spikes/bursts in a ocnductance based model of a neuron.

But if you want a simple cost like l2 deviation from a nominal trajectory, it works fine (and there is an example on a bursting neuron model in the user guide). By enforcing a particular model trajectory as best as possible, you get lots of non-differentiable model features like ‘number of spikes’ for free.

Anyway, if you have a particular model you’d like to analyse I’d be interested in having a look as I want to build up more examples / tests of this package. But no worries either way of course.

Thank you for the details. I need to digest this.