def simulate(from_disk=0,
             kw={},
             net='Net_0',
             script_name=__file__.split('/')[-1][0:-3],
             setup=Setup(50,20) ):
    
    setup=Setup(50,20) 
    file_name = kw.get('file_name', dr.HOME_DATA+'/'+script_name)
    file_name_figs = kw.get('file_name_figs', dr.HOME_DATA+'/fig/'+script_name)
    
    sd=get_storage_list([net], file_name, '')[0]
    
    d={}
    if from_disk==0:
        print net
        dd={net:simulate_network(**kw)}
        dd=compute_attrs(dd, net, setup)
        save(sd, dd)
    
    if from_disk==1:
        filt= [net]+['gi','st', 'gi_st']+['spike_signal']
        dd = load(sd, *filt)
        pp(dd)
        dd=compute_attrs(dd, net, setup)
        save(sd, dd)
        
    elif from_disk==2:
        filt = [net]+['gi','st', 'gi_st']+['firing_rate', 'phases_diff_with_cohere'] 
        dd = load(sd, *filt)
    
    d = misc.dict_update(d, dd)

    return d, file_name_figs
示例#2
0
def simulate(from_disk=0,
             kw={},
             net='Net_0',
             script_name=__file__.split('/')[-1][0:-3],
             setup=Setup(50, 20)):

    setup = Setup(50, 20)
    file_name = kw.get('file_name', dr.HOME_DATA + '/' + script_name)
    file_name_figs = kw.get('file_name_figs',
                            dr.HOME_DATA + '/fig/' + script_name)

    sd = get_storage_list([net], file_name, '')[0]

    d = {}
    if from_disk == 0:
        print net
        dd = {net: simulate_network(**kw)}
        dd = compute_attrs(dd, net, setup)
        save(sd, dd)

    if from_disk == 1:
        filt = [net] + ['gi', 'st', 'gi_st'] + ['spike_signal']
        dd = load(sd, *filt)
        pp(dd)
        dd = compute_attrs(dd, net, setup)
        save(sd, dd)

    elif from_disk == 2:
        filt = [net] + ['gi', 'st', 'gi_st'
                        ] + ['firing_rate', 'phases_diff_with_cohere']
        dd = load(sd, *filt)

    d = misc.dict_update(d, dd)

    return d, file_name_figs
示例#3
0
def main(*args, **kwargs):
    setup=kwargs.get( 'setup')#, Setup())
    script_name=kwargs.get('script_name')#,__file__.split('/')[-1][0:-3])
    builder=kwargs.get('builder')
    info, nets, _ = get_networks(builder, 
                                 setup.builder(), 
                                 setup.director(),
                                 setup.engine(),
                                 setup.default_params())
    
     
    perturbation_list=kwargs.get('perturbation_list')#,op.get()[0])
    perturbation_list+=pl(setup.par(), '=', **{'name':setup.tp_name})
   
    print perturbation_list
    
    for p in sorted(perturbation_list.list):
        print p
    
    add_perturbations(perturbation_list, nets)
    
    key=nets.keys()[0]
    file_name = get_file_name(script_name, nets[key].par)
    path_nest=get_path_nest(script_name, nets.keys(), nets[key].par)
    
    print nets.keys()
    
    for net in nets.values():
        net.set_path_nest(path_nest)
        net.set_opt(setup.opt[net.name])
        
    # Adding nets no file name
    sd_list=get_storage_list(nets.keys(), file_name, info)
    
    for net, sd in zip(nets, sd_list):

        nl=Network_list(nets.values())
        #nd.add(name, **kwargs)
        
        kwargs={'model':nl,
                'call_get_x0':'get_x0',
                'call_get_error':'sim_optimization', 
                'verbose':True,}
        
        f=Fmin('GA_GI_ST_opt', **kwargs)
        h=f.fmin() 
        
        dd={setup.tp_name.split('_')[0]:{net:{'opt':h}}}
        save(sd, dd)
