sim-ballena 0.1.1__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sim-ballena might be problematic. Click here for more details.

@@ -4,7 +4,7 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "SimBallenaSNN"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  dependencies = [
9
9
  "pyo3",
10
10
  "rand",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "SimBallenaSNN"
3
- version = "0.1.1"
3
+ version = "0.1.2"
4
4
  edition = "2024"
5
5
 
6
6
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sim_ballena
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -268,6 +268,10 @@ impl Network{
268
268
  simulate(self, instance, max_time)
269
269
  }
270
270
 
271
+ /* ===================== */
272
+ /* COPY GETTERS */
273
+ /* ===================== */
274
+
271
275
  }
272
276
 
273
277
 
@@ -160,6 +160,7 @@ impl Lif{
160
160
 
161
161
  /* reset state */
162
162
  pub fn reset_state(&mut self){
163
- self.voltage = self.v_rest;
163
+ self.voltage = self.v_rest;
164
+ self.last_spike = None;
164
165
  }
165
166
  }
@@ -142,7 +142,7 @@ pub fn simulate(network:&mut Network, instance: PyRef<'_, Instance>, max_time:f6
142
142
  Some(syn) => syn,
143
143
  None => continue
144
144
  };
145
-
145
+
146
146
  // Only save measures if the event has been procceced
147
147
  // and the neuron changed and needs to be tracked
148
148
  let mut track_voltage : HashSet<usize> = HashSet::new();
