Exemple #1
0
     # initialize synapses
     name__s = 'input_synapse__{:d}_{:d}'.format(num_id,pp)
     synapse_1 = synapse(name__s, integration_loop_temporal_form = 'exponential', integration_loop_time_constant = tau_si_vec[ii], 
                         integration_loop_self_inductance = 50e-9, integration_loop_output_inductance = 200e-12, 
                         synaptic_bias_current = I_sy_vec[kk], integration_loop_bias_current = 31e-6,
                         input_signal_name = name__i)
     
     input_synapses.append(name__s)
     coupling_factor = -0.0375*num_synapses+0.5375
     input_inductances.append([10e-12,coupling_factor])
 
 #initialize neuron
 input_inductances.append([10e-12,0.5])
 name__n = 'rate_encoding_neuron__{:d}'.format(num_id)
 neuron_1 = neuron(name__n, input_synaptic_connections = input_synapses, input_synaptic_inductances = input_inductances,
                   thresholding_junction_critical_current = 40e-6, thresholding_junction_bias_current = 35e-6, 
                   refractory_temporal_form = 'exponential', refractory_time_constant = tau_ref_vec[qq], 
                   refractory_loop_self_inductance = 10e-9, refractory_loop_output_inductance = 200e-12)
        
 # propagate in time                         
 sim_params = dict()
 sim_params['dt'] = dt
 sim_params['pre_observation_duration'] = num_tau_sim*synapse_1.time_constant
 sim_params['observation_duration'] = observation_duration
 sim_params['num_tau_sim'] = num_tau_sim
 neuron_1.sim_params = sim_params
 neuron_1.run_sim()
 
 # plot temporal response
 # plot_save_string = 'I_sy={:2.2f}uA__tau_si={:04.2f}ns__tau_ref={:04.2f}ns__rate_in={:04.2f}MHz__dt={:04.2f}ns__obs={:04.2f}us__jitter={}ns'.format(1e6*I_sy_vec[kk],1e9*tau_si_vec[ii],1e9*tau_ref_vec[qq],1e-6*rate_vec[jj],1e9*dt,observation_duration*1e6,jitter_params[1])
 # neuron_1.plot_receiving_loop_current(plot_save_string)            
 # neuron_1.plot_spike_train(plot_save_string)
                synaptic_dendrite_circuit_inductances=[0, 20, 200, 77.5],
                synaptic_dendrite_input_synaptic_inductance=[20, 1],
                junction_critical_current=40,
                bias_currents=[I_de, 36, 35],
                integration_loop_self_inductance=L_di,
                integration_loop_output_inductance=0,
                integration_loop_time_constant=tau_di)

            ne = neuron('ne',
                        input_synaptic_connections=['sy'],
                        input_synaptic_inductances=[[20, 1]],
                        junction_critical_current=40,
                        circuit_inductances=[0, 0, 200, 77.5],
                        refractory_loop_circuit_inductances=[0, 20, 200, 77.5],
                        refractory_time_constant=50,
                        refractory_thresholding_junction_critical_current=40,
                        refractory_loop_self_inductance=775,
                        refractory_loop_output_inductance=100,
                        refractory_bias_currents=[74, 36, 35],
                        refractory_receiving_input_inductance=[20, 1],
                        neuronal_receiving_input_refractory_inductance=[20, 1],
                        integration_loop_time_constant=25,
                        time_params=dict([['dt', dt], ['tf', tf]]))

            ne.run_sim()

            actual_data__drive = np.vstack(
                (ne.time_vec[:], ne.synapses['sy'].I_spd2_vec[:]))
            if ii == 0 and jj == 0 and kk == 0:
                error__drive = chi_squared_error(target_data__drive,
                                                 actual_data__drive)
Exemple #3
0
            thresholding_junction_critical_current=40,
            bias_currents=[72, 36, 35],
            integration_loop_self_inductance=L_di,
            integration_loop_output_inductance=0,
            integration_loop_temporal_form='exponential',
            integration_loop_time_constant=tau_di)

        time_params = dict()
        time_params['dt'] = dt
        time_params['tf'] = tf
        neuron_1 = neuron(
            name='dummy_neuron',
            input_dendritic_connections=['dendrite_under_test'],
            circuit_inductances=[0, 0, 200, 77.5],
            input_dendritic_inductances=[[20, 1]],
            refractory_loop_circuit_inductances=[0, 2, 200, 77.5],
            refractory_time_constant=50,
            refractory_thresholding_junction_critical_current=40,
            refractory_loop_self_inductance=775,
            refractory_loop_output_inductance=100,
            refractory_bias_currents=[74, 36, 35],
            refractory_receiving_input_inductance=[20, 1],
            neuronal_receiving_input_refractory_inductance=[20, 1],
            time_params=time_params)

        neuron_1.run_sim()
        dendrite_1.time_vec = neuron_1.time_vec
        dendrite_1.I_di = neuron_1.dendrites['dendrite_under_test'].I_di_vec

        plot_dendritic_integration_loop_current(dendrite_1)