示例#4
0
def main_loop_conn(from_disk, attr, models, sets, nets, kwargs_dic, sd):
    d = {}
    from_disks = [from_disk] * len(nets.keys())
    for net, fd in zip(nets.values(), from_disks):
        if fd == 0:
            net.do_connect()
            dd = get_conn_matricies(net, models, attr)
            save(sd, dd)
        elif fd == 1:
            pass
        elif fd == 2:
            filt = [net.get_name()] + sets + models + attr
            dd = load(sd, *filt)

    return from_disks, d
示例#5
0
def main():
    k = get_kwargs_builder()

    from os.path import expanduser
    home = expanduser("~")

    attr = ['firing_rate', 'mean_rates', 'spike_statistic']

    kwargs_dic = {
        'mean_rates': {
            't_start': k['start_rec']
        },
        'spike_statistic': {
            't_start': k['start_rec']
        },
    }
    file_name = (home + '/results/papers/inhibition/network/' +
                 __file__.split('/')[-1][0:-3])

    models = ['M1', 'M2', 'FS', 'GI', 'GA', 'ST', 'SN']

    info, nets, _ = get_networks()

    sd = Storage_dic.load(file_name)
    sd.add_info(info)
    sd.garbage_collect()

    d = {}
    for net, from_disk in zip(nets, [1] * 2):
        if not from_disk:
            dd = run(net)
            dd = compute(dd, models, attr, **kwargs_dic)
            save(sd, dd)
        elif from_disk:
            filt = [net.get_name()] + models + attr
            dd = load(sd, *filt)
        d = misc.dict_update(d, dd)

    figs = []

    figs.append(show_fr(d, models))
    figs.append(show_hr(d, models))

    sd.save_figs(figs)

    if DISPLAY: pylab.show()

    pylab.show()
示例#6
0
def _run(storage_dic, d, net, from_disk, attr, **kwargs):
    model = net.get_single_unit()
    kwargs_dic = {attr: kwargs}
    if not from_disk:

        dd = {net.get_name(): net.simulation_loop()}
        dd = compute(dd, [model], [attr], **kwargs_dic)
        save(storage_dic, dd)
    elif from_disk:
        #         filt = [net.get_name()] + [model] + ['spike_signal']
        #         dd = load(storage_dic, *filt)
        #         dd = compute(dd, [model], [attr], **kwargs_dic)
        #         save(storage_dic, dd)
        filt = [net.get_name()] + [model] + [attr]
        dd = load(storage_dic, *filt)

    dd = reduce_levels(dd, [model] + [attr])
    d = misc.dict_update(d, dd)
    return d
示例#7
0
def main(**kwargs):
    
    exclude=kwargs.get('exclude',[])
    models=['GP_GP', 'GA_GA', 'GI_GA', 'GI_GI']
    models=[m for m in models if not ( m in exclude)]
    
    nets=['Net_0', 'Net_1']
    attrs=['mean_coherence', 'phases_diff_with_cohere']
    
    from_disk=kwargs.get('from_diks',0)
    path=('/home/mikael/results/papers/inhibition/network/'
          +'supermicro/simulate_slow_wave_ZZZ_dop_effect_perturb/')
    path=kwargs.get('data_path', path)
        
    script_name=kwargs.get('script_name', (__file__.split('/')[-1][0:-3]
                                           +'/data'))

    file_name = get_file_name(script_name)
 
    sd = get_storage(file_name, '')
    d={}
    if not from_disk:
    
#         d['raw']=gather(path, nets, models, attrs)
        d['raw']=gather2(path, nets, models, attrs)
        d['data']=extract_data(d['raw'], nets, models, attrs)
        d['performance']=compute_performance(d['data'], nets, models, attrs)
        d['bar_obj'], d['labels']=generate_plot_data(d['performance'],
                                                     models, 
                                                     attrs)

        save(sd, d)
    else:
        filt=['bar_obj']+models+['labels']
        d = sd.load_dic(*filt)

    figs=[]
    figs.append(plot_coher(d, d['labels'], title_name=kwargs.get('title')))

    
    save_figures(figs, script_name)
    pylab.show()
