Simulating intermittent barrage of network activity
Posted: Sat Jun 09, 2012 2:09 pm
I have inherited some code in which a network of 100 neurons receives a barrage of external stimulation at randomly-selected intervals (this is meant to simulate epileptic activity). The problem is that the code currently stores the time of every single externally-supplied synaptic event in a vector before the numerical integration, which results in the program running out of memory very quickly. I need to modify the code to eliminate these memory issues. I've read the post about using vecevent (http://www.neuron.yale.edu/phpBB/viewto ... eive#p5088), but I don't think this is useful in my case because my code already stores just event times (as opposed to a vector of 0's and 1's for each time step), and it still has memory issues.
So it seems that the best thing to do is generate noise events "on the fly." I'm new to NEURON, so I coded up a very simple network of just one biophysical neuron driven by one NetStim "neuron," and I tried to see if I could get the NetStim neuron to activate at two different times which I specified in the course of integration, so that my run() procedure looks like this (cells.object(1) is the NetStim cell):
The NetStim template looked like this:
so you can see that originally the NetStim object started stimulating the biophysical neuron at t=1000 ms.
Here is the raster plot for the biophysical neuron:
Obviously, the NetStim did not turn back on at t=3001 ms like I wanted it to. It seems like there should be a way to do this, but I've read the NetStim documentation and still don't see how. I saw that NetStim can also have a NET_RECEIVE block, which would allow other neurons in the network to initiate further NetStim activity, but this is not helpful to me because I want to directly control when the NetStim object is active. I'd also like to be able to modify how long it is active within a given burst. Is this possible? And if not, what is the best approach to administer bursts of noisy stimulation "on the fly"? Thanks.
So it seems that the best thing to do is generate noise events "on the fly." I'm new to NEURON, so I coded up a very simple network of just one biophysical neuron driven by one NetStim "neuron," and I tried to see if I could get the NetStim neuron to activate at two different times which I specified in the course of integration, so that my run() procedure looks like this (cells.object(1) is the NetStim cell):
Code: Select all
proc run(){
stdinit()
continuerun(3000)
cells.object(1).pp.start = 3001
continuerun(tstop)
showraster()
}
Code: Select all
begintemplate NetStim_NetStim
public pp, connect2target, x, y, z, position, is_art
objref pp
proc init() {
pp = new NetStim()
pp.start = 1000
pp.number = 100
pp.noise = 0.5
}
func is_art() { return 1 }
obfunc connect2target() { localobj nc
nc = new NetCon(pp, $o1)
if (numarg() == 2) { $o2 = nc }
return nc
}
proc position(){x=$1 y=$2 z=$3}
endtemplate NetStim_NetStim
Here is the raster plot for the biophysical neuron:
Obviously, the NetStim did not turn back on at t=3001 ms like I wanted it to. It seems like there should be a way to do this, but I've read the NetStim documentation and still don't see how. I saw that NetStim can also have a NET_RECEIVE block, which would allow other neurons in the network to initiate further NetStim activity, but this is not helpful to me because I want to directly control when the NetStim object is active. I'd also like to be able to modify how long it is active within a given burst. Is this possible? And if not, what is the best approach to administer bursts of noisy stimulation "on the fly"? Thanks.