@@ -226,22 +226,6 @@ pub fn simulate(network:&mut Network, instance: PyRef<'_, Instance>, max_time:f6
226
226
  .v_rest_list( v_rest_list )
227
227
  .tau_list( tau_list );
228
228
 
229
-
230
- // voltages
231
- // let neurons = network.get_neurons();
232
- // let voltage_markers:Vec<Vec<VoltageMarker>> = outputs.iter().map(|&o|neurons.get(o).unwrap().get_voltage_markers()).collect();
233
-
234
-
235
- // let mut res = Response::new( outputs.clone() );
236
- // res.set_max_time(max_time);
237
- // res.set_voltage_markers(voltage_markers);
238
- // res.set_tau_list( tau_list );
239
- // res.set_v_rest_list( v_rest_list );
240
-
241
- // spikes
242
- // let spikes:Vec<Vec<f64>> = outputs.iter().map(|&o|neurons.get(o).unwrap().get_spikes()).collect();
243
- // res.set_spikes( spikes );
244
-
245
229
  // reset all neuron states
246
230
  for neu in neurons{{
247
231
  neu.reset_state();
@@ -0,0 +1,49 @@
1
+ import sim_ballena as ballena
2
+ import matplotlib.pyplot as plt
3
+
4
+
5
+ net = (ballena.Network( ballena.Lif().tau(5).t_refractory(0).repeat(2) )
6
+ .synapses_net([])
7
+ .weights_net([])
8
+ .outputs([0,1])
9
+ .mode(['VOLTAGES','SPIKES']))
10
+
11
+
12
+
13
+ # ==========
14
+ # STEP 1
15
+ # ==========
16
+ net = net.synapses_in([(0,0),(0,1),(1,0),(1,1)])
17
+ net = net.weights_in([16,0,-16,0])
18
+
19
+ times = [ (1, 0), (5, 1) ]
20
+ instance = ballena.Instance( times )
21
+ res = net.simulate( instance, 10 )
22
+
23
+ time = res.time()
24
+ volt = res.voltages()
25
+ plt.figure(figsize=(10,4))
26
+ plt.subplot(121)
27
+ plt.plot( time, volt[0], label='true')
28
+ plt.subplot(122)
29
+ plt.plot( time, volt[1], label='false')
30
+ plt.show()
31
+
32
+ # ==========
33
+ # STEP 1
34
+ # ==========
35
+ net = net.weights_in([16,0,-16,0])
36
+
37
+ times = [ (1, 0), (5, 1) ]
38
+ instance = ballena.Instance( times )
39
+ res = net.simulate( instance, 10 )
40
+
41
+ time = res.time()
42
+ volt = res.voltages()
43
+ plt.figure(figsize=(10,4))
44
+ plt.subplot(121)
45
+ plt.plot( time, volt[0], label='true')
46
+ plt.subplot(122)
47
+ plt.plot( time, volt[1], label='false')
48
+ plt.show()
49
+
@@ -33,7 +33,7 @@
33
33
  "\n",
34
34
  "import sim_ballena as ballena\n",
35
35
  "import time\n",
36
- "import numpy as np"
36
+ "import numpy as np\n"
37
37
  ]
38
38
  },
39
39
  {
@@ -207,17 +207,7 @@
207
207
  "cell_type": "code",
208
208
  "execution_count": 6,
209
209
  "metadata": {},
210
- "outputs": [
211
- {
212
- "name": "stdout",
213
- "output_type": "stream",
214
- "text": [
215
- "t_ballena 0.8343455791473389\n",
216
- "t_nest 7.572166204452515\n",
217
- "ballena es 9.075575389505754 veces mas rapido\n"
218
- ]
219
- }
220
- ],
210
+ "outputs": [],
221
211
  "source": [
222
212
  "# inputs = spike_generator(100,0.01,100)\n",
223
213
  "\n",
@@ -231,23 +221,57 @@
231
221
  },
232
222
  {
233
223
  "cell_type": "code",
234
- "execution_count": 26,
224
+ "execution_count": null,
225
+ "metadata": {},
226
+ "outputs": [],
227
+ "source": [
228
+ "poisson = ballena.PoissonGenerator( [200,100,50], 0.05 )"
229
+ ]
230
+ },
231
+ {
232
+ "cell_type": "code",
233
+ "execution_count": 8,
235
234
  "metadata": {},
236
235
  "outputs": [
236
+ {
237
+ "name": "stdout",
238
+ "output_type": "stream",
239
+ "text": [
240
+ "[11, 3, 1]\n"
241
+ ]
242
+ },
237
243
  {
238
244
  "data": {
239
245
  "text/plain": [
240
- "<PoissonGenerator at 0x76a489929f70>"
246
+ "[]"
241
247
  ]
242
248
  },
243
- "execution_count": 26,
249
+ "execution_count": 8,
244
250
  "metadata": {},
245
251
  "output_type": "execute_result"
252
+ },
253
+ {
254
+ "data": {
255
+ "image/png": "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juLi4hM4EQCQSpK/Z6SpqSlGjx6d4q0BgJNM3ndGDh48GK+//nrn12+88UY0NTXFGWecEePGjYtly5bFW2+9Fffdd19ERKxcuTImTJgQ5513XnzwwQdxzz33xNNPPx2///3ve+8sAIB+K+8Y2bZtW1xyySWdXy9dujQiIhYsWBDr1q2Lffv2xe7duztfb29vj5tuuineeuutGDZsWHzxi1+Mp556qsv3AAAGr+N6gPVEOdoHYACAk8fR/vz2b9MAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUaAfu299o9i/K2bYvytm+K99o8G7QxwLE6W/3fFCACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAklXeMPPvss3H55ZdHZWVlFBQUxMaNG494zObNm+OCCy6I4uLiOPvss2PdunXHMCoAMBDlHSOHDh2K6urqWLVq1VGtf+ONN2LOnDlxySWXRFNTU9x4441x3XXXxZNPPpn3sADAwFOY7wGzZ8+O2bNnH/X61atXx4QJE2LFihUREXHOOefEc889F3feeWfMmjUr37cHAAaYPn9mpLGxMWpra7vsmzVrVjQ2NvZ4TFtbW+RyuS4bADAw9XmMNDc3R3l5eZd95eXlkcvl4v333+/2mLq6uigrK+vcqqqq+npMACCRk/LTNMuWLYvW1tbObc+ePalHAgD6SN7PjOSroqIiWlpauuxraWmJ0tLSOPXUU7s9pri4OIqLi/t6NADgJNDnd0ZqamqioaGhy776+vqoqanp67cGAPqBvGPk4MGD0dTUFE1NTRHx74/uNjU1xe7duyPi33/EMn/+/M71119/ffz973+P73znO/Hqq6/GL37xi3jggQfi29/+du+cAQDQr+UdI9u2bYspU6bElClTIiJi6dKlMWXKlLj99tsjImLfvn2dYRIRMWHChNi0aVPU19dHdXV1rFixIu655x4f6wUAIuIYnhmZOXNmZFnW4+vd/e2qM2fOjB07duT7VgDAIHBSfpoGABg8xAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEiqIMuyLPUQR5LL5aKsrCxaW1ujtLQ09TgAwFE42p/f7owAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQ1DHFyKpVq2L8+PFRUlIS06dPj61bt/a4dt26dVFQUNBlKykpOeaBAYCBJe8Y2bBhQyxdujSWL18eL774YlRXV8esWbNi//79PR5TWloa+/bt69x27dp1XEMDAANH3jFyxx13xKJFi2LhwoVx7rnnxurVq2PYsGGxdu3aHo8pKCiIioqKzq28vPy4hgYABo68YqS9vT22b98etbW1//kGQ4ZEbW1tNDY29njcwYMH46yzzoqqqqr42te+Fi+//PKnvk9bW1vkcrkuGwAwMOUVI++8804cPnz4E3c2ysvLo7m5udtjvvCFL8TatWvj0Ucfjd/85jfR0dERF198cbz55ps9vk9dXV2UlZV1blVVVfmMCQD0I33+aZqampqYP39+TJ48OWbMmBEPP/xwfPazn43/+7//6/GYZcuWRWtra+e2Z8+evh4TAEikMJ/FI0eOjKFDh0ZLS0uX/S0tLVFRUXFU3+OUU06JKVOmxOuvv97jmuLi4iguLs5nNACgn8rrzkhRUVFMnTo1GhoaOvd1dHREQ0ND1NTUHNX3OHz4cLz00ksxevTo/CYFAAakvO6MREQsXbo0FixYEBdeeGFMmzYtVq5cGYcOHYqFCxdGRMT8+fNjzJgxUVdXFxERP/jBD+Kiiy6Ks88+O9599934yU9+Ert27Yrrrruud88EAOiX8o6Rq666Kt5+++24/fbbo7m5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",
256
+ "text/plain": [
257
+ "<Figure size 640x480 with 1 Axes>"
258
+ ]
259
+ },
260
+ "metadata": {},
261
+ "output_type": "display_data"
246
262
  }
247
263
  ],
248
264
  "source": [
249
- "poisson = ballena.PoissonGenerator( [100,1000,500], 0.05 )\n",
250
- "poisson"
265
+ "poisson = ballena.PoissonGenerator( [200,100,50], 0.05 )\n",
266
+ "\n",
267
+ "\n",
268
+ "spikes = poisson.get_spikes()\n",
269
+ "print( [len(spk) for spk in spikes] )\n",
270
+ "\n",
271
+ "for idx,ch in enumerate(spikes):\n",
272
+ " plt.vlines(ch, idx-0.2, idx+0.2)\n",
273
+ " \n",
274
+ "plt.plot()"
251
275
  ]
252
276
  }
253
277
  ],
@@ -1,81 +0,0 @@
1
- import sim_ballena as ballena
2
- import matplotlib.pyplot as plt
3
- import random
4
- import time
5
-
6
- inputs = ballena.Instance( [(40*t/100,0) for t in range(1,100)] )
7
- n = [ballena.Lif().tau(10).t_refractory(0.001)]
8
- syn_in = [(0,0)]
9
- syn_net = []
10
- w_in = [4]
11
- w_net = []
12
- outputs = [0]
13
-
14
- # ========================
15
- # RED QUE GRABA VOLTAJES
16
- # ========================
17
- net = (ballena.Network(n)
18
- .synapses_in(syn_in)
19
- .synapses_net(syn_net)
20
- .weights_in(w_in)
21
- .weights_net(w_net)
22
- .outputs(outputs)
23
- .mode(['VOLTAGES','SPIKES']))
24
-
25
- start = time.time()
26
- for _ in range(5000):
27
- res = net.simulate( inputs, 40 )
28
- print(f"{time.time()-start}")
29
-
30
- # ========================
31
- # RED QUE NO GRABA
32
- # ========================
33
- net = (ballena.Network(n)
34
- .synapses_in(syn_in)
35
- .synapses_net(syn_net)
36
- .weights_in(w_in)
37
- .weights_net(w_net)
38
- .outputs(outputs)
39
- .mode(['SPIKES']))
40
-
41
- start = time.time()
42
- for _ in range(5000):
43
- res = net.simulate( inputs, 40 )
44
- print(f"{time.time()-start}")
45
-
46
-
47
-
48
-
49
-
50
- # inputs_ = [(t/4,0) for t in range(1,40)]
51
- # inputs = ballena.Instance(inputs_)
52
-
53
- # n = [ballena.Lif().tau(10).t_refractory(2),
54
- # ballena.Lif().tau(20)]
55
- # syn_in = [(0,0)]
56
- # syn_net = [(0,1)]
57
- # w_in = [4]
58
- # w_net = [9]
59
- # outputs = [0,1]
60
-
61
- # net = (ballena.Network(n)
62
- # .synapses_in(syn_in)
63
- # .synapses_net(syn_net)
64
- # .weights_in(w_in)
65
- # .weights_net(w_net)
66
- # .outputs(outputs)
67
- # .mode(['VOLTAGES','SPIKES']))
68
-
69
- # res = net.simulate( inputs, 11 )
70
-
71
- # time = res.time()
72
- # volt = res.voltages()
73
-
74
- # print( res.spikes() )
75
-
76
- # plt.plot( time,volt[0], label=f'neu {outputs[0]}' )
77
- # plt.plot( time,volt[1], label=f'neu {outputs[1]}' )
78
- # plt.vlines(res.spikes()[0], -70, -55, linestyles='dashed', colors='red')
79
- # plt.legend()
80
- # plt.grid()
81
- # plt.show()
File without changes
File without changes
File without changes
File without changes
File without changes