I am looking to connect two Izhikevich model cells with a synapse. I can already connect a NetStim input to an Izhikevich cell using NetCon, but I can't access the izh.vv variable to use an Izhikevich cell as the presynaptic cell. If I try to use the izh.vv variable as the first argument of a NetCon I get an error. Are there any examples or models that show how to connect two Izhikevich models, using one as a presynaptic cell?

It's often easier to work within the context of a cell template. This is the way that the CellBuilder and NetworkBuilder sets things up so particularly helpful if you want to end up connecting this cell to some other cell type (eg a compartment cell or an event-driven ArtCell)

Anyway, that's how I've set it up in the following example file (myizh.hoc) which was an attempt to get an IZH model to synchronize via the Hopfield-Brody mechanism. This did not succeed with the parameters I used but I did not do much parameter search. If someone gets a chance to do that and finds a successful IZH parameterization please post.

See next post for code

Last edited by wwlytton on Sat Feb 13, 2010 9:03 am, edited 1 time in total.

I noticed in your forum code post that you used a NetCon for izhikevich cells that simply put the izh object as the first argument for the postsynaptic cell without using &izh or referring to the izh.vv variable. When I set it up as:

NetCon(izh,izh2,0,0,1)

it connects izh as the presynaptic cell to izh2 as the postsynaptic cell and seems to work fine, using vv as the variable to monitor for the threshold. My question is, how does it know to monitor the vv variable from the above message command. If vv is not specified in the NetCon does it simply go to the first STATE variable of izh and use that, which happens to be vv? Or is it monitoring all STATE variables? Im just a little unclear of how that works.

1. Biophysical model cells. These are mechanistic models of biological neurons, which are represented by sections which have membrane currents, and membrane potential which is computed by numerical integration of the cable equation. To use a biophysical model cell as a spike source, one must attach a NetCon to it and, at a minimum, tell that NetCon the name of the variable that it is to monitor for threshold crossing.

2. ARTIFICIAL_CELLs. An ARTIFICIAL_CELL has two chief distinguishing features. First, it is not associated with a section location or numerical integrator; this means that it doesn't have a BREAKPOINT block, refer to v or any ions, or have a POINTER. Second, the only way it can affect, or be affected by, anything outside itself is by sending or receiving events; this means it has a NET_RECEIVE block. For an ARTIFICIAL_CELL to serve as a spike source, its NET_RECEIVE block must contain a net_event() statement. Execution of a net_event() statement will cause events to be delivered, with appropriate latencies and weights, to all targets of the NetCons for which the ARTIFICIAL_CELL is a spike source. Since the spike event is generated directly by calling net_event(), the NetCons don't have to monitor a variable in the ARTIFICIAL_CELL for threshold crossing.

3. POINT_PROCESSes. A POINT_PROCESS may refer to v or ions, have a POINTER coupled to some external variable, or have one or more state variables that require numerical integration--any of which is enough to require it to have a BREAKPOINT block. A POINT_PROCESS may also have a NET_RECEIVE block that allows it to use events to communicate with ARTIFICIAL_CELLs or POINT_PROCESSes. That's what is going on with instances of the IZH class (examine izh.mod and you'll see that its NET_RECEIVE block contains a net_event() statement that is executed when vv crosses a threshold). Since an IZH cell generates spike events by calling net_event(), NetCons that use an IZH cell as their spike source do not have to be told to monitor a variable in the IZH mechanism for threshold crossing.

The "acell" section in this model exists only because POINT_PROCESSes have to be attached to a section. It is merely a "host" for all IZH cell instances. That's just an accident of NEURON's developmental history (POINT_PROCESSes were originally used to represent "point sources" of current like a microelectrode for a current or voltage clamp, or the postsynaptic membrane at a site of synaptic attachment).

Thank you we have been able to successfully connect two Izh cells. We are now interested in connecting multiple cells to one Izh cell. We are also interested in learning through synaptic plasticity for these connections. Is there anyway to have multiple separate synaptic connections from several cells to one Izh cell so that the weights of those connections can be varied independently?

One example is that we want to use both inhibitory connections and excitatory connections. If all other cells are connected to a single Izhi cell through multiple NetCon statements that all have our izhi cell as the target, how will the Izhi cell know in the Net_recieve code block if it should update an inhibitory or excitatory synapse? The synapses do have different time constants of synaptic activation.

Would it be possible to use a nonspecific_current to connect the izhi equation to the cell voltage. If the cell voltage equation has a leak conductance of zero and a capactiance of 1, with an area of 1, then the dV/dt equation would be exactly the izhikevich equation. In this way the izh.mod could just use the equation as the current without a derivative state for vv. vv would instead be a nonspecific_current so that the cell would actually be executing the equation. In this way, synaptic currents could be added to the cell for different synapse types and they would effect the voltage separately. Does this seem to be a possible solution to the problem?

We have different dynamics for different types of connections to the cell. Excitatory and inhibitory connections have different time constants of activation and decay. We also have synaptic learning for each of the synaptic connections that differs depending on where the connection is coming from. We are looking for a way to add different kinds of alpha synapses that have varying dynamics of their dual exponential onset and decay, as well as being able to keep track of synaptic plasticity separately for each synapse. Is this possible with the current model setup?