def read_empty_array_via_path():
    res = {'a': numpy.array([[],[]])}
    h5w.add_to_h5(fn, res, dict_label='test_label')
    res.clear()
    res = h5w.load_h5(fn, path='test_label/a')
    assert_array_equal(res, [[],[]])
    assert(numpy.shape(res) == (2,0))
Beispiel #2
0
def get_sensitivity_measure(calcAna, calcAnaAll, mode='gamma', eig_index=None):
    print 'Calculate sensitivity measure.'
    if calcAna or calcAnaAll:
        if mode == 'gamma' or mode == 'low':
            fmax = 100.0
        elif mode == 'high_gamma':
            fmax = 400.0
        circ = circuit.Circuit('microcircuit',
                               circuit_params,
                               fmax=fmax,
                               from_file=not calcAnaAll)
        freqs, eigs = circ.create_eigenvalue_spectra('MH')
        if mode == 'gamma':
            fmax = freqs[np.argmin(abs(eigs[eig_index] - 1))]
            Z = circ.get_sensitivity_measure(fmax)
            eigc = eigs[eig_index][np.argmin(abs(eigs[eig_index] - 1))]
        elif mode == 'high_gamma':
            eigs = eigs[eig_index][np.where(freqs > 150.)]
            freqs = freqs[np.where(freqs > 150.)]
            fmax = freqs[np.argmin(abs(eigs - 1.0))]
            fmax_index = np.argmin(abs(freqs - fmax))
            eigc = eigs[fmax_index]
            Z = circ.get_sensitivity_measure(fmax, index=eig_index)
        elif mode == 'low':
            eigs = eigs[eig_index]
            fmax = 0.0
            eigc = eigs[0]
            Z = circ.get_sensitivity_measure(fmax)
        k = np.asarray([1, 0]) - np.asarray([eigc.real, eigc.imag])
        k /= np.sqrt(np.dot(k, k))
        k_per = np.asarray([-k[1], k[0]])
        k_per /= np.sqrt(np.dot(k_per, k_per))
        Z_amp = Z.real * k[0] + Z.imag * k[1]
        Z_freq = Z.real * k_per[0] + Z.imag * k_per[1]
        label = mode + str(eig_index)
        h5.add_to_h5('results.h5', {
            'sensitivity_measure': {
                label: {
                    'f_peak': fmax,
                    'Z': Z,
                    'Z_amp': Z_amp,
                    'Z_freq': Z_freq,
                    'k': k,
                    'k_per': k_per,
                    'eigc': eigc
                }
            }
        },
                     'a',
                     overwrite_dataset=True)
    else:
        path_base = 'sensitivity_measure/' + mode + str(eig_index)
        fmax = h5.load_h5('results.h5', path_base + '/f_peak')
        Z = h5.load_h5('results.h5', path_base + '/Z')
        Z_amp = h5.load_h5('results.h5', path_base + '/Z_amp')
        Z_freq = h5.load_h5('results.h5', path_base + '/Z_freq')
        k = h5.load_h5('results.h5', path_base + '/k')
        k_per = h5.load_h5('results.h5', path_base + '/k_per')
        eigc = h5.load_h5('results.h5', path_base + '/eigc')
    return fmax, Z, Z_amp, Z_freq, k, k_per, eigc
def get_spec_sim(calcData, nr_window, bin_size):
    print 'Get power spectra from simulation.'
    power_sim = []
    if calcData:
        for pop in range(8):
            psim = 0
            dt = (10000.0-300.0)/nr_window
            Ts = [300.0+i*dt for i in range(nr_window)]
            for n,T in enumerate(Ts):
                fsim, p_sim = rs.get_spec(folder, pop, T+dt, T, 
                                          fmax=500.0, bin_size=bin_size)
                psim += np.asarray(p_sim)/float(len(Ts))
            power_sim.append(psim) 
            label = 'power' + str(pop) 
            h5.add_to_h5('results.h5',{'fig_microcircuit':{
                str(nr_window):{label: psim}}},'a',
                overwrite_dataset=True)
        freq_sim = np.asarray(fsim)
        h5.add_to_h5('results.h5',{'fig_microcircuit':{
            str(nr_window):{'freq_sim': fsim}}},'a',
            overwrite_dataset=True)
    else:
        for pop in range(8):
            label = 'power' + str(pop)
            power_sim.append(h5.load_h5('results.h5',
                    'fig_microcircuit/' + str(nr_window) + '/' + label))
        freq_sim = h5.load_h5('results.h5', 
                    'fig_microcircuit/' + str(nr_window) + '/freq_sim')
    return power_sim, freq_sim