示例#8
0
def simulate(
        from_disk=0,
        kw={},
        net='Net_0',
        script_name=__file__.split('/')[-1][0:-3],
        setup=Setup(50, 20),
):

    file_name = kw.get('file_name', dr.HOME_DATA + '/' + script_name)
    file_name_figs = kw.get('file_name_figs',
                            dr.HOME_DATA + '/fig/' + script_name)

    sd = get_storage_list([net], file_name, '')[0]

    d = {}

    if from_disk == 0:
        print net
        dd = {}
        for call in kw.get('calls', [
                simulate_irregular_firing,
                simulate_ahp,
                simulate_IV,
                simulate_IF,
                get_nullcline,
                simulate_rebound_spike,
        ]):
            misc.dict_update(dd, {net: call(**kw)})

        save(sd, dd)

    elif from_disk == 1:
        filt = kw.get('filter', [net] + ['IV', 'IF', 'ahp', 'nullcline'] +
                      ['rs_scatter'] +
                      ['rs_voltage_{0}'.format(i) for i in range(6)] +
                      ['irf_voltage_{0}'.format(i) for i in range(3)])
        dd = load(sd, *filt)

    d = misc.dict_update(d, dd)

    return d, file_name_figs
示例#9
0
def main(**kwargs):

    exclude = kwargs.get('exclude', [])
    models = ['GP_GP', 'GA_GA', 'GI_GA', 'GI_GI']
    models = [m for m in models if not (m in exclude)]

    nets = ['Net_0', 'Net_1']
    attrs = ['mean_coherence', 'phases_diff_with_cohere']

    from_disk = kwargs.get('from_diks', 0)
    path = ('/home/mikael/results/papers/inhibition/network/' +
            'supermicro/simulate_slow_wave_ZZZ_dop_effect_perturb/')
    path = kwargs.get('data_path', path)

    script_name = kwargs.get('script_name',
                             (__file__.split('/')[-1][0:-3] + '/data'))

    file_name = get_file_name(script_name)

    sd = get_storage(file_name, '')
    d = {}
    if not from_disk:

        #         d['raw']=gather(path, nets, models, attrs)
        d['raw'] = gather2(path, nets, models, attrs)
        d['data'] = extract_data(d['raw'], nets, models, attrs)
        d['performance'] = compute_performance(d['data'], nets, models, attrs)
        d['bar_obj'], d['labels'] = generate_plot_data(d['performance'],
                                                       models, attrs)

        save(sd, d)
    else:
        filt = ['bar_obj'] + models + ['labels']
        d = sd.load_dic(*filt)

    figs = []
    figs.append(plot_coher(d, d['labels'], title_name=kwargs.get('title')))

    save_figures(figs, script_name)
    pylab.show()
示例#10
0
def main_loop(from_disk, attr, models, sets, nets, kwargs_dic, sd_list,
              **kwargs):

    run_method = kwargs.get('run', run)
    compute_method = kwargs.get('compute', compute)

    d = {}
    from_disks = [from_disk] * len(nets.keys())

    if type(sd_list) == list:
        iterator = [nets.values(), from_disks, sd_list]
    else:
        iterator = [nets.values(), from_disks]

    for vals in zip(*iterator):
        if type(sd_list) == list:
            net, fd, sd = vals
        else:
            net, fd = vals

        if fd == 0:
            dd = run_method(net)
            save(sd, dd)

        elif fd == 1:
            filt = [net.get_name()] + models + ['spike_signal']
            dd = load(sd, *filt)
            dd = compute_method(dd, models, attr, **kwargs_dic)
            save(sd, dd)

        elif fd == 2:
            print 'Loading data'
            filt = ([net.get_name()] + sets + models + attr +
                    kwargs.get('attrs_load', []))
            dd = load(sd, *filt)

        d = misc.dict_update(d, dd)

    return from_disks, d
