コード例 #1
0
    def __init__(self,
                 source=None,
                 target=None,
                 nsyn=None,
                 delays=0,
                 weights=None,
                 delay_queue=None,
                 metadata={},
                 **kwargs):

        self.source_gid_or_population = source
        self.target_gid_or_population = target

        # Used for jumping off point for making a matched nest simulation:
        self.original_weights = weights
        self.original_delays = delays

        self.nsyn = nsyn
        self.synaptic_weight_distribution = util.discretize_if_needed(weights)
        self.weights, self.probs = self.synaptic_weight_distribution.xk, self.synaptic_weight_distribution.pk

        self.delay_distribution = util.discretize_if_needed(delays)
        self.delay_vals, self.delay_probs = self.delay_distribution.xk, self.delay_distribution.pk
        self.delay_queue_initial_condition = delay_queue

        util.check_metadata(metadata)
        self.metadata = metadata

        # Defined at runtime:
        self.delay_queue = None
        self.delay_ind = None
        self.simulation = None

        for key in kwargs.keys():
            assert key in ['class']
コード例 #2
0
ファイル: connection.py プロジェクト: nicain/dipde_dev
    def __init__(self,
                 source=None,
                 target=None,
                 nsyn=None,
                 delays=0,
                 weights=None,
                 delay_queue=None,
                 metadata={},
                 **kwargs):

        self.source_gid_or_population = source
        self.target_gid_or_population = target
        
        # Used for jumping off point for making a matched nest simulation:
        self.original_weights = weights
        self.original_delays = delays
        
        self.nsyn_input = nsyn
        self.synaptic_weight_distribution = util.discretize_if_needed(weights)
        self.weights, self.probs = self.synaptic_weight_distribution.xk, self.synaptic_weight_distribution.pk

        self.delay_distribution = util.discretize_if_needed(delays)
        self.delay_vals, self.delay_probs = self.delay_distribution.xk, self.delay_distribution.pk
        self.delay_queue_initial_condition = delay_queue

        util.check_metadata(metadata)
        self.metadata = metadata

        # Defined at runtime:
        self.delay_queue = None
        self.delay_ind = None
        self.simulation = None
        
        for key in kwargs.keys():
            assert key in ['class']
コード例 #3
0
    def initialize_edges(self):
        '''Initialize self.edges and self.leak_flux_matrix attributes.
        
        This method initializes the self.edges attribute based on the v_min,
        v_max, and dv settings, and creates a corresponding leak flux matrix
        based on this voltage discretization.
        '''

        # Voltage edges and leak matrix construction
        self.tau_m = util.discretize_if_needed(self.tau_m)
        if np.sum(self.tau_m.xk <= 0) > 0:
            raise Exception('Negative tau_m values detected: %s' % self.tau_m.xk) # pragma: no cover
        
        
        
        
        
        
        # Voltage edges and leak matrix construction
        self.edges = util.get_v_edges(self.v_min, self.v_max, self.dv)
 
        # Different leak matrices for different solvers:
        self.leak_flux_matrix_dict = {}
        self.leak_flux_matrix_dict['dense'] = util.leak_matrix(self.edges, self.tau_m) 
        
        # Backward Euler sparse:
        lfm_csrbe = sps.eye(np.shape(self.leak_flux_matrix_dict['dense'])[0], format='csr') - self.simulation.dt*self.leak_flux_matrix_dict['dense']
        M_I, M_J = np.where(np.array(lfm_csrbe) != 0) 
        M_val = lfm_csrbe[M_I, M_J]
        self.leak_flux_matrix_dict['sparse'] = (M_I, M_J, M_val)
コード例 #4
0
    def initialize_edges(self):
        '''Initialize self.edges and self.leak_flux_matrix attributes.
        
        This method initializes the self.edges attribute based on the v_min,
        v_max, and dv settings, and creates a corresponding leak flux matrix
        based on this voltage discretization.
        '''

        # Voltage edges and leak matrix construction
        self.tau_m = util.discretize_if_needed(self.tau_m)
        if np.sum(self.tau_m.xk <= 0) > 0:
            raise Exception('Negative tau_m values detected: %s' %
                            self.tau_m.xk)  # pragma: no cover

        # Voltage edges and leak matrix construction
        self.edges = util.get_v_edges(self.v_min, self.v_max, self.dv)

        # Different leak matrices for different solvers:
        self.leak_flux_matrix_dict = {}
        self.leak_flux_matrix_dict['dense'] = util.leak_matrix(
            self.edges, self.tau_m)

        # Backward Euler sparse:
        lfm_csrbe = sps.eye(
            np.shape(self.leak_flux_matrix_dict['dense'])[0], format='csr'
        ) - self.simulation.dt * self.leak_flux_matrix_dict['dense']
        M_I, M_J = np.where(np.array(lfm_csrbe) != 0)
        M_val = lfm_csrbe[M_I, M_J]
        self.leak_flux_matrix_dict['sparse'] = (M_I, M_J, M_val)
コード例 #5
0
    def initialize_edges(self):
        '''Initialize self.edges and self.leak_flux_matrix attributes.
        
        This method initializes the self.edges attribute based on the v_min,
        v_max, and dv settings, and creates a corresponding leak flux matrix
        based on this voltage discretization.
        '''

        # Voltage edges and leak matrix construction
        self.tau_m = util.discretize_if_needed(self.tau_m)
        if np.sum(self.tau_m.xk <= 0) > 0:
            raise Exception('Negative tau_m values detected: %s' % self.tau_m.xk) # pragma: no cover
        self.edges = util.get_v_edges(self.v_min, self.v_max, self.dv)
        self.leak_flux_matrix = util.leak_matrix(self.edges, self.tau_m)
コード例 #6
0
    def initialize_probability(self):
        '''Initialize self.pv to delta-distribution at v=0.'''

        self.p0 = util.discretize_if_needed(self.p0)
        self.pv = util.get_pv_from_p0(self.p0, self.edges)
        util.assert_probability_mass_conserved(self.pv, 1e-15)
コード例 #7
0
def test_continuous_no_N():
    discretize_if_needed(sps.norm(loc=2, scale=1.5))
コード例 #8
0
def test_dist_json_delta():
    discretize_if_needed(json.dumps({'distribution':'delta', 'loc':.5}))
コード例 #9
0
def test_discrete_rv():
    test_dist = discretize_if_needed(sps.rv_discrete(values=(.02, 1)))
コード例 #10
0
def test_dist_xk_pk_off_by_one():
    discretize_if_needed(((0,1,2,3),(.5,.25,.25)))
コード例 #11
0
def test_dist_specified():
    discretize_if_needed(((0,1,2,3),(.25,.25,.25,.25)))
コード例 #12
0
def test_discrete_rv():
#     sps.rv_discrete(values=([.02],[1]), )
    discretize_if_needed(sps.rv_discrete(values=([.02],[1])))
コード例 #13
0
def test_scalar():
    discretize_if_needed(.02)
コード例 #14
0
def test_continuous_N():
    test_dist = discretize_if_needed((sps.norm(loc=2, scale=1.5), 25))
コード例 #15
0
def test_dist_dict_delta():
    discretize_if_needed({'distribution':'delta', 'loc':.5})
コード例 #16
0
    def initialize_probability(self):
        '''Initialize self.pv to delta-distribution at v=0.'''

        self.p0 = util.discretize_if_needed(self.p0)
        self.pv = util.get_pv_from_p0(self.p0, self.edges)
        util.assert_probability_mass_conserved(self.pv, 1e-15)
コード例 #17
0
def test_scalar():
    test_dist = discretize_if_needed(.02)