Show
Ignore:
Timestamp:
03/10/10 11:16:33 (2 years ago)
Author:
apdavison
Message:

A few connector-related fixes, plus a new unit test for distance-dependent weights.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/test/unittests/generictests.py

    r720 r725  
    99import os 
    1010import cPickle as pickle 
    11 from pyNN import common, random, utility, recording, errors 
     11from pyNN import common, random, utility, recording, errors, space 
    1212import glob 
    1313 
     
    873873                    self.assertAlmostEqual(prj1.connections[0].delay, 0.4, 6) # nest rounds delays to the timestep 
    874874          
     875    def testDistanceDependentWeights(self): 
     876        connectors = ( 
     877            sim.AllToAllConnector(weights="exp(-d/10.0)", space=space.Space(scale_factor=0.9)), 
     878            sim.FixedProbabilityConnector(0.8, weights="maximum(3-d, 0)", space=space.Space(offset=0.1)), 
     879            sim.DistanceDependentProbabilityConnector("abs(d<3)", weights="sin(d)", space=space.Space(offset=0.1, 
     880                                                                                                      scale_factor=0.9)), 
     881        ) 
     882        exp = numpy.exp 
     883        maximum = numpy.maximum 
     884        sin = numpy.sin 
     885        for srcP in [self.source5, self.source22]: 
     886            for tgtP in [self.target6, self.target33]: 
     887                for conn in connectors: 
     888                    print conn.w_expr 
     889                    prj = sim.Projection(srcP, tgtP, conn) 
     890                    first_connection = prj.connections[0] 
     891                    last_connection = prj.connections[-1] 
     892                    for c in first_connection, last_connection: 
     893                       d = space.distance(c.source, c.target) 
     894                       self.assertAlmostEqual(c.weight, eval(conn.w_expr), 10) 
    875895 
    876896class ProjectionSetTest(unittest.TestCase):