- Timestamp:
- 10/31/11 14:42:54 (7 months ago)
- Location:
- trunk
- Files:
-
- 8 modified
-
src/brian/connectors.py (modified) (2 diffs)
-
src/connectors.py (modified) (23 diffs)
-
src/nemo/connectors.py (modified) (1 diff)
-
src/nest/connectors.py (modified) (2 diffs)
-
src/neuron/connectors.py (modified) (1 diff)
-
src/pcsim/connectors.py (modified) (1 diff)
-
test/unittests/test_connectors.py (modified) (1 diff)
-
test/unittests/test_simulation_control.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/brian/connectors.py
r1000 r1003 24 24 WeightGenerator, \ 25 25 DelayGenerator, \ 26 ProbaGenerator, Connector 27 from pyNN.brian import simulator 28 29 Connector._simulator = simulator 26 ProbaGenerator 30 27 31 28 … … 122 119 123 120 def connect(self, projection): 124 """Connect-up a Projection.""" 121 """Connect-up a Projection.""" 122 if self.delays is None: 123 self.delays = projection._simulator.state.min_delay 125 124 if projection.pre.size == projection.post.size: 126 125 N = projection.post.size -
trunk/src/connectors.py
r1000 r1003 66 66 self.safe = safe 67 67 if self.safe: 68 self.get = self.get_safe 68 self.get = self.get_safe 69 if isinstance(self.source, list): 70 self.source = numpy.array(self.source) 69 71 if isinstance(self.source, numpy.ndarray): 70 72 self.source_iterator = iter(self.source) … … 131 133 return values 132 134 else: 133 raise Exception("Invalid source ")135 raise Exception("Invalid source (%s)" % type(self.source)) 134 136 135 137 def get_safe(self, N, distance_matrix=None, sub_mask=None): … … 190 192 if not (all_negative and all_positive): 191 193 raise errors.ConnectionError("delay (%s) is out of range [%s,%s]" % (delay, min_delay, max_delay)) 192 return delay 194 return delay 193 195 194 196 … … 234 236 self.safe = safe 235 237 self.verbose = verbose 236 min_delay = self._simulator.state.min_delay 237 if delays is None: 238 self.delays = min_delay 239 else: 240 if core.is_listlike(delays): 241 if min(delays) < min_delay: 242 raise errors.ConnectionError("smallest delay (%g) is smaller than minimum delay (%g)" % (min(delays), min_delay)) 243 elif not (isinstance(delays, basestring) or isinstance(delays, RandomDistribution)): 244 if delays < min_delay: 245 raise errors.ConnectionError("delay (%g) is smaller than minimum delay (%g)" % (delays, min_delay)) 246 self.delays = delays 247 238 self.delays = delays 239 248 240 def connect(self, projection): 249 241 raise NotImplementedError() … … 252 244 self.prog = utility.ProgressBar(0, N, 20, mode='fixed') 253 245 254 def progression(self, count ):246 def progression(self, count, mpi_rank): 255 247 self.prog.update_amount(count) 256 if self.verbose and self._simulator.state.mpi_rank == 0:248 if self.verbose and mpi_rank == 0: 257 249 print self.prog, "\r", 258 250 sys.stdout.flush() … … 291 283 else: 292 284 self.rng = projection.rng 293 285 if self.delays is None: 286 self.delays = projection._simulator.state.min_delay 294 287 self.local = projection.post._mask_local 295 288 self.N = projection.post.size 296 289 self.weights_generator = WeightGenerator(weights, self.local, projection, safe) 297 self.delays_generator = DelayGenerator( delays, self.local, kernel=projection._simulator.state, safe=safe)290 self.delays_generator = DelayGenerator(self.delays, self.local, kernel=projection._simulator.state, safe=safe) 298 291 self.probas_generator = ProbaGenerator(RandomDistribution('uniform', (0,1), rng=self.rng), self.local) 299 292 self._distance_matrix = None … … 385 378 for count, src in enumerate(projection.pre.all()): 386 379 connector._probabilistic_connect(src, 1) 387 self.progression(count )380 self.progression(count, projection._simulator.state.mpi_rank) 388 381 389 382 … … 428 421 for count, src in enumerate(projection.pre.all()): 429 422 connector._probabilistic_connect(src, self.p_connect) 430 self.progression(count )423 self.progression(count, projection._simulator.state.mpi_rank) 431 424 432 425 … … 479 472 proba = proba.astype(float) 480 473 connector._probabilistic_connect(src, proba, self.n_connections) 481 self.progression(count )474 self.progression(count, projection._simulator.state.mpi_rank) 482 475 483 476 … … 500 493 """ 501 494 # needs extending for dynamic synapses. 502 Connector.__init__(self, 0.0, self._simulator.state.min_delay, safe=safe, verbose=verbose)495 Connector.__init__(self, 0.0, None, safe=safe, verbose=verbose) 503 496 self.conn_list = numpy.array(conn_list) 504 497 … … 531 524 #projection._divergent_connect(src, tgts[idx].tolist(), weights[idx], delays[idx]) 532 525 projection._divergent_connect(src, tgts.tolist(), weights, delays) 533 self.progression(count )526 self.progression(count, projection._simulator.state.mpi_rank) 534 527 count += 1 535 528 … … 552 545 distributed simulations. 553 546 """ 554 Connector.__init__(self, 0.0, self._simulator.state.min_delay, safe=safe, verbose=verbose)547 Connector.__init__(self, 0.0, None, safe=safe, verbose=verbose) 555 548 556 549 if isinstance(file, basestring): … … 613 606 614 607 def connect(self, projection): 615 """Connect-up a Projection.""" 608 """Connect-up a Projection.""" 609 if self.delays is None: 610 self.delays = projection._simulator.state.min_delay 616 611 local = numpy.ones(len(projection.post), bool) 617 612 weights_generator = WeightGenerator(self.weights, local, projection, self.safe) … … 651 646 projection._divergent_connect(src, targets.tolist(), weights, delays) 652 647 653 self.progression(count )648 self.progression(count, projection._simulator.state.mpi_rank) 654 649 655 650 … … 700 695 def connect(self, projection): 701 696 """Connect-up a Projection.""" 697 if self.delays is None: 698 self.delays = projection._simulator.state.min_delay 702 699 local = numpy.ones(len(projection.pre), bool) 703 700 weights_generator = WeightGenerator(self.weights, local, projection, self.safe) … … 736 733 projection._divergent_connect(src, tgt, w, d) 737 734 738 self.progression(count )735 self.progression(count, projection._simulator.state.mpi_rank) 739 736 740 737 … … 762 759 763 760 def connect(self, projection): 764 """Connect-up a Projection.""" 761 """Connect-up a Projection.""" 762 if self.delays is None: 763 self.delays = projection._simulator.state.min_delay 765 764 if projection.pre.size == projection.post.size: 766 765 N = projection.post.size … … 780 779 # the float is in case the values are of type numpy.float64, which NEST chokes on 781 780 projection._divergent_connect(src, [tgt], [float(w)], [float(d)]) 782 self.progression(count )781 self.progression(count, projection._simulator.state.mpi_rank) 783 782 count += 1 784 783 else: … … 866 865 def connect(self, projection): 867 866 """Connect-up a Projection.""" 867 if self.delays is None: 868 self.delays = projection._simulator.state.min_delay 868 869 local = numpy.ones(len(projection.post), bool) 869 870 self.N = projection.post.size … … 885 886 proba = proba_generator.get(self.N, self.distance_matrix).astype(float) 886 887 self._smallworld_connect(src, proba, self.n_connections) 887 self.progression(count )888 self.progression(count, projection._simulator.state.mpi_rank) 888 889 889 890 … … 895 896 """ 896 897 """ 897 min_delay = self._simulator.state.min_delay898 898 Connector.__init__(self, None, None, safe=safe, verbose=verbose) 899 899 self.cset = cset … … 905 905 self.weights = DEFAULT_WEIGHT 906 906 self.delays = delays 907 if delays is None:908 self.delays = self._simulator.state.min_delay909 907 else: 910 908 assert cset.arity == 2, 'must specify mask or connection-set with arity 2' … … 926 924 def connect(self, projection): 927 925 """Connect-up a Projection.""" 926 if self.delays is None: 927 self.delays = projection._simulator.state.min_delay 928 928 i0 = projection.pre.first_id 929 929 size1 = projection.pre.last_id - i0 -
trunk/src/nemo/connectors.py
r1000 r1003 21 21 FixedNumberPostConnector, \ 22 22 SmallWorldConnector, \ 23 CSAConnector, \ 24 WeightGenerator, \ 25 DelayGenerator, \ 26 ProbaGenerator, \ 27 Connector 28 from pyNN.nemo import simulator 29 30 Connector._simulator = simulator 23 CSAConnector -
trunk/src/nest/connectors.py
r1000 r1003 13 13 FromListConnector, FromFileConnector, WeightGenerator, \ 14 14 DelayGenerator, ProbaGenerator, DistanceMatrix, CSAConnector 15 from pyNN.nest import simulator 15 16 16 import numpy 17 17 from pyNN.space import Space 18 18 19 Connector._simulator = simulator 19 20 20 21 21 … … 29 29 else: 30 30 self.rng = projection.rng 31 31 if self.delays is None: 32 self.delays = projection._simulator.state.min_delay 32 33 self.N = projection.pre.size 33 34 idx = numpy.arange(self.N*rank(), self.N*(rank()+1)) -
trunk/src/neuron/connectors.py
r1000 r1003 18 18 FixedNumberPostConnector, \ 19 19 SmallWorldConnector, \ 20 CSAConnector, \ 21 Connector 22 23 Connector._simulator = simulator 20 CSAConnector -
trunk/src/pcsim/connectors.py
r1000 r1003 16 16 FixedNumberPreConnector, \ 17 17 FixedNumberPostConnector, \ 18 SmallWorldConnector, \ 19 Connector 20 from pyNN.pcsim import simulator 21 22 23 Connector._simulator = simulator 18 SmallWorldConnector -
trunk/test/unittests/test_connectors.py
r1000 r1003 186 186 (20, 82, 162.0, 0.5)]) 187 187 188 def test_c reate_with_delays_None(self):188 def test_connect_with_delays_None(self): 189 189 C = connectors.AllToAllConnector(weights=0.1, delays=None) 190 190 assert_equal(C.weights, 0.1) 191 assert_equal(C.delays, C._simulator.state.min_delay)191 assert_equal(C.delays, None) 192 192 assert C.safe 193 193 assert C.allow_self_connections 194 195 def test_create_with_delays_too_small(self): 196 assert_raises(errors.ConnectionError, 197 connectors.AllToAllConnector, 198 allow_self_connections=True, 199 delays=0.0) 200 201 def test_create_with_list_delays_too_small(self): 202 assert_raises(errors.ConnectionError, 203 connectors.AllToAllConnector, 204 allow_self_connections=True, 205 delays=[1.0, 1.0, 0.0]) 206 194 C.connect(self.prj) 195 assert_equal(self.prj.connections[0][3], self.prj._simulator.state.min_delay) 196 197 def test_connect_with_delays_too_small(self): 198 C = connectors.AllToAllConnector(weights=0.1, delays=0.0) 199 assert_raises(errors.ConnectionError, C.connect, self.prj) 200 201 def test_connect_with_list_delays_too_small(self): 202 C = connectors.AllToAllConnector(weights=0.1, delays=[1.0, 1.0, 0.0, 0.0, 3.0, 1.5, 2.3, 0.9]) 203 assert_raises(errors.ConnectionError, C.connect, self.prj) 204 207 205 208 206 class TestFixedProbabilityConnector(object): -
trunk/test/unittests/test_simulation_control.py
r1000 r1003 39 39 def test_reset(): 40 40 simulator = MockSimulator() 41 reset = common. control.build_reset(simulator)41 reset = common.build_reset(simulator) 42 42 reset() 43 43 assert simulator.reset_called … … 51 51 def test_current_time(): 52 52 simulator = MockSimulator() 53 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common. control.build_state_queries(simulator)53 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common.build_state_queries(simulator) 54 54 get_current_time() 55 55 assert_equal(simulator.state.accesses, ['t']) … … 57 57 def test_time_step(): 58 58 simulator = MockSimulator() 59 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common. control.build_state_queries(simulator)59 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common.build_state_queries(simulator) 60 60 get_time_step() 61 61 assert_equal(simulator.state.accesses, ['dt']) … … 63 63 def test_min_delay(): 64 64 simulator = MockSimulator() 65 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common. control.build_state_queries(simulator)65 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common.build_state_queries(simulator) 66 66 get_min_delay() 67 67 assert_equal(simulator.state.accesses, ['min_delay']) … … 69 69 def test_max_delay(): 70 70 simulator = MockSimulator() 71 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common. control.build_state_queries(simulator)71 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common.build_state_queries(simulator) 72 72 get_max_delay() 73 73 assert_equal(simulator.state.accesses, ['max_delay']) … … 75 75 def test_num_processes(): 76 76 simulator = MockSimulator() 77 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common. control.build_state_queries(simulator)77 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common.build_state_queries(simulator) 78 78 num_processes() 79 79 assert_equal(simulator.state.accesses, ['num_processes']) … … 81 81 def test_rank(): 82 82 simulator = MockSimulator() 83 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common. control.build_state_queries(simulator)83 get_current_time, get_time_step, get_min_delay, get_max_delay, num_processes, rank = common.build_state_queries(simulator) 84 84 rank() 85 85 assert_equal(simulator.state.accesses, ['mpi_rank'])
