optimizing for spike times and subthreshold voltage

Using the Multiple Run Fitter, praxis, etc..
Post Reply
rivkah
Posts: 3
Joined: Tue Mar 02, 2010 5:50 am

optimizing for spike times and subthreshold voltage

Post by rivkah » Thu Mar 04, 2010 10:06 am

Hello, I'm very new to using the multiple run fitter, so apologies if this has been covered before. I'm having a problem setting up a generator to minimize error to a train of action potentials (details below), while simultaneously using another generator to optimize model parameters to subthreshold voltage fluctuations.

The problems seems pretty basic, but here's some background:

I am trying to fit a model of a thalamic relay neuron, using model components taken from modelDB. It has one compartment.
I am attempting to fit the model parameters to a series of progressively larger (more negative) hyperpolarizing current steps. This stimulus waveform is loaded from a file and applied to the cell using the vector.play() method.

I have two objectives (for now):

1) Match the subthreshold voltage trajectory (here, the low threshold calcium events triggered by hyperpolarization). I've successfully set up a multiple run fitter to do this and it works fine...I can get a fairly good fit using this alone, but I can't really match spike times or counts very well.

2) Match the resulting spike times (sodium action potentials riding on top of calcium events). I'm hoping to use the Multiple Run Fitter to implement a version of the Van Rossum spike train comparison metric...the strategy is to create a binary spike time vector and then convolve it with a filter to give each spike a "tail"....call this smoothed spike train VR. This way, the error between the target VR and the model's output VR will be sensitive to both the number of spikes and the timing of the spikes.

I've written the following function which successfully creates the VR vector I want to match.

obfunc vanRossum(){localobj Vmem, bispikes,smoothSpikes
Vmem = new Vector()
bispikes = new Vector()
smoothSpikes = new Vector()
Vmem.record(&soma.v(.5),dt)
run()
bispikes.spikebin(Vmem,-5)
smoothSpikes.convlv(bispikes,$o1)
smoothSpikes.resize(bispikes.size())
return smoothSpikes
}

//gfilter is the filter to give each spike a decaying tail, read into a vector from a file
VR=vanRossum(gfilter)

I can't figure out how to set up a generator which calculates VR and compares it to the target for each new set of parameters...my NEURON book has gone wandering off, and I haven't been able to put together a solution from the forum posts.

thanks in advance for the help!

rivkah
Posts: 3
Joined: Tue Mar 02, 2010 5:50 am

Re: optimizing for spike times and subthreshold voltage

Post by rivkah » Thu Mar 04, 2010 11:07 am

Of course now that I've posted my problem I think I have come up with a different solution...I think I will use my simulated cell as the presynaptic source for for a dummy cell with an ExpSyn synapse and then use this second cell's output as my "VR"...not totally the same thing, but hopefully it will work.

rivkah
Posts: 3
Joined: Tue Mar 02, 2010 5:50 am

Re: optimizing for spike times and subthreshold voltage

Post by rivkah » Thu Mar 04, 2010 12:55 pm

I wish I would have thought of the NetCon idea first...it's working very well so far and would have saved me quite a bit of time.

Post Reply