Exemple #4
0
neuron_1 = neuron(
    'ne',
    num_jjs=2,
    circuit_inductances=[10e-12, 0e-12, 200e-12, 77.5e-12],
    input_synaptic_connections=['sy'],
    input_synaptic_inductances=[[10e-12, 1]],
    thresholding_junction_critical_current=40e-6,
    bias_currents=[76e-6, 36e-6, 35e-6],
    integration_loop_self_inductance=775e-12,
    integration_loop_output_inductances=[
        [400e-12, 1], [300e-12, 1]
    ],  # first is to drive latching JJ, second is to drive refractory dendrite; both are of the form [L_self,k]
    integration_loop_temporal_form='exponential',
    integration_loop_time_constant=5e-9,
    refractory_temporal_form='exponential',
    refractory_time_constant=10e-9,
    refractory_thresholding_junction_critical_current=40e-6,
    refractory_loop_self_inductance=775e-12,
    refractory_loop_output_inductance=200e-12,
    refractory_loop_circuit_inductances=[0e-12, 20e-12, 200e-12, 77.5e-12],
    refractory_bias_currents=[72e-6, 36e-6, 35e-6],
    neuronal_receiving_input_refractory_inductance=[20e-12, 1],
    homeostatic_temporal_form='exponential',
    homeostatic_time_constant=10e-9,
    homeostatic_thresholding_junction_critical_current=40e-6,
    homeostatic_loop_self_inductance=775e-12,
    homeostatic_loop_output_inductance=200e-12,
    homeostatic_loop_circuit_inductances=[20e-12, 20e-12, 200e-12, 77.5e-12],
    homeostatic_bias_currents=[71.5e-6, 36e-6, 35e-6],
    neuronal_receiving_input_homeostatic_inductance=[20e-12, 1],
    time_params=time_params)
    integration_loop_time_constant=tau_si)

#%% neuron

neuron_1 = neuron(
    name='ne',
    num_jjs=4,
    input_synaptic_connections=['sy'],
    input_synaptic_inductances=[[20e-12, 1]],
    junction_critical_current=40e-6,
    bias_currents=[76e-6, 36e-6, 35e-6],
    circuit_inductances=[0e-12, 0e-12, 200e-12, 77.5e-12],
    refractory_dendrite_num_jjs=4,
    refractory_loop_circuit_inductances=[0e-12, 20e-12, 200e-12, 77.5e-12],
    refractory_time_constant=25e-9,
    refractory_junction_critical_current=40e-6,
    refractory_loop_self_inductance=200e-12,
    refractory_loop_output_inductance=100e-12,
    refractory_bias_currents=[76e-6, 36e-6, 35e-6],
    refractory_receiving_input_inductance=[20e-12, 1],
    neuronal_receiving_input_refractory_inductance=[20e-12, 1],
    integration_loop_self_inductance=0,
    integration_loop_time_constant=25e-9,
    integration_loop_output_inductances=[
        [0e-12, 1], [100e-12, 1]
    ],  # first is to drive latching JJ, second is to drive refractory dendrite; both are of the form [L_self,k]
    time_params=dict([['dt', dt], ['tf', tf]]))

neuron_1.run_sim()