Beispiel #4
0
def get_sim_data_rate(calcData, a, conn, pop):
    print 'Get instantaneous firing rates from simulation.'
    label = str(a) + str(conn[0]) + str(conn[1])
    if conn == [3, 3]:
        folder_base = 'data_zval_L4IL4I'
    elif conn == [5, 4]:
        folder_base = 'data_zval_L5EL5I'
    folder = folder_base + str(1 + a)
    if True:  #calcData:
        bin_size = 15.
        dt = [2000, 5000]
        time, rate = rs.get_inst_rate(folder,
                                      pop,
                                      dt[1],
                                      dt[0],
                                      bin_size=bin_size)
        rate = rate[0].real
        h5.add_to_h5('results.h5', {
            'Z_validation': {
                label: {
                    'time_sim': time,
                    'inst_rate_sim': rate
                }
            }
        },
                     'a',
                     overwrite_dataset=True)
    else:
        path_base = 'Z_validation/' + label
        time = h5.load_h5('results.h5', path_base + '/time_sim')
        rate = h5.load_h5('results.h5', path_base + '/inst_rate_sim')
    return time, rate
def store_and_load_quantities_array() :
    import quantities as pq
    data = {'times' : numpy.array([1,2,3])*pq.ms, 'positions' : numpy.array([1,2,3])*pq.cm}
    h5w.add_to_h5(fn, data, overwrite_dataset=True)
    # loading the whole data
    res = h5w.load_h5(fn)
    assert(res['times'].dimensionality == data['times'].dimensionality)
def get_diffapprox_Next_for_pSE_array(params, rE, rI, rS, pSE_array,
    calc_Next=False):
    folder = get_folder(params)
    label_Next = 'Next_betas_pSE_array_' + folder + str(rE) + str(rI)
    circuit_params = set_circuit_params(params)

    if calc_Next:
        print 'calculate Next'
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates_calc = circ.th_rates
        M = circ.I*circ.W
        Next = np.zeros((len(pSE_array), 3))
        betas = np.zeros((len(pSE_array), 3))
        initial_Next = get_Next(params)
        for i,pSE in enumerate(pSE_array):
            target_rates = np.array([rE, rI, rS])
            circ.Next = initial_Next
            params['pSE'] = pSE
            circ.alter_default_params({'p': get_connection_probabilities(params)})
            Next[i], betas[i] = circ.get_external_input(target_rates)
        h5.add_to_h5('results.h5', {label_Next:{'Next': Next, 'betas': betas,
            'M': M}}, 'a', overwrite_dataset=True)
    else:
        Next = h5.load_h5('results.h5', label_Next + '/Next')
        betas = h5.load_h5('results.h5', label_Next + '/betas')
        M = h5.load_h5('results.h5', label_Next + '/M')
    return Next, betas, M
def get_diffapprox_gain(rates0, params, Kstim, calc=False, read_old_results=False):
    folder = get_folder(params)
    label = 'plot_rates_gain' + str(Kstim) + folder

    if read_old_results:
        path = '/Users/bos/Documents/pittsburgh/disinhibitory_circuits/py/E-I-VIP/'
        g = h5.load_h5(path + 'results.h5', label + '/g')
        return g

    circuit_params = set_circuit_params(params)
    circuit_params['Next'] += np.array([Kstim,Kstim,0])

    if calc:
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates = circ.th_rates
        # divide by 8 since this is the external firing rate in simulation
        g = (rates[0]-rates0[0])/(Kstim*8.)
        M = circ.ana.I*circ.ana.W
        dI = [M[0][i]*(rates[i]-rates0[i]) for i in range(3)]
        h5.add_to_h5('results.h5',{label:{'g': g}},
            'a', overwrite_dataset=True)
    else:
        g = h5.load_h5('results.h5', label + '/g')
    return g
def store_and_load_dataset_directly(label=''):
    res = {}
    for key,val in zip(simpledata_str,simpledata_val):
        res[key] = val
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    for key,val in zip(simpledata_str,simpledata_val):
        assert(h5w.load_h5(fn,label+'/'+key) == val)
Beispiel #9
0
def get_dotplot(calcData, a, conn, pop):
    print 'Get data for dot plot.'
    label = str(a) + str(conn[0]) + str(conn[1])
    if conn == [3, 3]:
        folder_base = 'data_zval_L4IL4I'
    elif conn == [5, 4]:
        folder_base = 'data_zval_L5EL5I'
    folder = folder_base + str(1 + a)
    times = []
    gids = []
    dt = [1995, 2030]
    if calcData:
        for pop in range(8):
            spikes, this_gids, gid_min, gid_max = rs.get_data_dotplot(
                folder, pop, dt[0], dt[1])
            times.append(np.asarray(spikes) - dt[0])
            gids.append(abs(np.asarray(this_gids) - 77169))
        h5.add_to_h5(
            'results.h5',
            {'Z_validation': {
                label: {
                    'times_dot_plot': times,
                    'gids': gids
                }
            }},
            'a',
            overwrite_dataset=True)
    else:
        path_base = 'Z_validation/' + label
        times = h5.load_h5('results.h5', path_base + '/times_dot_plot')
        gids = h5.load_h5('results.h5', path_base + '/gids')
    return times, gids
