Description of problem
I was wondering if there is a direct way to use dictionaries to save Neurongroups (like in the example code below). Instead of having to first use Vars() to convert the string to a variable (or locals, globals) and then storing it.
Minimal code to reproduce problem
from brian2 import *
eqs = "dV/dt = 1/ms : 1"
N = NeuronGroup(1, eqs, dt=0.1*ms)
J= {"N": NeuronGroup(1, eqs, dt=0.1*ms)}
K = [NeuronGroup(1, eqs, dt=0.1*ms)]
M1 = StateMonitor(N, variables=["V"], record=range(1))
M2 = StateMonitor(J["N"], variables=["V"], record=range(1))
M3 = StateMonitor(K[0], variables=["V"], record=range(1))
run(20*ms)
print("neurongroup N values:", M1.V)
print("neurongroup J['N'] values:", M2.V)
print("neurongroup K[0] values:", M3.V)
output:
neurongroup N values: [[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3
1.4 1.5 1.6 1.7 1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7
2.8 2.9 3. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4. 4.1
4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5
5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9
14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3
15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9]]
neurongroup J['N'] values: []
neurongroup K[0] values: []
What you have aready tried
The locals, globals, but I wanted to see if there was something in Brian2 built in that would allow you not to use it.
Expected output (if relevant)
see Neurongroup 1 values