import pandas as pd import h5py import json import os import numpy as np from ast import literal_eval # todo: run some and test # todo: Model fI, rheo_{}_corr, AUC_{}_corr # %% todo: Model fI # for each model # | (index) | mag | alt | type | F | I | # | 0 | -10 | m | shift | array | array | models = ['RS_pyramidal', 'RS_inhib', 'FS', 'RS_pyramidal_Kv', 'RS_inhib_Kv', 'FS_Kv', 'Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Kv_only', 'STN', 'STN_Kv', 'STN_Kv_only'] model_names = ['RS pyramidal', 'RS inhibitory', 'FS', 'RS pyramidal +Kv1.1', 'RS inhibitory +Kv1.1', 'FS +Kv1.1', 'Cb stellate', 'Cb stellate +Kv1.1', 'Cb stellate $\Delta$Kv1.1', 'STN', 'STN +Kv1.1', 'STN $\Delta$Kv1.1'] # for each model get csv file with all shifts, scale and g for model_name in models: df = pd.DataFrame(columns=['mag', 'alt', 'type', 'F', 'I']) folder = '../Neuron_models/{}'.format(model_name) fname = os.path.join(folder, "{}.hdf5".format(model_name)) # for each alt in model # with h5py.File(fname, "r+") as f: # df.loc[model_name, 'alt'] = f['data'].attrs['alteration'] # test = f['data'].attrs['alteration_info'].replace(' ', ',') # alt_info = literal_eval(test) # var = alt_info[0] # alt_type = alt_info[1] # df.loc[model_name, 'mag'] = var # df.loc[model_name, 'type'] = alt_type # df.loc[model_name, 'F'] = f['analysis']['F_inf'][:] # I_mag = np.arange(f['data'].attrs['I_low'], f['data'].attrs['I_high'], # (f['data'].attrs['I_high'] - f['data'].attrs['I_low']) / f['data'].attrs['stim_num']) * 1000 # df.loc[model_name, 'I'] = I # df.to_csv('./Model_fI/{}.csv'.format(model_name)) # %% todo: rheo/AUC_{}_corr # | (index) | model | corr | p_value | g | color rheo_corr = pd.DataFrame(columns=['model', 'corr', 'p_value', 'g', 'color']) rheo_corr.to_csv('rheo_corr.csv') AUC_corr = pd.DataFrame(columns=['model', 'corr', 'p_value', 'g', 'color']) AUC_corr.to_csv('AUC_corr.csv') # %% firing_values.csv,model_spiking.csv, model_F_inf.csv # DONE #################################################### import numpy as np import pandas as pd models = ['RS_pyramidal', 'RS_inhib', 'FS', 'RS_pyramidal_Kv', 'RS_inhib_Kv', 'FS_Kv', 'Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Kv_only', 'STN', 'STN_Kv', 'STN_Kv_only'] model_names = ['RS pyramidal', 'RS inhibitory', 'FS', 'RS pyramidal +Kv1.1', 'RS inhibitory +Kv1.1', 'FS +Kv1.1', 'Cb stellate', 'Cb stellate +Kv1.1', 'Cb stellate $\Delta$Kv1.1', 'STN', 'STN +Kv1.1', 'STN $\Delta$Kv1.1'] firing_values = pd.DataFrame(columns=models, index=['spike_ind', 'ramp_up', 'ramp_down']) # firing_values.loc['spike_ind', :] = np.array( # [0.3, 0.04375, 0.25, 0.3, 0.0875, 0.25, 0.3, 0.65, 0.375, 0.125, 0.475, 0.4]) models = ['RS_pyr', 'RS_pyr_Kv', 'RS_inhib', 'RS_inhib_Kv', 'FS', 'FS_Kv', 'Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Delta_Kv', 'STN', 'STN_Kv', 'STN_Delta_Kv'] col_names = ['I', 'I_inhib'] for mod in models: col_names.append(mod) model_F_inf = pd.DataFrame(columns=col_names) col_names = ['t'] for mod in models: col_names.append(mod) spiking = pd.DataFrame(columns=col_names) # index for example trace spike_ind = {'RS_pyramidal': 60, 'RS_inhib':25, 'FS':50, 'RS_pyramidal_Kv':60, 'RS_inhib_Kv':50, 'FS_Kv':50, 'Cb_stellate':60, 'Cb_stellate_Kv':130, 'Cb_stellate_Kv_only':75, 'STN': 25, 'STN_Kv':95, 'STN_Kv_only':80} for model_name in models: folder = '../Neuron_models/{}'.format(model_name) fname = os.path.join(folder, "{}.hdf5".format(model_name)) # RS_inhib with h5py.File(fname, "r+") as f: I_mag = np.arange(f['data'].attrs['I_low'], f['data'].attrs['I_high'], (f['data'].attrs['I_high'] - f['data'].attrs['I_low']) / f['data'].attrs['stim_num']) * 1000 start = np.int(f['data'].attrs['initial_period'] * 1 / f['data'].attrs['dt']) stim_len = np.int((f['data'].attrs['stim_time'] - start) * f['data'].attrs['dt']) time = np.arange(0, stim_len, f['data'].attrs['dt']) spiking[model_name] = f['data']['V_m'][spike_ind[model_name]][start:] model_F_inf[model_name] = f['analysis']['F_inf'][:] firing_values.loc['spike_ind', model_name] = I_mag[spike_ind[model_name]] firing_values.loc['ramp_down', model_name] = f['analysis']['ramp_I_down'][()] firing_values.loc['ramp_up', model_name] = f['analysis']['ramp_I_up'][()] firing_values.to_csv('firing_values.csv') spiking.to_csv('model_spiking.csv') model_F_inf.to_csv('model_F_inf.csv') # %% model_ramp.csv # DONE ######################################################################### # | (index) | t | models .... import numpy as np import pandas as pd models = ['RS_pyramidal_Kv', 'RS_inhib_Kv', 'FS_Kv', 'Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Kv_only', 'STN', 'STN_Kv', 'STN_Kv_only'] model_names = ['RS pyramidal', 'RS inhibitory', 'FS', 'Cb stellate', 'Cb stellate +Kv1.1', 'Cb stellate $\Delta$Kv1.1', 'STN', 'STN +Kv1.1', 'STN $\Delta$Kv1.1'] col_names = ['t'] for mod in models: col_names.append(mod) model_ramp = pd.DataFrame(columns=col_names) sec = 4 dt = 0.01 ramp_len = int(sec * 1000 * 1 / dt) t_ramp = np.arange(0, ramp_len) * dt model_ramp.loc[:, 't'] = t_ramp for model_name in models: folder = '../Neuron_models/{}'.format(model_name) fname = os.path.join(folder, "{}.hdf5".format(model_name)) # RS_inhib with h5py.File(fname, "r+") as f: model_ramp.loc[:, model_name] = f['analysis']['V_m_ramp'][()] model_ramp.to_csv('model_ramp.csv') #%% sim_mut_AUC.csv, sim_mut_rheo.csv # DONE ######################################################################### # generate mutation plot data mutations = json.load(open("../mutations_effects_dict.json")) keys_to_remove = ['V408L', 'T226R', 'R239S', 'R324T'] for key in keys_to_remove: del mutations[key] mutations_f = [] mutations_n = [] for mut in mutations: mutations_n.append(mut) mutations_f.append(mut.replace(" ", "_")) models = ['RS_pyramidal_Kv', 'RS_inhib_Kv', 'FS_Kv', 'Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Kv_only', 'STN', 'STN_Kv', 'STN_Kv_only'] model_names = ['RS pyramidal', 'RS inhibitory', 'FS', 'Cb stellate', 'Cb stellate +Kv1.1', 'Cb stellate $\Delta$Kv1.1', 'STN', 'STN +Kv1.1', 'STN $\Delta$Kv1.1'] AUC = pd.DataFrame(columns=mutations_n) rheobase = pd.DataFrame(columns=mutations_n) save_folder = '../KCNA1_mutations' if not os.path.isdir(save_folder): os.makedirs(save_folder) for model_name in models: folder = '../KCNA1_mutations/{}'.format(model_name) for mut in list(mutations_n): fname = os.path.join(folder, "{}.hdf5".format(mut.replace(" ", "_"))) with h5py.File(fname, "r+") as f: rheobase.loc[mut.replace(" ", "_"), model_name] = f['analysis']['rheobase'][()] AUC.loc[mut.replace(" ", "_"), model_name] = f['analysis']['AUC'][()] AUC.replace(0., np.NaN, inplace=True) rheobase.replace(0., np.NaN, inplace=True) rheobase = (rheobase - rheobase.loc['WT', :]) /rheobase.loc['WT', :] AUC = (AUC - AUC.loc['WT', :]) /AUC.loc['WT', :] AUC.to_csv(os.path.join(save_folder, 'sim_mut_AUC.csv')) rheobase.to_csv(os.path.join(save_folder, 'sim_mut_rheobase.csv')) #########################################################################################################################