def write_empty_array(label=''):
    res = {'a':[],'b':numpy.array([])}
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    assert_array_equal(res['a'],[])
    assert_array_equal(res['b'],[])
def get_diffapprox_Next_for_rE_rI_grid(params, rE_array, rI_array, rS,
    calc_Next=False):
    folder = get_folder(params)
    label_Next = 'Next_betas_matrix_' + folder
    circuit_params = set_circuit_params(params)

    if calc_Next:
        print 'calculate Next'
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates_calc = circ.th_rates
        M = circ.I*circ.W
        Next = np.zeros((len(rE_array), len(rI_array), 3))
        betas = np.zeros((len(rE_array), len(rI_array), 3))
        initial_Next = get_Next(params)
        for i,re in enumerate(rE_array):
            for j,ri in enumerate(rI_array):
                target_rates = np.array([re, ri, rS])
                circ.Next = initial_Next
                Next[i][j], betas[i][j] = circ.get_external_input(target_rates)
        h5.add_to_h5('results.h5', {label_Next:{'Next': Next, 'betas': betas,
            'M': M}}, 'a', overwrite_dataset=True)
    else:
        Next = h5.load_h5('results.h5', label_Next + '/Next')
        betas = h5.load_h5('results.h5', label_Next + '/betas')
        M = h5.load_h5('results.h5', label_Next + '/M')
    return Next, betas, M
def store_and_test_key_types() :
    data = {'a' : 1, (1,2) : 2., 4. : 3.}
    h5w.add_to_h5(fn,data,write_mode='w', compression='gzip')
    res = h5w.load_h5(fn)

    keys = ['a',(1,2),4.]
    for k in keys :
        assert(k in res.keys())
def store_and_load_arraydata(label=''):
    res = {}
    for key,val in zip(arraydata_str,arraydata_val):
        res[key] = val
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    for key,val in zip(arraydata_str,arraydata_val):
        assert_array_equal(res[key],val)
def write_nested_empty_array(label=''):
    res = {'a':[[],[]],'b':numpy.array([[],[]])}
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    assert_array_equal(res['a'],[[],[]])
    assert(numpy.shape(res['a']) == (2,0))
    assert_array_equal(res['b'],[[],[]])
    assert(numpy.shape(res['b']) == (2,0))
def store_and_load_simpledata(label=''):
    res = {}
    for key,val in zip(simpledata_str,simpledata_val):
        res[key] = val
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    for key,val in zip(simpledata_str,simpledata_val):
        assert(res[key] == val)
def store_and_load_dictdata(label=''):
    res = {}
    for key,val in zip(dictdata_str,dictdata_val):
        res[key] = val
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    for dkey,dval in zip(dictdata_str,dictdata_val):
        for key,val in dval.items():
            assert(res[dkey][key] == val)
def get_rate_one_neuron_sim(params, pop, gid, T=10000.0, tmin=300.0, calc=False):
    folder = get_folder(params)
    label = 'plot_rate_one_neuron' + folder + 'gid' + str(gid) + 'pop' + str(pop)
    if calc:
        rate = rs.get_rate_one_neuron(folder, pop, gid, T, tmin)
        h5.add_to_h5('results.h5',{label:{'rate' : rate}}, 'a',
            overwrite_dataset=True)
    else:
        rate = h5.load_h5('results.h5', label + '/rate')
    return rate
def check_for_node(label=''):
    res = {'a':1,'test1':{'b':2},'test2':{'test3':{'c':3}}}
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    if label != '':
        assert(h5w.node_exists(fn,label) == True)
    assert(h5w.node_exists(fn,label+'/a') == True)
    assert(h5w.node_exists(fn,label+'/nota') == False)
    assert(h5w.node_exists(fn,label+'/test1/b') == True)
    assert(h5w.node_exists(fn,label+'/test1/notb') == False)
    assert(h5w.node_exists(fn,label+'/test2/test3/c') == True)
    assert(h5w.node_exists(fn,label+'/test2/test3/notc') == False)
def store_and_load_custom_array():
    a = [[1,2,3,4],[6,7]]
    h5w.add_to_h5(fn,{'a': a},overwrite_dataset=True)
    # loading the whole data
    res = h5w.load_h5(fn)
    for i in xrange(len(a)):
        assert(numpy.sum(a[i]-res['a'][i]) < 1e-12)
    # loading path directly
    res = h5w.load_h5(fn, path='a/')
    for i in xrange(len(a)):
        assert(numpy.sum(a[i]-res[i]) < 1e-12)
def handle_nonexisting_path(label=''):
    res = {}
    stest = 'this is a test'
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    try:
        res = h5w.load_h5(fn,path='test/')
        raise Exception() # should not get until here
    except KeyError:
        res['test'] = stest
        h5w.add_to_h5(fn,res)
        res.clear()
        res = h5w.load_h5(fn,path='test/')
        assert(res == stest)