示例#11
0
def _run_XX(flag, storage_dic, stim, d, net, from_disk):
    model = net.get_single_unit()
    inp = net.get_single_unit_input()

    if flag == 'IV':
        attr = 'IV_curve'
        stim_name = 'node.' + model + '.nest_params.I_e'
        call = getattr(net, 'sim_IV_curve')

    if flag == 'IF':
        attr = 'IF_curve'
        stim_name = 'node.' + model + '.nest_params.I_e'
        call = getattr(net, 'sim_IF_curve')

    if flag == 'FF':
        attr = 'FF_curve'
        stim_name = 'node.' + inp + '.rate'
        call = getattr(net, 'sim_FF_curve')

    if not from_disk:
        k = {
            'stim': stim,
            'stim_name': stim_name,
            'stim_time': net.get_sim_time(),
            'model': model
        }

        dd = {net.get_name(): call(**k)}
        dd = compute(dd, [model], [attr])
        save(storage_dic, dd)
    elif from_disk:
        filt = [net.get_name()] + [model] + [attr]
        dd = load(storage_dic, *filt)

    pp(dd)
    dd = reduce_levels(dd, [model] + [attr])
    d = misc.dict_update(d, dd)
    return d
示例#12
0
def _optimize(flag, net, storage_dic, d, from_disk, **kwargs):

    model = net.get_single_unit()
    inp = net.get_single_unit_input()
    attr = 'fmin'
    f = [model]
    if flag == 'opt_rate':
        x = ['node.' + inp + '.rate']
    if flag == 'opt_curr':
        x = ['node.' + model + '.nest_params.I_e']

    x0 = kwargs.get('x0', 900.)

    opt = {'netw': {'optimization': {'f': f, 'x': x, 'x0': x0}}}
    net.par.update_dic_rep(opt)

    kwargs_fmin = {
        'model': net,
        'call_get_x0': 'get_x0',
        'call_get_error': 'sim_optimization',
        'verbose': kwargs.get('verbose', True)
    }

    if not from_disk:
        f = Fmin(net.name, **kwargs_fmin)
        dd = {net.get_name(): {model: {attr: f.fmin()}}}
        print dd
        save(storage_dic, dd)
    elif from_disk:
        filt = [net.get_name()] + [model] + [attr]
        dd = load(storage_dic, *filt)

    dd = reduce_levels(dd, [model] + [attr])

    d = misc.dict_update(d, dd)

    return d
示例#13
0
def simulate(from_disk=0,
             kw={},
             net='Net_0',
             script_name=__file__.split('/')[-1][0:-3],
             setup=Setup(50,20),
            ):
    
    file_name = kw.get('file_name', dr.HOME_DATA+'/'+script_name)
    file_name_figs = kw.get('file_name_figs', dr.HOME_DATA+'/fig/'+script_name)
    
    sd=get_storage_list([net], file_name, '')[0]
    
    d={}
    
    if from_disk==0:
        print net
        dd={}
        for call in kw.get('calls',[simulate_irregular_firing, 
                                    simulate_ahp,
                                    simulate_IV, 
                                    simulate_IF,
                                    get_nullcline,
                                    simulate_rebound_spike,]):
            misc.dict_update(dd,{net:call(**kw)})
        
        save(sd, dd)        
        
    elif from_disk==1:
        filt = kw.get('filter', [net]+['IV', 'IF', 'ahp', 'nullcline'] 
                      +['rs_scatter']+['rs_voltage_{0}'.format(i) for i in range(6)]
                      +['irf_voltage_{0}'.format(i) for i in range(3)])
        dd = load(sd, *filt)
        
    d = misc.dict_update(d, dd)    
    
    return d, file_name_figs
示例#14
0
             +'milner/simulate_beta_new_beginning_slow4/')
paths.append('/home/mikael/results/papers/inhibition/network/'
             +'milner/simulate_slow_wave_new_beginning_slow4/')

script_name=(__file__.split('/')[-1][0:-3]+'/data')
file_name = get_file_name(script_name)

sd = Storage_dic.load(file_name, **{'force_update':False})

