def get_steady_state(net): lab_manager.reset_lab(net) f, initial_conditions, _ = lab_manager.set_up_lab(net) total_time = 100. # step 4: run the lab and gather data time_sampled_range = [total_time] data = lab_manager.run_lab(f, initial_conditions, time_sampled_range) return data[-1, :]
def get_data(delta_time): """Return the integration solution.""" # step 2: design an experiment T0 = 250. TIME_DELAY = delta_time ex.delay_pulses_on_layer_0_and_1(net, t0s=[T0, T0 + TIME_DELAY], i_max=55., w=1.0) # step 3: ask our lab manager to set up the lab for the experiment f, initial_conditions, neuron_inds = lm.set_up_lab(net) # step 4: run the lab and gather data data = lm.run_lab(f, initial_conditions, time_sampled_range, integrator='dopri5') return data
def stdp_expt(net, dt, ics): # please put a 1-1 network def sigmoid(x): return 1. / (1. + np.exp(-x)) lab_manager.reset_lab(net) dts = [dt] experiments.delay_pulses_on_layer_0_and_1(net, [50., 50 + dt]) # step 3: ask our lab manager to set up the lab for the experiment. f, _, _ = lab_manager.set_up_lab(net) ii = 0 for edge in net.edges: n1, n2 = edge syn = net[n1][n2]["synapse"] ii = syn.ii # step 4: run the lab and gather data total_time = 100. time_sampled_range = np.arange(0., total_time, 0.1) data = lab_manager.run_lab(f, initial_conditions, time_sampled_range) #print(ii) dw = sigmoid(data[-1, ii]) - sigmoid(data[0, ii]) return dw, data
def get_stdp_profile(Neuron, Synapse, initial_conditions): Neuron = get_InsulatedNeuron(Neuron) # run stdp experiment stdp_time_range = np.arange(-40, 40, 2) stdp_data = np.empty_like(stdp_time_range) for i, dt in enumerate(stdp_time_range): stdp_data[i], _ = stdp_expt(net, dt, initial_conditions) plt.figure() plt.plot(stdp_time_range, stdp_data, marker="o") plt.grid() # verify get_stdp_profile(Neuron, Synapse, initial_conditions) # A experiment with pulse train Neuron, Synapse = nm.HHNeuronWithCaJL, nm.PlasticNMDASynapseWithCaJL neuron_nums = [1, 1] net = networks.get_multilayer_fc(Neuron, Synapse, neuron_nums) total_time = 1000. time_sampled_range = np.arange(0., total_time, 0.1) f, _, _ = lab_manager.set_up_lab(net) t0s = np.arange(0, 1000, 50) experiments.pulse_train_on_layer(net, 0, t0s, i_max=50.) data = lab_manager.run_lab(f, initial_conditions, time_sampled_range) lab_manager.show_all_neuron_in_layer(time_sampled_range, data, net, 0) lab_manager.show_all_neuron_in_layer(time_sampled_range, data, net, 1) lab_manager.show_all_synaspe_onto_layer(time_sampled_range, data, net, 1)
#AL = net.create_AL_man(nm.LN, nm.PN_2, nm.Synapse_gaba_LN, nm.Synapse_nAch_PN_2) #Set up the experiment num_layers = 2 #The value of the input current is 400 pA val = 250 #nA #val = 400 #These are the neuron indicies within each layer which receive the current neuron_inds = [[0, 1], [1, 3]] current_vals = [[val, val], [val, val]] # Set up the experiment with a constant input current ex.const_current(AL, num_layers, neuron_inds, current_vals) #set up the lab f, initial_conditions, neuron_inds = lm.set_up_lab(AL) #run for specified time with dt time_len = 1000.0 #Run for 600 ms dt = 0.02 # Integration time step 0.02 ms time_sampled_range = np.arange(0., time_len, dt) # Run the lab and get output data = lm.run_lab(f, initial_conditions, time_sampled_range, integrator='dopri5', compile=True) #save PN data for analysis V_vec = []
net, base_rate, i_max=i_max, num_sniffs=num_sniffs, time_per_sniff=time_per_sniff) # # for more than two pre-synaptic neurons, use the following instead # ex.feed_gaussian_rate_poisson_spikes_DL( # net, base_rate, i_max=i_max, num_sniffs=num_sniffs, # time_per_sniff=time_per_sniff) # periodic # total_time = 1000 # i_max=100. # base_rate = 0.01 # ratio = 0.95 # ex.feed_periodic_spikes(net, base_rate, ratio, total_time, i_max) # step 3: ask our lab manager to set up the lab for the experiment. f, initial_conditions, _ = lm.set_up_lab(net) # step 4: run the lab and gather data time_sampled_range = np.arange(0., total_time, 0.1) data = lm.run_lab(f, initial_conditions, time_sampled_range) # Time to witness some magic for layer_idx in range(len(net.layers)): lm.show_all_neuron_in_layer( time_sampled_range, data, net, layer_idx) for layer_idx in range(len(net.layers)): lm.show_all_dendrite_onto_layer( time_sampled_range, data, net, layer_idx, delta_time=None)
nm.PlasticNMDASynapseWithCaJL, neuron_nums) networks.draw_layered_digraph(net) # step 2: design an experiment. (Fixing input currents really) #experiments.delay_pulses_on_layer_0_and_1(net) i_max = 50. num_sniffs = 5 time_per_sniff = 200. total_time = num_sniffs * time_per_sniff base_rate = 0.05 experiments.feed_gaussian_rate_poisson_spikes(net, base_rate, i_max=i_max, num_sniffs=num_sniffs, time_per_sniff=time_per_sniff) # step 3: ask our lab manager to set up the lab for the experiment. f, initial_conditions, _ = lab_manager.set_up_lab(net) # step 4: run the lab and gather data time_sampled_range = np.arange(0., total_time, 0.1) data = lab_manager.run_lab(f, initial_conditions, time_sampled_range) # Time to witness some magic #lab_manager.sample_plot(time_sampled_range, data, net) for layer_idx in range(len(net.layers)): lab_manager.show_all_neuron_in_layer(time_sampled_range, data, net, layer_idx) lab_manager.show_all_synaspe_onto_layer(time_sampled_range, data, net, layer_idx)