def get_spec_ana(calcAna, calcAnaAll):
    print 'Calculate power spectra.'
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit', circuit_params, fmax=500.0, 
                               from_file=not calcAnaAll)
        freq_ana, power_ana = circ.create_power_spectra()
        h5.add_to_h5('results.h5',{'fig_microcircuit':{
            'freq_ana': freq_ana,'power_ana': power_ana}},
            'a',overwrite_dataset=True)
    else:
        freq_ana = h5.load_h5('results.h5','fig_microcircuit/freq_ana')
        power_ana = h5.load_h5('results.h5','fig_microcircuit/power_ana')
    return freq_ana, power_ana
Beispiel #22
0
def get_spectra(calcAna, calcAnaAll, a, conn):
    print 'Calculate power spectra and eigenvalues.'
    label = str(a) + str(conn[0]) + str(conn[1])
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file=not calcAnaAll)
        I_new = circ.I.copy()
        Next_new = circ.Next.copy()
        I_new[conn[0]][conn[1]] = np.round(circ.I[conn[0]][conn[1]] *
                                           (1.0 + a))
        # missing rate
        r = circ.th_rates[conn[1]] * circ.I[conn[0]][conn[1]] * abs(a)
        # source inhibitory
        # a pos: more inh. input -> add ext. input
        # a neg: less inh. input -> rem. ext. input
        if conn[1] % 2 == 1:
            Next_add = np.sign(a) * 4 * int(r / circ.v_ext)
        # source excitatory
        # a pos: more exc. input -> rem. ext. input
        # a neg: less exc. input -> add ext. input
        else:
            Next_add = -np.sign(a) * int(r / circ.v_ext)
        Next_new[conn[0]] = circ.Next[conn[0]] + Next_add
        circ.alter_default_params({
            'analysis_type': 'dynamical',
            'I': I_new,
            'Next': Next_new
        })
        freqs, power = circ.create_power_spectra()
        freqs, eigs = circ.create_eigenvalue_spectra('MH')
        rates = circ.th_rates
        h5.add_to_h5('results.h5', {
            'Z_validation': {
                label: {
                    'freqs': freqs,
                    'power': power,
                    'eigs': eigs,
                    'rates': rates
                }
            }
        },
                     'a',
                     overwrite_dataset=True)
    else:
        freqs = h5.load_h5('results.h5', 'Z_validation/' + label + '/freqs')
        power = h5.load_h5('results.h5', 'Z_validation/' + label + '/power')
        eigs = h5.load_h5('results.h5', 'Z_validation/' + label + '/eigs')
        rates = h5.load_h5('results.h5', 'Z_validation/' + label + '/rates')
    return freqs, power, eigs, rates
Beispiel #23
0
    def test_store_and_rehash_h5py(self):
        d0 = {
            'a': 'asd',
            'b': 0.12,
            'c': [3, 4, 5],
            'd': np.array([[3, 4, 5], [3, 4, 5]]),
            'e': True
        }
        hash0 = dicthash.generate_hash_from_dict(d0)
        h5w.add_to_h5('store_and_rehash_h5py.h5', {'d0': d0}, 'w')
        d1 = h5w.load_h5('store_and_rehash_h5py.h5', 'd0')
        hash1 = dicthash.generate_hash_from_dict(d1)

        self.assertEqual(hash0, hash1)
Beispiel #24
0
def get_eigenvalues(calcAna, calcAnaAll):
    print('Calculate eigenvalues.')
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit', circuit_params,
                               fmax=400.0, from_file=not calcAnaAll)
        freqs, eigs = circ.create_eigenvalue_spectra('MH')
        eigs = np.transpose(eigs)
        h5.add_to_h5('results.h5', {'eigenvalue_trajectories': {
            'freqs': freqs, 'eigs': eigs}},
            'a', overwrite_dataset=True)
    else:
        freqs = h5.load_h5('results.h5', 'eigenvalue_trajectories/freqs')
        eigs = h5.load_h5('results.h5', 'eigenvalue_trajectories/eigs')
    return freqs, eigs
    def test_store_and_rehash_h5py(self):
        d0 = {
            'a': 'asd',
            'b': 0.12,
            'c': [3, 4, 5],
            'd': np.array([[3, 4, 5], [3, 4, 5]]),
            'e': True
        }
        hash0 = dicthash.generate_hash_from_dict(d0)
        h5w.add_to_h5('store_and_rehash_h5py.h5', {'d0': d0}, 'w')
        d1 = h5w.load_h5('store_and_rehash_h5py.h5', 'd0')
        hash1 = dicthash.generate_hash_from_dict(d1)

        self.assertEqual(hash0, hash1)
