/
test2.py
98 lines (82 loc) · 3.08 KB
/
test2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from Stimulator import Constant_Stimulator as Current
from Stimulator import Current_Poisson_Stimulator as Noise
from Stimulator import Current_Poisson_Pool as Inhibitory_Pool
from LIF_STDP_Neuron import LIF_STDP_Neuron as Neuron
from LIF_STDP_Neuron import Event
import SimPy.Simulation as simpy
#import matplotlib.pyplot as plot
import random
import numpy
import matplotlib.pyplot as plot
settings = {}
settings['reset_potential'] = -70.0
settings['spike_potential'] = 0
settings['threshold'] = -54.0
settings['refactory_period'] = 5.0
settings['left_window_constant'] = 20#(t+)
settings['right_window_constant'] = 20#(t-)
settings['learning_rate'] = 0.05# (A+)
settings['stability'] = 1.05# (B)
settings['weight_ceiling'] = 1.0
settings['type'] = 'voltage'
c = 0.7
unshared_pool_settings = {'alpha':2.5, 'k':1, 'a':0.4, 'b':30.0, 'c':c, 'd':-3.5}
shared_pool_settings = {'alpha':2.5, 'k':1, 'a':0.75, 'b':65.0, 'c':1-c, 'd':-5}
inhibitory_intensy = 8.2
noise_intensy = 8.2
pool_a = Inhibitory_Pool('pool', 0, -inhibitory_intensy, 3.0, unshared_pool_settings)
pool_b = Inhibitory_Pool('pool', 1, -inhibitory_intensy, 3.0, unshared_pool_settings)
shared_pool = Inhibitory_Pool('pool', 2, -inhibitory_intensy, 3.0, shared_pool_settings)
current_a = Current('current', 0, 'current', 20.7)
current_b = Current('current', 1, 'current', 21.5)
neuron_a = Neuron('neuron', 0, settings, 'off')
neuron_b = Neuron('neuron', 1, settings, 'off')
noise_a_pos = Noise('noise', 0, 100, noise_intensy, 3.0)
noise_a_neg = Noise('noise', 1, 100, -noise_intensy, 3.0)
noise_b_pos = Noise('noise', 2, 100, noise_intensy, 3.0)
noise_b_neg = Noise('noise', 3, 100, -noise_intensy, 3.0)
set = [pool_a, pool_b, shared_pool, current_a, current_b, neuron_a, neuron_b, noise_a_pos, noise_a_neg, noise_b_pos, noise_b_neg]
inh = 'off'
#inh = 'on'
if inh=='on':
pool_a.connect(neuron_a)
neuron_a.connect(pool_a)
pool_b.connect(neuron_b)
neuron_b.connect(pool_b)
shared_pool.connect(neuron_a)
shared_pool.connect(neuron_b)
neuron_a.connect(shared_pool)
neuron_b.connect(shared_pool)
current_a.connect(neuron_a)
current_b.connect(neuron_b)
noise_a_pos.connect(neuron_a)
noise_a_neg.connect(neuron_a)
noise_b_pos.connect(neuron_b)
noise_b_neg.connect(neuron_b)
for i in range(4000):
for neuron in set:
event = Event(name = 'update')
simpy.activate(event, event.update(neuron), delay = i)
simpy.simulate(until = 4000.0)
print(len(neuron_a.spikes_record), len(neuron_b.spikes_record))
if inh=='on':
outfile_a = open('inhib_a.txt', 'w')
else:
outfile_a = open('no_inhib_a.txt', 'w')
for i in neuron_a.spikes_record:
outfile_a.write(str(i)+'\n')
if inh=='on':
outfile_b = open('inhib_b.txt', 'w')
else:
outfile_b = open('no_inhib_b.txt', 'w')
for i in neuron_b.spikes_record:
outfile_b.write(str(i)+'\n')
exit()
inh = []
for i in range(len(pool_a.spikes_record)):
inh.append(pool_a.spikes_record[i]+shared_pool.spikes_record[i])
x = list(range(len(inh)))
plot.plot(x, neuron_a.spikes_record, x, neuron_b.spikes_record)
plot.plot(x, inh)
plot.plot(x, shared_pool.spikes_record)
plot.show()