예제 #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
    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 __init__(self,
                 firing_rate,
                 rank=0,
                 record=False,
                 firing_rate_record=[],
                 t_record=[],
                 metadata={},
                 **kwargs):

        self.rank = 0
        if isinstance(firing_rate, str):
            self.firing_rate_string = str(firing_rate)
            self.closure = lambdify(sym_t,
                                    symp.parse_expr(self.firing_rate_string))
        elif isinstance(firing_rate, (types.FunctionType, RequestFiringRate)):
            self.closure = firing_rate
        else:
            self.firing_rate_string = str(firing_rate)
            self.closure = lambdify(sym_t,
                                    symp.parse_expr(self.firing_rate_string))

        self.firing_rate_record = [x for x in firing_rate_record]
        self.t_record = [x for x in t_record]
        assert len(self.firing_rate_record) == len(self.t_record)

        self.record = record
        util.check_metadata(metadata)
        self.metadata = metadata

        for key in kwargs.keys():
            assert key in ['class', 'module']
예제 #4
0
    def __init__(self, rank=0,
                       tau_m={'distribution':'delta', 'loc':0.02},
                       v_min=-.1,
                       v_max=.02,
                       dv=.0001,
                       record=True,
                       initial_firing_rate=0.0,
                       update_method='approx',
                       approx_order=None,
                       tol=1e-14,
                       norm=np.inf,
                       p0={'distribution':'delta', 'loc':0.},
                       metadata={},
                       firing_rate_record=[],
                       t_record=[],
                       update_callback=lambda s:None, 
                       initialize_callback=lambda s:None,
                       **kwargs):
        
        # Store away inputs:
        self.rank = 0
        self.tau_m = tau_m
        self.p0 = p0
        self.v_min = v_min
        self.v_max = v_max
        self.dv = dv
        self.record = record
        self.curr_firing_rate = initial_firing_rate
        self.update_method = update_method
        self.approx_order = approx_order
        self.norm = norm
        self.update_callback = update_callback
        self.initialize_callback = initialize_callback
        self.firing_rate_record = [x for x in firing_rate_record]
        self.t_record = [x for x in t_record]
        assert len(self.firing_rate_record) == len(self.t_record)
        if tol is None:
            if self.update_method == 'gmres':
                self.tol = 1e-5
            else:
                self.tol = 1e-12
        else:
            self.tol = tol

        # Additional metadata:
        util.check_metadata(metadata)
        self.metadata = metadata
        
        # Defined in initialization:
        self.edges = None
        self.pv = None
        self.leak_flux_matrix = None
        
        for key in kwargs.keys():
            assert key in ['class', 'module']
예제 #5
0
    def __init__(self, rank=0,
                       tau_m={'distribution':'delta', 'weight':0.02},
                       v_min=-.1,
                       v_max=.02,
                       dv=.0001,
                       record=True,
                       initial_firing_rate=0.0,
                       update_method='approx',
                       approx_order=None,
                       tol=1e-12,
                       norm=np.inf,
                       p0={'distribution':'delta', 'weight':0.},
                       metadata={},
                       firing_rate_record=[],
                       t_record=[],
                       update_callback=lambda s:None, 
                       initialize_callback=lambda s:None,
                       **kwargs):
        
        # Store away inputs:
        self.rank = 0
        self.tau_m = tau_m
        self.p0 = p0 
        self.v_min = v_min
        self.v_max = v_max
        self.dv = dv
        self.record = record
        self.curr_firing_rate = initial_firing_rate
        self.update_method = update_method
        self.approx_order = approx_order
        self.tol = tol
        self.norm = norm
        self.update_callback = update_callback
        self.initialize_callback = initialize_callback
        self.firing_rate_record = [x for x in firing_rate_record]
        self.t_record = [x for x in t_record]
        assert len(self.firing_rate_record) == len(self.t_record)

        # Additional metadata:
        util.check_metadata(metadata)
        self.metadata = metadata
        
        # Defined in initialization:
        self.edges = None
        self.pv = None
        self.leak_flux_matrix = None
        
        for key in kwargs.keys():
            assert key in ['class', 'module']
예제 #6
0
    def __init__(self,
                 firing_rate,
                 rank=0,
                 record=False,
                 firing_rate_record=[],
                 t_record=[],
                 metadata={},
                 **kwargs):

        self.rank = 0
        if isinstance(firing_rate, str):
            self.firing_rate_string = str(firing_rate)
            self.closure = lambdify(
                sym_t,
                symp.parse_expr(self.firing_rate_string,
                                local_dict={
                                    'Heaviside':
                                    lambda x: Piecewise((0, x < 0), (1, x > 0),
                                                        (.5, True))
                                }))
        elif hasattr(firing_rate, "__call__"):
            self.closure = firing_rate
        else:
            self.firing_rate_string = str(firing_rate)
            self.closure = lambdify(
                sym_t,
                symp.parse_expr(self.firing_rate_string,
                                local_dict={
                                    'Heaviside':
                                    lambda x: Piecewise((0, x < 0), (1, x > 0),
                                                        (.5, True))
                                }))

        self.firing_rate_record = [x for x in firing_rate_record]
        self.t_record = [x for x in t_record]
        assert len(self.firing_rate_record) == len(self.t_record)

        self.record = record
        util.check_metadata(metadata)
        self.metadata = metadata

        for key in kwargs.keys():
            assert key in ['class', 'module']
예제 #7
0
    def __init__(self, firing_rate=None, rank=0,record=False, firing_rate_record=[], t_record=[], metadata={}, **kwargs):
        
        self.rank = 0
        if isinstance(firing_rate, str):
            self.firing_rate_string = str(firing_rate)
            self.closure = lambdify(sym_t,symp.parse_expr(self.firing_rate_string, local_dict={'Heaviside':lambda x: Piecewise((0,x<0), (1,x>0),(.5,True))}))
        elif hasattr(firing_rate, "__call__"):
            self.closure = firing_rate
        else:
            self.firing_rate_string = str(firing_rate)
            self.closure = lambdify(sym_t, symp.parse_expr(self.firing_rate_string, local_dict={
                'Heaviside': lambda x: Piecewise((0, x < 0), (1, x > 0), (.5, True))}))

        self.firing_rate_record = [x for x in firing_rate_record]
        self.t_record = [x for x in t_record]
        assert len(self.firing_rate_record) == len(self.t_record)


        self.record = record
        util.check_metadata(metadata)
        self.metadata = metadata
        
        for key in kwargs.keys():
            assert key in ['class', 'module']