Beispiel #26
0
def get_spectra(panel, calcAna, calcAnaAll):
    print 'Calculate power spectra.'
    eig_index = 4
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit',
                               circuit_params,
                               fmax=100.0,
                               from_file=not calcAnaAll)
        freqs, power = circ.create_power_spectra()
        h5.add_to_h5(
            'results.h5',
            {'oscillation_origin': {
                panel: {
                    'freqs': freqs,
                    'power': power
                }
            }},
            'a',
            overwrite_dataset=True)
        if panel == 'A':
            Mred = np.zeros((8, 8))
            Mred[0, 0:4] = 1
            Mred[1, 0:2] = 1
            Mred[2:4, 2:4] = 1
            Mred[3, 0] = 1
        elif panel == 'B':
            Mred = np.ones((8, 8))
            Mred[3, 0] = 0
        circ.reduce_connectivity(Mred)
        freqs_sub, power_sub = circ.create_power_spectra()
        h5.add_to_h5('results.h5', {
            'oscillation_origin': {
                panel: {
                    'power_sub': power_sub,
                    'Mred': Mred
                }
            }
        },
                     'a',
                     overwrite_dataset=True)
    else:
        path_base = 'oscillation_origin/' + panel
        freqs = h5.load_h5('results.h5', path_base + '/freqs')
        power = h5.load_h5('results.h5', path_base + '/power')
        power_sub = h5.load_h5('results.h5', path_base + '/power_sub')
        Mred = h5.load_h5('results.h5', path_base + '/Mred')
    return freqs, power, power_sub, Mred
def get_dotplot(calcData, folder=folder):
    print 'Get data for dot plot.'
    times = []
    gids = []
    dt = [2000,2050]
    if calcData:
        for pop in range(8):
            spikes, this_gids, gid_min, gid_max = rs.get_data_dotplot(
                folder, pop, dt[0],  dt[1])
            times.append(np.asarray(spikes)-dt[0])
            gids.append(abs(np.asarray(this_gids)-77169))
        h5.add_to_h5('results.h5',{'fig_microcircuit':{
            'times': times, 'gids': gids}},'a', overwrite_dataset=True)
    else:
        times  = h5.load_h5('results.h5','fig_microcircuit/times')
        gids  = h5.load_h5('results.h5','fig_microcircuit/gids')
    return times, gids
def get_diffapprox_rates_betas(params, calc=False):
    folder = get_folder(params)
    label = 'plot_rates_betas' + folder
    circuit_params = set_circuit_params(params)

    if calc:
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates = circ.th_rates
        betas = circ.ana.create_H0_mu()[:,0]
        h5.add_to_h5('results.h5',{label:{'rates_calc': rates, 'betas': betas}},
            'a', overwrite_dataset=True)
    else:
        rates = h5.load_h5('results.h5', label + '/rates_calc')
        betas = h5.load_h5('results.h5', label + '/betas')
    return rates, betas
def get_stability_matrix(params, rE_array, rI_array, rS, calc_Next=False,
    calc_dmin=False):
    folder = get_folder(params)
    label_dmin = 'stability_matrix_' + folder

    Next, betas, M = get_diffapprox_Next_for_rE_rI_grid(params, rE_array,
        rI_array, rS, calc_Next=calc_Next)

    if calc_dmin:
        dmin = np.zeros((len(rE_array), len(rI_array)))
        for i,re in enumerate(rE_array):
            for j,ri in enumerate(rI_array):
                dmin[i][j] = get_dmin(params, betas[i][j], M, calc=calc_dmin)
        h5.add_to_h5('results.h5', {label_dmin:{'dmin': dmin}}, 'a',
            overwrite_dataset=True)
    else:
        dmin = h5.load_h5('results.h5', label_dmin + '/dmin')
    return dmin
def get_eigs2d_matrix(params, rE_array, rI_array, rS, calc_Next=False,
    calc_eigs=False):
    folder = get_folder(params)
    label = 'eigs2d_matrix_' + folder

    Next, betas, M = get_diffapprox_Next_for_rE_rI_grid(params, rE_array,
        rI_array, rS, calc_Next=calc_Next)

    if calc_eigs:
        eigs = np.zeros((len(rE_array), len(rI_array),2), dtype=complex)
        for i,re in enumerate(rE_array):
            for j,ri in enumerate(rI_array):
                MH = np.dot(np.diag(betas[i][j][:2]),M[:2,:2])
                eigs[i][j], _ = np.linalg.eig(MH)
        h5.add_to_h5('results.h5',{label:{'eigs': eigs}}, 'a',
            overwrite_dataset=True)
    else:
        eigs  = h5.load_h5('results.h5', label + '/eigs')
    return eigs
Beispiel #31
0
def get_spectra(calcAna, calcAnaAll):
    print('Calculate spectra..')
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit',
                               circuit_params,
                               fmax=400.0,
                               from_file=not calcAnaAll)
        freqs, power = circ.create_power_spectra()
        h5.add_to_h5('results.h5',
                     {'fig_eigenmodes': {
                         'freqs': freqs,
                         'power': power
                     }},
                     'a',
                     overwrite_dataset=True)
    else:
        freqs = h5.load_h5('results.h5', 'fig_eigenmodes/freqs')
        power = h5.load_h5('results.h5', 'fig_eigenmodes/power')
    return freqs, power