if from_disk==0:
    d={}
    for path, create_name in zip(paths, [ create_name_beta,create_name_sw]):
        d_tmp=effect_conns.gather(path, nets, models, attrs, **{'name_maker':create_name})
        misc.dict_update(d, d_tmp)
    
    save(sd, d)
    pp(d)
elif from_disk==1:
    d = sd.load_dic(*(nets+models+['spike_statistic']),
                    **{'star':[0]})
    pp(d)
    pp(sorted(d.keys()))
    
    dd=postprocess(d)
    misc.dict_update(d, dd)
    save(sd, d)
    
elif from_disk==2:
    keys_iterator=[]
    for key in ['mean_rates', 'xlabels', 'ylabels']:
        keys_iterator+=[['beta', 'Net_0', key],
示例#15
0
def main(*args, **kwargs):
    
    setup=kwargs.get('setup')#, Setup())
    script_name=kwargs.get('script_name')#,__file__.split('/')[-1][0:-3])
    builder=kwargs.get('builder')
    
    info, nets, _ = get_networks(builder, 
                                 setup.builder(), 
                                 setup.director(),
                                 setup.engine(),
                                 setup.default_params()) 
    perturbation_list=kwargs.get('perturbation_list')
    
    perturbation_list+=pl(target_perturbations()[setup.tp_name], '=', **{'name':setup.tp_name})
    perturbation_list+=pl(setup.par(), '=', **{'name':setup.tp_name})
    add_perturbations(perturbation_list, nets)

    key=nets.keys()[0]
    file_name = get_file_name(script_name, nets[key].par)
    path_nest=get_path_nest(script_name, nets.keys(), nets[key].par)
    
    for val in nets.values():
        for key in sorted(val.par['nest'].keys()):
            val2=val.par['nest'][key]
            if 'weight' in val2.keys():
                print key, val2['weight']
        for key in sorted(val.par['node'].keys()):
            val2=val.par['node'][key]
            if 'spike_setup' in val2.keys():
                print key, val2['spike_setup']
            if 'rate' in val2.keys():
                print key, val2['rate']
                
    print setup.tp_name, nets.keys()
    pp(nets['Net_1'].par['nest']['GA_GA_gaba']['weight'])
    for net in nets.values():
        net.set_path_nest(path_nest) 
        pp(nets['Net_1'].par['nest']['GA_GA_gaba']['weight'])
        net.set_opt(setup.opt[net.name])
    pp(nets['Net_1'].par['nest']['GA_GA_gaba']['weight'])
    
    # vt=net.voltage_trace()
    # import pylab
    # ax=pylab.subplot(111)
    # vt.plot_voltage_trace(ax)
    # pylab.show()

    sd_list=get_storage_list(nets.keys(), file_name, info)
    
    for net, sd in zip(nets.values(), sd_list):    
        nl=Network_list([net])
#         pp(net.par.dic['node']['STp'])
        kwargs={'model':nl,
                'call_get_x0':'get_x0',
                'call_get_error':'sim_optimization', 
                'verbose':True,}
        
        kwargs_fmin={'maxiter':100, 
                     'maxfun':100,
                     'full_output':1,
                     'retall':1,
                     'xtol':.0001,
                     'ftol':.0001,
                     'disp':0}
        kwargs_fmin={}
        kwargs['kwargs_fmin']=kwargs_fmin
        f=Fmin('GA_opt', **kwargs)
        h=f.fmin() 
        dd={setup.tp_name.split('_')[0]:{net.name:{'opt':h}}}
        
        save(sd, dd)
                'st_amp': 0,
                'st_n': 200
            }
            kw_list.append(kw)

    nets = ['Net_{0:0>2}'.format(i) for i in range(len(kw_list))]
    sd_list = get_storage_list(nets, path, '')

    d = {}
    for net, sd, kw in zip(nets, sd_list, kw_list):

        if from_disk == 0:  # and net=='Net_05':
            print net
            dd = {net: simulate_network(**kw)}
            dd = compute_attrs(dd, net)
            save(sd, dd)

        if from_disk == 1:
            filt = [net] + ['gi', 'st', 'gi_st'] + ['spike_signal']
            dd = load(sd, *filt)
            pp(dd)
            dd = compute_attrs(dd, net)
            save(sd, dd)

        elif from_disk == 2:
            filt = [net] + ['gi', 'st', 'gi_st'
                            ] + ['firing_rate', 'phases_diff_with_cohere']
            dd = load(sd, *filt)

        d = misc.dict_update(d, dd)
