Weight initialization behavior

This is a sample implementation of a behavior which can be attached to synapse groups, which initializes their weight matrices.

# /NetworkBehavior/Basics/Behavior_Weight_Initialization.py
from PymoNNto import *

class CreateWeights(Behavior):

    def initialize(self, synapses):
        distribution = self.parameter('distribution', 'uniform(0.0,1.0)')  # ones
        density = self.parameter('density', 1.0)

        synapses.W = synapses.matrix(distribution, density=density) * synapses.enabled

        #  self.remove_autapses = self.parameter('remove_autapses', False) and synapses.src == synapses.dst

        if self.parameter('normalize', True):
            for i in range(10):
                synapses.W /= np.sum(synapses.W, axis=1)[:, None]
                synapses.W /= np.sum(synapses.W, axis=0)

            synapses.W *= self.parameter('nomr_fac', 1.0)


    def iteration(self, synapses):
        return
        #  if self.remove_autapses:
        #    np.fill_diagonal(synapses.W, 0.0)