def get_gain_matrix(params, rE_array, rI_array, rS, calc_Next=False,
    calc_gain=False):
    folder = get_folder(params)
    label = 'gain_matrix_' + folder

    Next, betas, M = get_diffapprox_Next_for_rE_rI_grid(params, rE_array,
        rI_array, rS, calc_Next=calc_Next)

    if calc_gain:
        gain = np.zeros((len(rE_array), len(rI_array)))
        for i,re in enumerate(rE_array):
            for j,ri in enumerate(rI_array):
                P = np.eye(3)-np.dot(np.diag(betas[i][j]),M)
                stim = betas[i][j]
                stim[2] = 0.
                gain[i][j] = np.dot(np.linalg.inv(P), np.array(stim))[0]
        h5.add_to_h5('results.h5',{label:{'gain': gain}}, 'a',
            overwrite_dataset=True)
    else:
        gain  = h5.load_h5('results.h5', label + '/gain')
    return gain
def get_rates_sim(params, T=10000.0, tmin=300.0, calc=False,
    read_old_results=False):
    folder = get_folder(params)
    label = 'plot_rates' + folder

    if read_old_results:
        path = '/Users/bos/Documents/pittsburgh/disinhibitory_circuits/py/E-I-VIP/'
        rates_sim = h5.load_h5(path + 'results.h5', label + '/rates_sim')
        return rates_sim

    if calc:
        rates_sim = []
        for pop in range(3):
            rate = rs.get_all_rates(folder, pop, T, tmin)
            rates_sim.append(np.mean(rate))
        np.asarray(rates_sim)
        h5.add_to_h5('results.h5',{label:{
            'rates_sim': rates_sim}}, 'a', overwrite_dataset=True)
        rates_sim = h5.load_h5('results.h5', label + '/rates_sim')
    else:
        rates_sim = h5.load_h5('results.h5', label + '/rates_sim')
    return rates_sim
Beispiel #34
0
def get_spectra_sim(panel, calcData):
    print 'Get power spectra from simulation.'
    folder = 'data_iso_panel' + panel
    T = 10000.0
    tmin = 300.0
    nr_windows = 20
    bin_size = 1.0
    power_sim = []
    power_sim_av = []
    if calcData:
        for pop in range(4):
            freq_sim, p_sim = rs.get_spec(folder,
                                          pop,
                                          T,
                                          tmin,
                                          fmax=100.0,
                                          bin_size=bin_size)
            power_sim.append(p_sim)
            label = 'power' + str(pop) + '_sim'
            h5.add_to_h5('results.h5',
                         {'oscillation_origin': {
                             panel: {
                                 label: p_sim
                             }
                         }},
                         'a',
                         overwrite_dataset=True)
            psim, fsim = get_spectra_sim_av(folder, pop, nr_windows, bin_size)
            freq_sim_av = fsim
            power_sim_av.append(psim)
            h5.add_to_h5(
                'results.h5',
                {'oscillation_origin': {
                    panel: {
                        label + '_av': psim
                    }
                }},
                'a',
                overwrite_dataset=True)
        h5.add_to_h5('results.h5', {
            'oscillation_origin': {
                panel: {
                    'freq_sim': freq_sim,
                    'freq_sim_av': fsim
                }
            }
        },
                     'a',
                     overwrite_dataset=True)
    else:
        path_base = 'oscillation_origin/' + panel
        freq_sim = h5.load_h5('results.h5', path_base + '/freq_sim')
        freq_sim_av = h5.load_h5('results.h5', path_base + '/freq_sim_av')
        for pop in range(4):
            label = '/power' + str(pop) + '_sim'
            power_sim.append(h5.load_h5('results.h5', path_base + label))
            power_sim_av.append(
                h5.load_h5('results.h5', path_base + label + '_av'))
    return freq_sim, power_sim, freq_sim_av, power_sim_av
def get_diffapprox_gain_coefficient(params, calc=False):
    folder = get_folder(params)
    label = 'plot_gain_coefficient' + folder
    circuit_params = set_circuit_params(params)

    if calc:
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates_calc = circ.th_rates
        MH = circ.ana.create_MH0()
        P = np.linalg.inv(np.eye(3)-MH)
        betas = circ.ana.create_H0_mu()[:,0]
        factor = np.dot(P[:,:2], betas[:2])
        h5.add_to_h5('results.h5',{label:{
            'rates_calc': rates_calc, 'factor': factor}},
            'a', overwrite_dataset=True)
    else:
        rates_calc = h5.load_h5('results.h5', label + '/rates_calc')
        factor = h5.load_h5('results.h5', label + '/factor')
    return rates_calc, factor