示例#17
0
    
    d={}
    for net, sd, kw in zip(nets, sd_list, kw_list):
    
        if from_disk==0:# and net=='Net_05':
            print net
            dd={}
            for call in [
                        simulate_IV, 
                        simulate_IF,
                            get_nullcline,
                           simulate_rebound_spike,
                         ]:
                misc.dict_update(dd,{net:call(**kw)})

            save(sd, dd)
        
#         if from_disk==1:
#             filt= [net]+['gi','st', 'gi_st']+['spike_signal']
#             dd = load(sd, *filt)
#             pp(dd)
#             dd=compute_attrs(dd, net)
#             save(sd, dd)
            
        elif from_disk==1:
            filt = [net]+['IV', 'IF', 'nullcline'] +['rs_scatter']
            dd = load(sd, *filt)
        
        d = misc.dict_update(d, dd)
    
    pp(d)
示例#18
0
def main(*args, **kwargs):

    setup = kwargs.get('setup')  #, Setup())
    script_name = kwargs.get('script_name')  #,__file__.split('/')[-1][0:-3])
    builder = kwargs.get('builder')

    info, nets, _ = get_networks(builder, setup.builder(), setup.director(),
                                 setup.engine(), setup.default_params())
    perturbation_list = kwargs.get('perturbation_list')

    perturbation_list += pl(target_perturbations()[setup.tp_name], '=',
                            **{'name': setup.tp_name})
    perturbation_list += pl(setup.par(), '=', **{'name': setup.tp_name})
    add_perturbations(perturbation_list, nets)

    key = nets.keys()[0]
    file_name = get_file_name(script_name, nets[key].par)
    path_nest = get_path_nest(script_name, nets.keys(), nets[key].par)

    for val in nets.values():
        for key in sorted(val.par['nest'].keys()):
            val2 = val.par['nest'][key]
            if 'weight' in val2.keys():
                print key, val2['weight']
        for key in sorted(val.par['node'].keys()):
            val2 = val.par['node'][key]
            if 'spike_setup' in val2.keys():
                print key, val2['spike_setup']
            if 'rate' in val2.keys():
                print key, val2['rate']

    print setup.tp_name, nets.keys()
    pp(nets['Net_1'].par['nest']['GA_GA_gaba']['weight'])
    for net in nets.values():
        net.set_path_nest(path_nest)
        pp(nets['Net_1'].par['nest']['GA_GA_gaba']['weight'])
        net.set_opt(setup.opt[net.name])
    pp(nets['Net_1'].par['nest']['GA_GA_gaba']['weight'])

    # vt=net.voltage_trace()
    # import pylab
    # ax=pylab.subplot(111)
    # vt.plot_voltage_trace(ax)
    # pylab.show()

    sd_list = get_storage_list(nets.keys(), file_name, info)

    for net, sd in zip(nets.values(), sd_list):
        nl = Network_list([net])
        #         pp(net.par.dic['node']['STp'])
        kwargs = {
            'model': nl,
            'call_get_x0': 'get_x0',
            'call_get_error': 'sim_optimization',
            'verbose': True,
        }

        kwargs_fmin = {
            'maxiter': 100,
            'maxfun': 100,
            'full_output': 1,
            'retall': 1,
            'xtol': .0001,
            'ftol': .0001,
            'disp': 0
        }
        kwargs_fmin = {}
        kwargs['kwargs_fmin'] = kwargs_fmin
        f = Fmin('GA_opt', **kwargs)
        h = f.fmin()
        dd = {setup.tp_name.split('_')[0]: {net.name: {'opt': h}}}

        save(sd, dd)