#%% plot
Exemple #6
0
                     integration_loop_self_inductance = L_si,
                     integration_loop_output_inductance = L_msi,
                     integration_loop_time_constant = tau_si)
 
 threshold_circuit = 'hTron'
 
 if threshold_circuit == 'JJ':
     
     ne = neuron(name = 'ne', num_jjs = num_jjs__ne,
                       input_synaptic_connections = ['sy'],
                       input_synaptic_inductances = [[20,1]], # pH
                       junction_critical_current = 40, # uA
                       bias_currents = [I_ne,36,35], # uA
                       circuit_inductances = [0,0,200,77.5], # pH
                       integration_loop_self_inductance = L_ni,
                       integration_loop_time_constant = tau_nf,
                       integration_loop_output_inductance = [400,1], # pH # inductor going into MI feeding threshold circuit [L,k]  
                       neuronal_receiving_input_refractory_inductance = [20,1], # pH
                       threshold_circuit_inductances = [10,0,20], # pH
                       threshold_circuit_resistance = 0.8, # mOhm
                       threshold_circuit_bias_current = 35, # uA
                       threshold_junction_critical_current = 40, # uA
                       time_params = dict([['dt',dt],['tf',time_vec__wr[-1]]])) 
     ne.run_sim()
 
 elif threshold_circuit == 'hTron':
     
     ne = neuron(name = 'ne', num_jjs = num_jjs__ne,
                       input_synaptic_connections = ['sy'],
                       input_synaptic_inductances = [[20,1]], # pH
                       junction_critical_current = 40, # uA
        synapse_1 = synapse(name__s,
                            loop_temporal_form='exponential',
                            time_constant=tau_si_vec[ii],
                            integration_loop_self_inductance=50e-9,
                            integration_loop_output_inductance=200e-12,
                            synaptic_bias_current=37e-6,
                            loop_bias_current=31e-6)
        # print('synapse time constant = {}'.format(synapse_1.time_constant))

        #initialize neuron
        name__n = 'rate_encoding_neuron__{}'.format(ii * len(rate_vec) + jj)
        neuron_1 = neuron(name__n,
                          input_connections={name__s},
                          input_inductances=[[10e-12, 0.5], [10e-12, 0.5]],
                          thresholding_junction_critical_current=40e-6,
                          threshold_bias_current=35e-6,
                          refractory_temporal_form='exponential',
                          refractory_time_constant=50e-9,
                          refractory_loop_self_inductance=10e-9,
                          refractory_loop_output_inductance=200e-12)

        #propagate in time
        t1 = t0 + num_tau_sim * synapse_1.time_constant
        tf = t1 + observation_duration
        time_vec = np.arange(t0, tf + dt, dt)
        synapse_1.input_spike_times = np.arange(5e-9, tf + dt,
                                                isi_input_vec[jj])
        neuron_1.run_sim(time_vec)
        # neuron_1.plot_receiving_loop_current(time_vec)

        #calculate output rate in various ways by looking at spikes in observation_duration
Exemple #8
0
# synapse_1.synaptic_bias_current = 35e-6
# synapse_1.run_sim(time_vec)
# synapse_1.plot_integration_loop_current(time_vec)

# synapse_1.synaptic_bias_current = 39e-6
# synapse_1.run_sim(time_vec)
# synapse_1.plot_integration_loop_current(time_vec)

#%% set up neuron

neuron_1 = neuron('test_neuron',
                  input_connections={'s0', 's1'},
                  input_inductances=[[10e-12, 0.5], [10e-12, 0.5],
                                     [10e-12, 0.5]],
                  thresholding_junction_critical_current=40e-6,
                  threshold_bias_current=35e-6,
                  refractory_temporal_form='exponential',
                  refractory_loop_self_inductance=1e-9,
                  refractory_loop_output_inductance=200e-12)

# for obj in neuron.get_instances():
#     print(obj.name)

# for obj in synapse.get_instances():
#     # print(obj.name)
#     if obj.unique_label in neuron_1.input_connections:
#         print(obj.unique_label+'; '+obj.name)

#%% propagate in time
t0 = 0
Exemple #9
0
                            integration_loop_temporal_form='exponential',
                            integration_loop_time_constant=tau_si_vec[jj],
                            integration_loop_self_inductance=10e-9,
                            integration_loop_output_inductance=200e-12,
                            synaptic_bias_current=I_sy,
                            integration_loop_bias_current=31e-6,
                            input_signal_name=name__i)

        #initialize neuron
        name__n = 'bursting_neuron__{:d}_{:d}'.format(ii, jj)
        neuron_1 = neuron(name__n,
                          input_synaptic_connections=[name__s],
                          input_synaptic_inductances=[[10e-12, 0.5],
                                                      [10e-12, 0.5]],
                          thresholding_junction_critical_current=40e-6,
                          thresholding_junction_bias_current=I_th,
                          refractory_temporal_form='exponential',
                          refractory_time_constant=tau_ref_vec[ii],
                          refractory_loop_self_inductance=2e-9,
                          refractory_loop_output_inductance=200e-12,
                          refractory_loop_synaptic_bias_current=39e-6,
                          refractory_loop_saturation_current=50e-6)

        # propagate in time
        sim_params = dict()
        sim_params['dt'] = dt
        sim_params['pre_observation_duration'] = 0
        sim_params['observation_duration'] = observation_duration
        neuron_1.sim_params = sim_params
        neuron_1.run_sim()

        # plot temporal response