def get_rates(calcData, calcAna, calcAnaAll, folder=folder):
    print 'Get data for firing rates.'
    tmin = 300.0
    if calcData:
        rates_sim = []
        for pop in range(8):
            mu = rs.get_mu_rate(folder, pop, T, tmin)
            rates_sim.append(mu)
        h5.add_to_h5('results.h5',{'fig_microcircuit':{
            'rates_sim': rates_sim}}, 'a', overwrite_dataset=True)
    else:
        rates_sim = h5.load_h5('results.h5', 'fig_microcircuit/rates_sim')
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit', circuit_params, 
                               analysis_type='stationary', 
                               from_file=not calcAnaAll)
        rates_calc = circ.th_rates
        h5.add_to_h5('results.h5',{'fig_microcircuit':{
            'rates_calc': rates_calc}}, 'a', overwrite_dataset=True)
    else:
        rates_calc = h5.load_h5('results.h5','fig_microcircuit/rates_calc')
    return np.asarray(rates_sim), rates_calc
Beispiel #37
0
def get_sim_data_spec(calcData, a, conn, pop):
    print 'Get power spectra from simulation.'
    label = str(a) + str(conn[0]) + str(conn[1])
    if conn == [3, 3]:
        folder_base = 'data_zval_L4IL4I'
    elif conn == [5, 4]:
        folder_base = 'data_zval_L5EL5I'
    folder = folder_base + str(1 + a)
    if calcData:
        nr_window = 10
        bin_size = 1.0
        dt = (10000.0 - 300.0) / nr_window
        Ts = [300.0 + i * dt for i in range(nr_window)]
        psim = 0
        for k, T in enumerate(Ts):
            fsim, p_sim = rs.get_spec(folder,
                                      pop,
                                      T + dt,
                                      T,
                                      fmax=500.0,
                                      bin_size=bin_size)
            psim += np.asarray(p_sim) / float(len(Ts))
        powers = psim
        freqs = np.asarray(fsim)
        h5.add_to_h5(
            'results.h5',
            {'Z_validation': {
                label: {
                    'freqs_sim': freqs,
                    'p_sim': powers
                }
            }},
            'a',
            overwrite_dataset=True)
    else:
        path_base = 'Z_validation/' + label
        freqs = h5.load_h5('results.h5', path_base + '/freqs_sim')
        powers = h5.load_h5('results.h5', path_base + '/p_sim')
    return freqs, powers
def get_diffapprox_rates(params, calc=False, read_old_results=False):
    folder = get_folder(params)
    label = 'plot_rates_' + folder

    if read_old_results:
        path = '/Users/bos/Documents/pittsburgh/disinhibitory_circuits/py/E-I-VIP/'
        rates = h5.load_h5(path + 'results.h5', label + '/rates_calc')
        return rates

    circuit_params = set_circuit_params(params)

    if calc:
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates = circ.th_rates
        h5.add_to_h5('results.h5',{label:{'rates_calc': rates}},
            'a', overwrite_dataset=True)
    else:
        rates = h5.load_h5('results.h5', label + '/rates_calc')
    return rates
def get_diffapprox_rates_Next_array(params, Next_array, calc=False):
    folder = get_folder(params)
    label = 'plot_rates_Next_array' + folder
    label += str(Next_array[0]) + str(Next_array[1]-Next_array[0])
    label += str(Next_array[-1])
    circuit_params = set_circuit_params(params)

    if calc:
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates = np.zeros_like(Next_array)
        for i in range(Next_array.shape[0]):
            circuit_params['Next']= Next_array[i]
            circ.alter_default_params(circuit_params)
            rates[i] = circ.th_rates
        h5.add_to_h5('results.h5',{label:{'rates_calc': rates}},
            'a', overwrite_dataset=True)
    else:
        rates = h5.load_h5('results.h5', label + '/rates_calc')
    return rates
def get_gain_sim(rates0, params, Kstim, T=10000.0, tmin=300.0, calc=False, read_old_results=False):
    stim_params = params.copy()
    stim_params['KEext'] = params['KEext'] + Kstim
    stim_params['KIext'] = params['KIext'] + Kstim
    folder = get_folder(stim_params)
    label = 'plot_rates_gain_sim' + str(Kstim) + folder

    if read_old_results:
        path = '/Users/bos/Documents/pittsburgh/disinhibitory_circuits/py/E-I-VIP/'
        g = h5.load_h5(path + 'results.h5', label + '/g')
        return g

    if calc:
        rates_sim = []
        rate = rs.get_all_rates(folder, 0, T, tmin)
        rate = np.mean(rate)
        # divide by 8 since this is the external firing rate in simulation
        g = (rate-rates0[0])/(Kstim*8.)
        h5.add_to_h5('results.h5',{label:{
            'g': g}}, 'a', overwrite_dataset=True)
    else:
        g = h5.load_h5('results.h5', label + '/g')
    return g
