Structural plasticity in Auryn

Discussions on development, Auryn's inner workings, adding new features and how to change things at the core
Post Reply
asinha
Posts: 37
Joined: Wed Oct 15, 2014 5:12 pm
Location: Hatfield, Hertfordshire, UK
Contact:

Structural plasticity in Auryn

Post by asinha »

Hiya!

My research is related to structural plasticity and I'd like to discuss the inclusion of structural plasticity in Auryn here. Structural plasticity isn't very common in simulators, so including it in Auryn would be really advantageous. The only other simulator that I'm aware of with some support for structural plasticity is Nest - I don't think this implementation is complete, though.

Here's an example of a structural plasticity model: http://journals.plos.org/ploscompbiol/a ... bi.1003259

I'm still looking into the details, and this is what I've found modelling structural plasticity requires for the moment:

- neuron models need to keep track of their neurites - axonal boutons and dendritic spines (just two new variables here)
- neurons in structural plasticity generally have locations (two more variables - x,y co-ordinates?)
- synaptic models need to be able to change the number of synapses in a network - this is probably the most computationally intensive part, but structural plasticity is a much much slower process than synaptic plasticity, so this won't be done too often.

Growth rules for structural plasticity generally depend on researchers, so the evolve/propogate methods can be overridden for this?

Cheers!
User avatar
zenke
Site Admin
Posts: 156
Joined: Tue Oct 14, 2014 11:34 am
Location: Basel, CH
Contact:

Re: Structural plasticity in Auryn

Post by zenke »

Hi asinha,

I think that structural plasticity can be implemented in Auryn in a relatively straight forward way. However, I am not sure that it will cover all your requirements. When I say structural plasticity, I am thinking mostly of the problem of creating and removing synapses without just considering a fully connected weight matrix and setting elements to zero. Doing this would be inefficient, but there are ways how to make this (more) efficient ... to the longer time scale of structural plasticity might allow for some nice optimizations here. That said I think the answer to your Point 3 is: It feasible and not too much work. It will require implementing an alternative to SimpleMatrix or ComplexMatrix the structures used to store synaptic connectivity efficiently in Auryn.

Concerning Point 1. I believe that what you need here can be caught with the ability of synapses to have multiple states ... but correct me if I am wrong. This has been implemented lately, but is still a feature that needs testing. It's in the development branch. Essentially this is tied to the implementation of ComplexMatrix which makes the sparse connectivity matrix of any Connection a 3rd order tensor.

In Point 2 you are talking about "locations". Now this gives me a little bit of a tummy ache, because it seems you would like to simulate morphology. If that is indeed what you would like to do, I am afraid that Auryn is not suitable. After all it was primarily developed to simulate networks of point neurons. For simulating neurons with a 3D morphology I guess NEURON would be the go-to solution. However, if you simply want to parametrize synapses with two or more parameters (to code for instance for the distance from the soma) you can do that using the ComplexMatrix mechanisms. In that case you would use certain synaptic state variables as parameters. It seems, however, that as soon as you start querying these parameters to determine the spatial distance between synapses and neurons plasticity could get horribly slow.

Finally, yes you are right, using structural plasticity would entail writing new connection classes in which you would simply override propagate and evolve to accommodate your needs.

From my view the most important first step would be a new Matrix class which allows adding and removing elements and yet maintains some structure which is reasonably efficient in propagating spikes. One could simply start with a vector< vector > class for instance and see how bad the performance gets. SimpleMatrix I developed to ensure that all synaptic values are compact in memory to optimize caching. Now you will certainly lose some of that performance with a new more flexible class. It all will depend on how often synapses are created and destroyed...
User avatar
zenke
Site Admin
Posts: 156
Joined: Tue Oct 14, 2014 11:34 am
Location: Basel, CH
Contact:

Re: Structural plasticity in Auryn

Post by zenke »

Hi asinha,

just checking in. Any thoughts on your part to implement structural plasticity. Also, did you have time yet to look at the NEURON simulator?

Best,

F
asinha
Posts: 37
Joined: Wed Oct 15, 2014 5:12 pm
Location: Hatfield, Hertfordshire, UK
Contact:

Re: Structural plasticity in Auryn

Post by asinha »

Hey,

Yeah, I've used NEURON but not too much - it's quite commonly used here in the lab since quite a few people here work on multi compartment models and all that. On the structural plasticity part, structural plasticity can also be modelled at different levels of abstraction. When I said locations, I meant locations of point neurons the way it's done in this paper (My research is based on this paper and the model in there is what I'll be replicating first). Anything that requires more detail than point neurons shouldn't use Auryn, as you said already. Having said that, modelling structural plasticity is still a very new thing and there don't seem to be any methods or guidelines that one can think of as "standards" - so we're in uncharted territory here (which is both good and bad).

I guess the first step is implementing the Matrix class that'll permit addition and removal of elements, as you've said already - this is probably the one feature that all structural plasticity models will have in common. If researchers need other features, which will vary based on their "growth rules" and so on, they'll have to implement these themselves - it doesn't make sense for Auryn to carry them all.

I'm now beginning to work on replicating the Butz and van Ooyen model. I'll post more details as I think up the design and things.

How does this sound?

Thanks for keeping an eye on this!
User avatar
zenke
Site Admin
Posts: 156
Joined: Tue Oct 14, 2014 11:34 am
Location: Basel, CH
Contact:

Re: Structural plasticity in Auryn

Post by zenke »

This all sounds good. We should definitely come up with a smart solution to the removal/addition of synapses problem. I will have as look at the paper you sent.
asinha
Posts: 37
Joined: Wed Oct 15, 2014 5:12 pm
Location: Hatfield, Hertfordshire, UK
Contact:

Re: Structural plasticity in Auryn

Post by asinha »

They just submitted their code to NEST. This commit seems to be it:

https://github.com/nest/nest-simulator/ ... b6d2c87fe6

This is the pull request: https://github.com/nest/nest-simulator/pull/32
Post Reply