diff --git a/figures/SchueckerSchmidt2017/Fig2_EE_example_1D_data.py b/figures/SchueckerSchmidt2017/Fig2_EE_example_1D_data.py new file mode 100644 index 0000000000000000000000000000000000000000..326500f2e2e7cbdf3a8bd6d0cf47943363af3318 --- /dev/null +++ b/figures/SchueckerSchmidt2017/Fig2_EE_example_1D_data.py @@ -0,0 +1,198 @@ +import os +import pylab as pl +import numpy as np +from plotcolors import myred, myblue +from matplotlib.colors import ListedColormap +from multiarea_model.theory import Theory +from multiarea_model.theory_helpers import nu0_fb +from multiarea_model.default_params import single_neuron_dict +from multiarea_model.multiarea_helpers import convert_syn_weight + + +class network: + def __init__(self, params, theory_spec): + self.label = '1D' + self.params = {'input_params': params['input_params'], + 'neuron_params': {'single_neuron_dict': single_neuron_dict}, + 'connection_params': {'replace_cc': None, + 'replace_cc_input_source': None} + } + + self.add_DC_drive = np.zeros(1) + self.structure = {'A': {'E'}} + self.structure_vec = ['A-E'] + self.area_list = ['A'] + self.K_matrix = np.array([[params['K'], params['K']]]) + self.W_matrix = np.array([[params['W'], params['W']]]) + self.J_matrix = convert_syn_weight(self.W_matrix, + self.params['neuron_params']['single_neuron_dict']) + + self.theory = Theory(self, theory_spec) + + + def Phi(self, rate): + mu, sigma = self.theory.mu_sigma(rate) +# print(mu, sigma) + NP = self.params['neuron_params']['single_neuron_dict'] + return nu0_fb(mu, sigma, + 1.e-3*NP['tau_m'], + 1.e-3*NP['tau_syn_ex'], + 1.e-3*NP['t_ref'], + NP['V_th'] - NP['E_L'], + NP['V_reset'] - NP['E_L']) + + +""" +space showing bifurcation +""" + +rate_exts_array = np.arange(150., 170.1, 1.) + +network_params = {'K': 105., + 'W': 40.} +theory_params = {'T': 20., + 'dt': 0.01} + + +# for i, rate_ext in enumerate(rate_exts_array): +# input_params = {'rate_ext': rate_ext} +# network_params.update({'input_params': input_params}) + +# net = network(network_params, theory_params) +# r = net.theory.integrate_siegert()[1][:, -1] +# print(r) + +# x = np.arange(0, 30., 0.02) +# for i, rate_ext in enumerate([150., 160., 170.]): +# input_params = {'rate_ext': rate_ext} +# network_params.update({'input_params': input_params}) +# net = network(network_params, theory_params) +# y = np.fromiter([net.Phi(xi) for xi in x], dtype=np.float) +# pl.plot(x, y) + +# pl.savefig('Fig2_EE_example_1D_data.eps') + + +fig = pl.figure() +x = np.arange(0, 30., 0.02) +# x = [30.] +K = [26.25, 52.5, 105., 210., 420.] +W = [160., 80., 40., 20., 10.] +rate_ext = 150. +for k, w in zip(K, W): + input_params = {'rate_ext': rate_ext} + network_params.update({'input_params': input_params, + 'K': k, + 'W': w}) + net = network(network_params, theory_params) + y = np.fromiter([net.Phi(xi) for xi in x], dtype=np.float) + pl.plot(x, y) + +# for i, dic in enumerate(mfp.par_list(PS)): +# print(dic) +# para_dic, label = mfp.hashtag(dic) +# mf = meanfield_multi(para_dic, label) +# inits = np.arange(0, 50, 10) +# Fps = [] +# for init in inits: +# solution = mf.fsolve([init, init]) +# if solution['eps'] == 'The solution converged.': +# Fps.append(mf.fsolve([init, init])['rates'][0]) +# Fps = np.unique(np.round(Fps, decimals=2)) +# Fps_array.append(Fps) + +# h5.add_to_h5('mf_data.h5', {'EE_example': { +# 'Fps_array': Fps_array}}, 'a', overwrite_dataset=True) + + +# rate_exts_array = np.arange(150., 170.1, 10.) +# rate_exts = np.array([[x, x] for x in rate_exts_array]) +# PS = para.ParameterSpace({ # 'g': para.ParameterRange(np.arange(-3.5,-3.0,0.1)), +# 'g': 1., +# 'rate': para.ParameterRange(rate_exts), +# 'model': 'Brunel', +# 'gamma': 1., +# 'rates_init_int': np.array([80, 80]), +# 'W': 0.01, +# 'K': 210., +# }) +# print(PS) +# cmap = pl.get_cmap('Greys_r') + + +# ################## rate instability ############### + +# x = np.arange(0, 150, 1.0) +# x_long = np.arange(0, 10000, 10.0) +# NUM_COLORS = len(mfp.par_list(PS)) + + +# for i, dic in enumerate(mfp.par_list(PS)): +# para_dic, label = mfp.hashtag(dic) +# mf = meanfield_multi(para_dic, label) +# dic_refrac = copy.deepcopy(dic) +# dic_refrac.update({'tau_refrac': 0}) +# para_dic_refrac, label_refrac = mfp.hashtag(dic_refrac) +# mf_refrac = meanfield_multi(para_dic_refrac, label_refrac) +# t = [mf.Phi(np.array([xval, xval]), return_leak=False) for xval in x] +# t_noisefree = [mf.Phi_noisefree(np.array([xval, xval])) for xval in x] +# t_refrac = [mf_refrac.Phi(np.array([xval, xval]), +# return_leak=False) for xval in x] + +# t_long = [mf.Phi(np.array([xval, xval]), return_leak=False) +# for xval in x_long] +# h5.add_to_h5('mf_data.h5', {'EE_example': {label: {'t': t, 't_noisefree': t_noisefree, +# 't_long': t_long, 't_refrac': t_refrac}}}, 'a', overwrite_dataset=True) + +# ########################## Stabilization ################ + +# x = np.arange(0., 50., 0.1) +# rate = 160. +# start = 17.0 +# drate = 1. + +# dic = { # 'g': para.ParameterRange(np.arange(-3.5,-3.0,0.1)), +# 'g': 1., +# 'rate': np.array([rate, rate]), +# 'model': 'Brunel', +# 'gamma': 1., +# 'W': 0.01, +# 'K': 210., +# } + +# ######### base state ########## + +# para_dic, mf_label = mfp.hashtag(dic) +# mf = meanfield_multi(para_dic, mf_label) +# res_la_base = mf.fsolve(np.ones(2) * start) +# res_in_base = mf.fsolve(np.ones(2) * start) +# print('res', res_la_base) +# t = [mf.Phi(np.array([xval, xval])) for xval in x] +# savedic = {'res_la_base': res_la_base, 'res_in_base': res_in_base, 't': t} +# h5.add_to_h5('mf_data.h5', {'EE_example': { +# mf_label: savedic}}, 'a', overwrite_dataset=True) + +# ######## increased rate ####### + +# dic.update({'rate': np.array([rate + drate, rate + drate])}) +# para_dic, mf_label = mfp.hashtag(dic) +# mf_2 = meanfield_multi(para_dic, mf_label) +# res_in_2 = mf_2.fsolve(np.ones(2) * start) +# t_2 = [mf_2.Phi(np.array([xval, xval])) for xval in x] +# savedic = {'res_in_2': res_in_2, 't_2': t_2} +# h5.add_to_h5('mf_data.h5', {'EE_example': { +# mf_label: savedic}}, 'a', overwrite_dataset=True) + +# ####### stabilized ####### + +# matrix_prime, v, shift, delta = mft.stabilize( +# mf, mf_2, fixed_point=res_la_base['rates'][0], method='least_squares') +# print('1D K_prime', matrix_prime) +# dic.update({'K_stable': matrix_prime}) +# para_dic, mf_label = mfp.hashtag(dic) +# mf_s = meanfield_multi(para_dic, mf_label) +# res_in_s = mf_s.fsolve(np.ones(2) * start) +# t_s = [mf_s.Phi(np.array([xval, xval])) for xval in x] +# savedic = {'res_in_s': res_in_s, 't_s': t_s} +# h5.add_to_h5('mf_data.h5', {'EE_example': { +# mf_label: savedic}}, 'a', overwrite_dataset=True)