Beispiel #41
0
def get_spectra(calcAna, calcAnaAll):
    print('Calculate spectra.')
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit', circuit_params,
                               fmax=400.0, from_file=not calcAnaAll)
        freqs, power = circ.create_power_spectra()
        power_layer = []
        for i, layer in enumerate(ph.layers):
            M_red = np.zeros((8, 8))
            M_red[2 * i: 2 * i + 2, 2 * i: 2 * i + 2] = np.ones((2, 2))
            circ.reduce_connectivity(M_red)
            freqs, power_red = circ.create_power_spectra()
            power_layer.append([power_red[2 * i], power_red[2 * i + 1]])
            circ.restore_full_connectivity()
        h5.add_to_h5('results.h5', {'eigenvalue_trajectories': {
            'freqs_spec': freqs, 'power_layer': power_layer,
            'power': power}}, 'a', overwrite_dataset=True)
    else:
        freqs = h5.load_h5('results.h5', 'eigenvalue_trajectories/freqs_spec')
        power_layer = h5.load_h5('results.h5',
                                 'eigenvalue_trajectories/power_layer')
        power = h5.load_h5('results.h5', 'eigenvalue_trajectories/power')
    return freqs, power_layer, power
Beispiel #42
0
def get_eigenvalues_layers(calcAna, calcAnaAll):
    print('Calculate eigenvalues.')
    if calcAna or calcAnaAll:
        circ = circuit.Circuit('microcircuit', circuit_params,
                               fmax=400.0, from_file=not calcAnaAll)
        eigs_layer = []
        for i, layer in enumerate(ph.layers):
            M_red = np.zeros((8, 8))
            M_red[2 * i: 2 * i + 2, 2 * i: 2 * i + 2] = np.ones((2, 2))
            circ.reduce_connectivity(M_red)
            freqs, eigs = circ.create_eigenvalue_spectra('MH')
            eigs_layer.append(eigs[0])
            eigs_layer.append(eigs[1])
            circ.restore_full_connectivity()
        eigs_layer = np.transpose(np.asarray(eigs_layer))
        h5.add_to_h5('results.h5', {'eigenvalue_trajectories': {
            'freq_layer': freqs, 'eigs_layer': eigs_layer}},
            'a', overwrite_dataset=True)
    else:
        freqs = h5.load_h5('results.h5', 'eigenvalue_trajectories/freq_layer')
        eigs_layer = h5.load_h5('results.h5',
                                'eigenvalue_trajectories/eigs_layer')
    return freqs, eigs_layer
def get_diffapprox_Next(params, rates, calc=False):
    folder = get_folder(params)
    label = 'plot_rates_Next_' + folder + str(rates)
    if rates[2]>0:
        label += 'rS_' + str(rates[2])
    circuit_params = set_circuit_params(params)

    if calc:
        print 'calculate Next'
        circ = circuit.Circuit('3dcircuit',
                               circuit_params,
                               analysis_type='stationary',
                               from_file='False')
        rates_calc = circ.th_rates
        M = circ.I*circ.W
        Next, betas = circ.get_external_input(rates)
        h5.add_to_h5('results.h5', {label:{'Next': Next, 'betas': betas, 'M': M}},
        'a', overwrite_dataset=True)
    else:
        Next = h5.load_h5('results.h5', label + '/Next')
        betas = h5.load_h5('results.h5', label + '/betas')
        M = h5.load_h5('results.h5', label + '/M')
    return Next, betas, M
def overwrite_dataset(label=''):
    res = {'a':5}
    h5w.add_to_h5(fn,res,write_mode='w',dict_label=label)
    res.clear()
    res = {'a':6}
    h5w.add_to_h5(fn,res,write_mode='a',overwrite_dataset=False,dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    assert(res['a'] == 5) # dataset should still contain old value
    res.clear()
    res = {'a':6}
    h5w.add_to_h5(fn,res,write_mode='a',overwrite_dataset=True,dict_label=label)
    res.clear()
    res = h5w.load_h5(fn,label)
    assert(res['a'] == 6) # dataset should contain new value
def store_none():
    res = {'a1':None}
    h5w.add_to_h5(fn,res,write_mode='w')
    res.clear()
    res = h5w.load_h5(fn)
    assert(res['a1'] == None)
def store_and_load_with_compression() :
    data = {'a':1,'test1':{'b':2},'test2':{'test3':{'c':numpy.array([1,2,3])}}}
    h5w.add_to_h5(fn,data,write_mode='w', compression='gzip')
    res = h5w.load_h5(fn)
 def add_to_file(self, dic):
     '''Adds data to h5 file, with data and path specified in dict.'''
     self.file_base = os.getcwd()+'/'+self.params['datafile']
     h5.add_to_h5(self.file_base, {self.param_hash: dic}, 
                  'a', overwrite_dataset=True)