Hi all,

I am trying to simulate networks where two (or more) sub-populations are structurally plastic (structural plasticity module). My simulation protocol requires that I enable/disable structural plasticity on a sub-population level rather than at kernel level (nest.EnableStructuralPlasticity() / nest.DisableStructuralPlasticity()).

[Q1] Is anyone aware of a way to do this at the sub-population level?

One workaround that I have tried is setting the growth_rate parameter of synaptic elements to 0 and restoring it to the original value at the desired simulation time

SP_OFF_dict = {'growth_rate': 0., 'eps': eps}
nest.SetStatus(neurons, {"synaptic_elements":{"Den_exc": SP_OFF_dict, "Axon_exc":SP_OFF_dict}}
)

However, this crashes the Kernel with the following error:

terminate called after throwing an instance of 'nest::KernelException' what(): Last update of the calcium concentration does not match the last update of the synaptic element.

I don't fully know why the Kernel does not like this SetStatus() call.

[Q2] Is there something that I may be doing wrong? Can anyone please recommend a solution?

I am currently using NESTv2.20 for all my simulations on HPC. But, I am happy to move to NESTv3.1 too.
Many thanks for the support!

Best, Aadhar