Started working on Uli's comments

This commit is contained in:
nkoch1 2022-09-04 22:45:56 -04:00
parent c2c6a9cc78
commit c79560d191
32 changed files with 1166 additions and 85 deletions

134
Code/FS_mut_pd.py Normal file
View File

@ -0,0 +1,134 @@
# -*- coding: utf-8 -*-
"""
Created on Sat May 29 21:10:20 2021
@author: nils
"""
import numpy as np
import os
import h5py
import json
from Utility import capacitance, stimulus_init, init_dict, NumpyEncoder
# model parameters
dt = 0.01
sec = 2
low = 0
high = 0.001
number_steps = 200
initial_period = 1000
num_gating = 10
num_current = 7
C, surf_area = capacitance(56.9, 1)
stim_time, I_in, stim_num, V_m = stimulus_init(low, high, number_steps, initial_period, dt, sec)
shift, scale, slope_shift, E, currents_included, b_param, g = init_dict(
np.array(['m', 'h', 'n', 'q', 'r', 'p', 's', 'u', 's_mut', 'u_mut']))
tau_max_p = 502
V_init = -70
V_T = -57.9
# initialize arrays
current = np.zeros((num_current, stim_num))
gating_out = np.zeros((num_gating, stim_num))
# gating parameters
b_param = {}
b_param['m'] = np.array([-34.33054521, -8.21450277, 1.42295686])
b_param['h'] = np.array([-34.51951036, 4.04059373, 1., 0.])
b_param['n'] = np.array([-63.76096946, -13.83488194, 7.35347425])
b_param['q'] = np.array([-39.03684525, -5.57756176, 2.25190197])
b_param['r'] = np.array([-57.37, 20.98, 1.])
b_param['p'] = np.array([-45., -9.9998807337, 1.])
b_param['s'] = np.array([-14.16, -10.15, 1.])
b_param['u'] = np.array([-31., 5.256, 1., 0.245])
b_param['s_mut'] = np.array([-14.16, -10.15, 1.])
b_param['u_mut'] = np.array([-31., 5.256, 1., 0.245])
mut_act_Vhalf_wt = -30.01851851851851
mut_act_k_wt = -7.7333333333333325
s_diff_Vhalf = mut_act_Vhalf_wt - b_param['s'][0]
s_diff_k = mut_act_k_wt - b_param['s'][1]
b_param['s'][1] = b_param['s'][1] + s_diff_k
b_param['u'][1] = b_param['u'][1] + s_diff_k
b_param['s'][0] = b_param['s'][0] + s_diff_Vhalf
b_param['u'][0] = b_param['u'][0] + s_diff_Vhalf
b_param['s_mut'][1] = b_param['s_mut'][1] + s_diff_k
b_param['u_mut'][1] = b_param['u_mut'][1] + s_diff_k
b_param['s_mut'][0] = b_param['s_mut'][0] + s_diff_Vhalf
b_param['u_mut'][0] = b_param['u_mut'][0] + s_diff_Vhalf
# reversal potentials
E["Na"] = 50.
E["K"] = -90.
E["Ca"] = 120.
E["Leak"] = -70.4
# model currents
currents_included["Na"] = True
currents_included["Kd"] = True
currents_included["Kv"] = True
currents_included["Kv_mut"] = True
currents_included["L"] = False
currents_included["M"] = True
currents_included["Leak"] = True
# model conductances
Kv_ratio = 0.1
g["Na"] = 58. * surf_area
g["Kd"] = 3.9 * (1 - Kv_ratio) * surf_area
g["M"] = 0.075 * surf_area
if currents_included["Kv_mut"] == True:
g["Kv"] = 3.9 * Kv_ratio / 2 * surf_area
else:
g["Kv"] = 3.9 * Kv_ratio / 2 * surf_area * 2
g["Kv_mut"] = 3.9 * Kv_ratio / 2 * surf_area
g["L"] = 0. * surf_area
g["Leak"] = 0.038 * surf_area
# save folder
folder = './KCNA1_mutations/FS'
if not os.path.isdir(folder):
os.makedirs(folder)
# mutation properties
mutations = json.load(open("mutations_effects_dict.json"))
# prominence = 50
# # min_spike_height = 0
# desired_AUC_width = high/5
#
# Parallel(n_jobs=8, verbose=9)(
# delayed(Pospischil_multi)(V_init, V_T, g, E, I_in, dt, currents_included, stim_time, stim_num, C, tau_max_p,
# shift, scale, b_param, slope_shift, gating_out, current, prominence,
# desired_AUC_width, mutations, mut, folder, high,low, number_steps, initial_period, sec, save_gating=True)
# for mut in list(mutations.keys()))
#%% Get pd Dataframes for certain variables
import pandas as pd
AUC = pd.DataFrame(columns=mutations.keys())
AUC_rel = pd.DataFrame(columns=mutations.keys())
rheobase = pd.DataFrame(columns=mutations.keys())
rheobase_fit = pd.DataFrame(columns=mutations.keys())
rheobase_null_fit = pd.DataFrame(columns=mutations.keys())
for mut in list(mutations.keys()):
fname = os.path.join(folder, "{}.hdf5".format(mut.replace(" ", "_")))
f = h5py.File(fname, "r")
AUC['{}'.format(mut.replace(" ", "_"))] = f['analysis']['AUC']
AUC_rel['{}'.format(mut.replace(" ", "_"))] = f['analysis']['AUC_rel']
rheobase['{}'.format(mut.replace(" ", "_"))] = f['analysis']['rheobase']
rheobase_fit['{}'.format(mut.replace(" ", "_"))] = f['analysis']['rheobase_fit']
rheobase_null_fit['{}'.format(mut.replace(" ", "_"))] = f['analysis']['rheobase_null_fit']
top_dir = '../KCNA1_mut'
model_name = 'FS'
save_folder = os.path.join(top_dir, 'mut_summary_df')
if not os.path.isdir(save_folder):
os.makedirs(save_folder)
AUC.to_json(os.path.join(save_folder, '{}_AUC.json'.format(model_name)))
AUC_rel.to_json(os.path.join(save_folder, '{}_AUC_rel.json'.format(model_name)))
rheobase.to_json(os.path.join(save_folder, '{}_rheobase.json'.format(model_name)))
rheobase_fit.to_json(os.path.join(save_folder, '{}_rheobase_fit.json'.format(model_name)))
rheobase_null_fit.to_json(os.path.join(save_folder, '{}_rheobase_null_fit.json'.format(model_name)))

View File

@ -0,0 +1,227 @@
import h5py
import numpy as np
import os
import pandas as pd
spiking = pd.DataFrame(columns=['t', 'RS Pyramidal','RS Inhibitory','FS','IB',
'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'IB +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'Cb stellate','Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$','STN','STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'])
values = pd.DataFrame(index = ['spike_ind', 'ramp_up','ramp_down'], columns=['RS Pyramidal','RS Inhibitory','FS','IB',
'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'IB +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$','Cb stellate','Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$','STN','STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'])
F = pd.DataFrame(columns=['I','I_inhib', 'RS Pyramidal','RS Inhibitory','FS','IB',
'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'IB +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$','Cb stellate','Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$','STN','STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'])
# RS Pyramidal #########################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/RS_pyramidal.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 60
spiking['RS Pyramidal'] = f['data']['V_m'][ind][start:]
spiking['t'] = time
F['I'] = I_mag
F['RS Pyramidal'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'RS Pyramidal'] = I_mag[ind]
values.loc['ramp_up', 'RS Pyramidal'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'RS Pyramidal'] = f['analysis']['ramp_I_down'][()]
# RS Inhibitory #########################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/RS_inhib.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 25
spiking['RS Inhibitory'] = f['data']['V_m'][ind][start:]
F['I_inhib'] = I_mag
F['RS Inhibitory'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'RS Inhibitory'] = I_mag[ind]
values.loc['ramp_up', 'RS Inhibitory'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'RS Inhibitory'] = f['analysis']['ramp_I_down'][()]
# FS#####################################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/FS.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 50
spiking['FS'] = f['data']['V_m'][ind][start:]
F['FS'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'FS'] = I_mag[ind]
values.loc['ramp_up', 'FS'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'FS'] = f['analysis']['ramp_I_down'][()]
# RS Pyramidal Kv #########################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/RS_pyramidal_Kv.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 60
spiking['RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
spiking['t'] = time
F['I'] = I_mag
F['RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
# RS Inhibitory #########################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/RS_inhib_Kv.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 50
spiking['RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
F['I_inhib'] = I_mag
F['RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
# FS#####################################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/FS_Kv.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 50
spiking['FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
F['FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
# Cb Stellate cell ######################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/Cb_stellate.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 60
spiking['Cb stellate'] = f['data']['V_m'][ind][start:]
F['Cb stellate'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'Cb stellate'] = I_mag[ind]
values.loc['ramp_up', 'Cb stellate'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'Cb stellate'] = f['analysis']['ramp_I_down'][()]
# 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'
# Cb stellate Kv #############################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/Cb_stellate_Kv.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 130
spiking['Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
F['Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
# 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'
# Cb stellate Kv only ####################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/Cb_stellate_Delta_Kv.hdf5.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 75
spiking['Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
F['Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
# STN ###################################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/STN.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 25
spiking['STN'] = f['data']['V_m'][ind][start:]
F['STN'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'STN'] = I_mag[ind]
values.loc['ramp_up', 'STN'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'STN'] = f['analysis']['ramp_I_down'][()]
# 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
# STN Kv ##################################################################################################
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/STN_Kv.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 95
spiking['STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
F['STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
# 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'
# STN Kv only #############################################################################################3
script_dir = os.path.dirname(os.path.realpath("__file__"))
fname = os.path.join(script_dir, '../Neuron_models/STN_Delta_Kv.hdf5')
f = h5py.File(fname, "r")
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'])
ind = 80
spiking['STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['data']['V_m'][ind][start:]
F['STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['F_inf'][:]
values.loc['spike_ind', 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = I_mag[ind]
values.loc['ramp_up', 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_up'][()]
values.loc['ramp_down', 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$'] = f['analysis']['ramp_I_down'][()]
#%%
spiking.to_csv('model_spiking.csv')
values.to_csv('firing_values.csv')
F.to_csv('model_F_inf.csv')

Binary file not shown.

Binary file not shown.

View File

@ -105,7 +105,7 @@ g["T"] = 0.45045 * surf_area
g["Leak"] = 0.07407 * surf_area
# save folder
folder = './KCNA1_mutations/Cb_stellate_Kv_only'
folder = './KCNA1_mutations/Cb_stellate_Delta_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)
#

View File

@ -112,7 +112,7 @@ g["Leak"] = 0.035 * surf_area
# save folder
folder = './KCNA1_mutations/STN_Kv_only'
folder = './KCNA1_mutations/STN_Delta_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)
#

View File

@ -0,0 +1,477 @@
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: develop consistent file structure
# todo: Model fI
# %% 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')
# # AUC_shift = pd.DataFrame(columns=['alteration', 'RS Pyramidal','RS Inhibitory','FS','IB',
# # 'RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$','Cb stellate','Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$','STN','STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$'])
# #
# # AUC_slope = pd.DataFrame(columns=['alteration','RS Pyramidal','RS Inhibitory','FS','IB','RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$',
# # 'Cb stellate','Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$','STN','STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$'])
# #
# # AUC_g = pd.DataFrame(columns=['alteration','RS Pyramidal','RS Inhibitory','FS','IB','RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$',
# # 'Cb stellate','Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$','STN','STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$'])
# #
# # script_dir = os.path.dirname(os.path.realpath("__file__"))
# # fname = os.path.join(script_dir, )
# # # f = h5py.File(fname, "r")
# #
# # models = ['RS_pyramidal', 'RS_inhib', 'FS', 'IB','Cb_stellate','Cb_stellate_Kv','Cb_stellate_Kv_only','STN','STN_Kv',
# # 'STN_Kv_only']
# # model_labels = ['RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$','Cb stellate','Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$','STN','STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$']
# # posp_models = ['RS_pyramidal', 'RS_inhib', 'FS', 'IB']
# # posp_model_labels = ['RS Pyramidal','RS Inhibitory', 'FS','IB']
# #
# #
# # shift_interest = 'n'
# # for i in range(len(models)):
# # with open('./SA_summary_df/{}_shift_AUC_rel_acc.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['0', :])/ data.loc['0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # AUC_shift[model_labels[i]] =data[shift_interest]
# # for i in range(len(posp_models)):
# # with open('./SA_summary_df_pospischil/{}_shift_AUC_rel_acc_pospischil.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['0', :])/ data.loc['0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # AUC_shift[posp_model_labels[i]] =data[shift_interest]
# # AUC_shift['alteration'] = AUC_shift.index
# #
# #
# #
# # slope_interest = 's'
# # for i in range(len(models)):
# # with open('./SA_summary_df/{}_slope_AUC_rel_acc.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :])/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # try:
# # AUC_slope[model_labels[i]] = data[slope_interest]
# # except:
# # pass
# # for i in range(len(posp_models)):
# # with open('./SA_summary_df_pospischil/{}_slope_AUC_rel_acc_pospischil.json'.format(models[i])) as json_file:
# #
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :])/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # try:
# # AUC_slope[posp_model_labels[i]] =data[slope_interest]
# # except:
# # pass
# # AUC_slope['alteration'] = AUC_slope.index
# #
# # g_interest = 'Kd'
# # for i in range(len(models)):
# # with open('./SA_summary_df/{}_g_AUC_rel_acc.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :])/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # AUC_g[model_labels[i]] =data[g_interest]
# # for i in range(len(posp_models)):
# # with open('./SA_summary_df_pospischil/{}_g_AUC_rel_acc_pospischil.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :])/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # AUC_g[posp_model_labels[i]] =data[g_interest]
# # AUC_g['alteration'] = AUC_g.index
# #
# # AUC_shift.to_csv('AUC_shift_ex.csv')
# # AUC_slope.to_csv('AUC_slope_ex.csv')
# # AUC_g.to_csv('AUC_g_ex.csv')
#
#
# # rheo_shift = pd.DataFrame(columns=['alteration', 'RS Pyramidal', 'RS Inhibitory', 'FS', 'IB',
# # 'RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$','Cb stellate',
# # 'Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$', 'STN',
# # 'STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$'])
# #
# # rheo_slope = pd.DataFrame(columns=['alteration', 'RS Pyramidal', 'RS Inhibitory', 'FS', 'IB','RS Pyramidal +$K_V1.1$',
# # 'RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$',
# # 'Cb stellate',
# # 'Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$', 'STN',
# # 'STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$'])
# #
# # rheo_g = pd.DataFrame(columns=['alteration', 'RS Pyramidal', 'RS Inhibitory', 'FS', 'IB',
# # 'RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$',
# # 'FS +$K_V1.1$','IB +$K_V1.1$','Cb stellate',
# # 'Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$', 'STN',
# # 'STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$'])
# #
# # script_dir = os.path.dirname(os.path.realpath("__file__"))
# # fname = os.path.join(script_dir, )
# # # f = h5py.File(fname, "r")
# #
# # models = ['RS_pyramidal', 'RS_inhib', 'FS', 'IB', 'Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Kv_only', 'STN',
# # 'STN_Kv',
# # 'STN_Kv_only']
# # model_labels = ['RS Pyramidal +$K_V1.1$', 'RS Inhibitory +$K_V1.1$', 'FS +$K_V1.1$', 'IB +$K_V1.1$', 'Cb stellate',
# # 'Cb stellate +$K_V1.1$',
# # 'Cb stellate $\Delta$$K_V1.1$', 'STN',
# # 'STN +$K_V1.1$',
# # 'STN $\Delta$$K_V1.1$']
# # posp_models = ['RS_pyramidal', 'RS_inhib', 'FS', 'IB']
# # posp_model_labels = ['RS Pyramidal','RS Inhibitory', 'FS','IB']
# #
# # shift_interest = 's'
# # for i in range(len(models)):
# # with open('./SA_summary_df/{}_shift_rheo.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['0', :]) #/ data.loc['0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # try:
# # rheo_shift[model_labels[i]] = data[shift_interest]
# # except:
# # pass
# # for i in range(len(posp_models)):
# # with open('./SA_summary_df_pospischil/{}_shift_rheo_pospischil.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['0', :]) #/ data.loc['0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # try:
# # rheo_shift[posp_model_labels[i]] = data[shift_interest]
# # except:
# # pass
# # rheo_shift['alteration'] = rheo_shift.index
# #
# # slope_interest = 'u'
# # for i in range(len(models)):
# # with open('./SA_summary_df/{}_slope_rheo.json'.format(models[i])) as json_file:
# #
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :]) #/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # try:
# # rheo_slope[model_labels[i]] = data[slope_interest]
# # except:
# # pass
# # for i in range(len(posp_models)):
# # with open('./SA_summary_df_pospischil/{}_slope_rheo_pospischil.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :]) #/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # # if models[i] == 'STN_Kv_only' or models[i] == 'Cb_stellate_Kv_only':
# # # data = data.drop(columns=['A'])
# # try:
# # rheo_slope[posp_model_labels[i]] = data[slope_interest]
# # except:
# # pass
# # rheo_slope['alteration'] = rheo_slope.index
# #
# # g_interest = 'Leak'
# # for i in range(len(models)):
# # with open('./SA_summary_df/{}_g_rheo.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :]) #/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # rheo_g[model_labels[i]] = data[g_interest]
# # for i in range(len(posp_models)):
# # with open('./SA_summary_df_pospischil/{}_g_rheo_pospischil.json'.format(models[i])) as json_file:
# # data = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # data.replace(0., np.NaN, inplace=True)
# # data = (data - data.loc['1.0', :]) #/ data.loc['1.0', :] # normalize AUC
# # data.sort_index(inplace=True)
# # rheo_g[posp_model_labels[i]] = data[g_interest]
# # rheo_g['alteration'] = rheo_g.index
# #
# #
# # rheo_shift.to_csv('rheo_shift_ex.csv')
# # rheo_slope.to_csv('rheo_slope_ex.csv')
# # rheo_g.to_csv('rheo_g_ex.csv')
#
# %% firing_values.csv,model_spiking.csv, model_F_inf.csv
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
# | (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
# 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'))
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
#%% sim_mut_rheo.csv, sim_mut_AUC.csv
# models = ['RS_pyramidal', 'RS_inhib', 'FS', 'IB','Cb_stellate','Cb_stellate_Kv','Cb_stellate_Kv_only','STN','STN_Kv','STN_Kv_only']
# mutations = json.load(open("./mutations_effects_dict.json"))
# mutations2 = []
# for mut in mutations:
# mutations2.append(mut.replace(" ", "_"))
# AUC_total = pd.DataFrame(columns=list(mutations2), index=models)
# AUC_rel_total = pd.DataFrame(columns=list(mutations2), index=models)
# rheo_total = pd.DataFrame(columns=list(mutations2), index=models)
# rheo_fit_total = pd.DataFrame(columns=list(mutations2), index=models)
# for mod in models:
# print(mod)
# with open('./mut_summary_df/{}_AUC.json'.format(mod)) as json_file:
# df = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # df[mutations2].to_json('./mut_summary_df/{}_AUC.json'.format(mod))
# AUC_total.loc[mod, :] = df.loc['0',:]
# with open('./mut_summary_df/{}_AUC_rel.json'.format(mod)) as json_file:
# df = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # df[mutations2].to_json('./mut_summary_df/{}_AUC.json'.format(mod))
# AUC_rel_total.loc[mod, :] = df.loc['0',:]
# with open('./mut_summary_df/{}_rheobase.json'.format(mod)) as json_file:
# df = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # df[mutations2].to_json('./mut_summary_df/{}_AUC.json'.format(mod))
# rheo_total.loc[mod, :] = df.loc['0',:]
# with open('./mut_summary_df/{}_rheobase_fit.json'.format(mod)) as json_file:
# df = pd.read_json(json_file, convert_dates=False, convert_axes=False)
# # df[mutations2].to_json('./mut_summary_df/{}_AUC.json'.format(mod))
# rheo_fit_total.loc[mod, :] = df.loc['0',:]
#
# # AUC_diff = (AUC_score.subtract(AUC_score['wt'], axis =0))#.divide(AUC_score['wt'], axis=0)
# AUC_total.to_json('mutation_AUC_summary.json')
# AUC_rel_total.to_json('mutation_AUC_rel_summary.json')
# rheo_total.to_json('mutation_rheo_summary.json')
# rheo_fit_total.to_json('mutation_rheo_fit_summary.json')
# models = ['RS_pyramidal', 'RS_inhib', 'FS', 'IB','Cb_stellate', 'Cb_stellate_Kv', 'Cb_stellate_Kv_only', 'STN',
# 'STN_Kv', 'STN_Kv_only']
# model_names = ['RS pyramidal', 'RS inhibitory', 'FS', 'IB', 'Cb stellate', 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$',
# 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', 'STN', 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']
#
# all_mut_rheo = pd.DataFrame(columns=[model_names])
# all_mut_AUC = pd.DataFrame(columns=[model_names])
# for mod in range(len(models)):
# AUC = pd.read_json('./CBZ_summary_df/{}_CBZ_AUC_rel_acc.json'.format(models[mod]), convert_axes=False,
# convert_dates=False)
# rheo = pd.read_json('./CBZ_summary_df/{}_CBZ_rheobase.json'.format(models[mod]), convert_axes=False,
# convert_dates=False)
# AUC.index = AUC.index.astype(float)
#
# rheo.index = rheo.index.astype(float)
#
# conc = np.array(AUC.index)
# mut_names = AUC.columns
# for m in mut_names:
# rheo[m] = rheo[m].map(lambda x: x[0])
# AUC[m] = AUC[m].map(lambda x: x[0])
# AUC.replace(0., np.NaN, inplace=True)
# rheo.replace(0., np.NaN, inplace=True)
# AUC = (AUC - AUC.loc[0, 'wt']) / AUC.loc[0, :] # normalize AUC
# AUC.sort_index(inplace=True)
# rheo = (rheo - rheo.loc[0, 'wt'])#/ rheo.loc[0, :] # normalize AUC
# rheo.sort_index(inplace=True)
#
#
# for mut in mut_names: # for each mutation
# x_mut = rheo.loc[:, mut.replace(" ", "_")]
# y_mut = AUC.loc[:, mut.replace(" ", "_")]
#
# all_mut_rheo[model_names[mod]] = rheo.loc[0.0, mut_names]
# all_mut_AUC[model_names[mod]] = AUC.loc[0.0, mut_names]
#
#
#
# all_mut_rheo.to_csv('sim_mut_rheo.csv')
# all_mut_AUC.to_csv('sim_mut_AUC.csv')
# # %% model_F_inf.csv
# # | (index) | I | I_inhib | models ....
#
# # models
# 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)
# folder = '../Neuron_models'
# with h5py.File(os.path.join(folder, "RS_pyr.hdf5"), "r+") as f:
# model_F_inf['I'] = np.arange(f['data'].attrs['low'][()], f['data'].attrs['high'][()],
# (f['data'].attrs['high'][()] - f['data'].attrs['low'][()]) /
# f['data'].attrs['stim_num'][()])
# with h5py.File(os.path.join(folder, "RS_inhib.hdf5"), "r+") as f:
# model_F_inf['I_inhib'] = np.arange(f['data'].attrs['low'][()], f['data'].attrs['high'][()],
# (f['data'].attrs['high'][()] - f['data'].attrs['low'][()]) /
# f['data'].attrs['stim_num'][()])
#
# for model_name in models:
# fname = os.path.join(folder, "{}.hdf5".format(model_name)) # RS_inhib
# with h5py.File(fname, "r+") as f:
# model_F_inf[model_name] = f['analysis']['F_inf'][()]
#
# # save df
# model_F_inf.to_csv('model_F_inf.csv')

View File

@ -5,7 +5,7 @@ Modelling on the effects of ion current property changes on firing behaviour in
- Python function files for models
- RS pyramidal, RS inhibitory and FS from Pospischil et al. (2008)
- Cb stellate from Alexander et al. (2019) with and without added Kv1.1
- STN from Otsuka et al (2004) with and without added Kv1.1
- STN from Otsuka et al. (2004) with and without added Kv1.1
- Utility_fxns.py for common useful functions
## ./Neuron_models

View File

@ -80,7 +80,7 @@ g["Leak"] = 0.07407 * surf_area
# save folder
folder = './SA/Cb_stellate'
folder = '../Sensitivity_Analysis/Cb_stellate'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -88,7 +88,7 @@ g["T"] = 0.45045 * surf_area
g["Leak"] = 0.07407 * surf_area
# save folder
folder = './SA/Cb_stellate_Kv_only'
folder = './Sensitivity_Analysis/Cb_stellate_Delta_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -89,7 +89,7 @@ g["Leak"] = 0.038 * surf_area
# folder to save to
folder = './Sensitivity_Analysis/FS'
folder = '../Sensitivity_Analysis/FS'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -101,7 +101,7 @@ g["L"] = 0. * surf_area
g["Leak"] = 0.038 * surf_area
# save folder
folder = './Sensitivity_Analysis/FS_Kv'
folder = '../Sensitivity_Analysis/FS_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -86,7 +86,7 @@ g["L"] = 0.
g["Leak"] = 0.0205 * surf_area
# save folder
folder = './Sensitivity_Analysis/RS_inhib'
folder = '../Sensitivity_Analysis/RS_inhib'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -87,7 +87,7 @@ g["L"] = 0. * surf_area
g["Leak"] = 0.0205 * surf_area
# save folder
folder = './Sensitivity_Analysis/RS_inhib_Kv'
folder = '../Sensitivity_Analysis/RS_inhib_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -71,7 +71,7 @@ g["Kv_mut"] = 0.
g["L"] = 0.
g["Leak"] = 0.0205 * surf_area
folder = './Sensitivity_Analysis/RS_pyramidal'
folder = '../Sensitivity_Analysis/RS_pyramidal'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -86,7 +86,7 @@ g["L"] = 0. * surf_area
g["Leak"] = 0.0205 * surf_area
# save folder
folder = './Sensitivity_Analysis/RS_pyramidal_Kv'
folder = '../Sensitivity_Analysis/RS_pyramidal_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)

View File

@ -99,7 +99,7 @@ g["Leak"] = 0.035 * surf_area
V_init = -70
# save folder
folder = './Sensitivity_Analysis/STN_Kv_only'
folder = '../Sensitivity_Analysis/STN_Delta_Kv'
if not os.path.isdir(folder):
os.makedirs(folder)

Binary file not shown.

View File

@ -94,7 +94,23 @@ def new_scatter(self, *args, **kwargs):
Axes.scatter = new_scatter
############## End hack. ##############
########################################################################################################################
#%% add gradient arrows
import matplotlib.pyplot as plt
import matplotlib.transforms
import matplotlib.path
from matplotlib.collections import LineCollection
def gradientaxis(ax, start, end, cmap, n=100,lw=1):
# Arrow shaft: LineCollection
x = np.linspace(start[0],end[0],n)
y = np.linspace(start[1],end[1],n)
points = np.array([x,y]).T.reshape(-1,1,2)
segments = np.concatenate([points[:-1],points[1:]], axis=1)
lc = LineCollection(segments, cmap=cmap, linewidth=lw,zorder=15)
lc.set_array(np.linspace(0,1,n))
ax.add_collection(lc)
return ax
#%%
#%%
def boxplot_with_markers(ax,max_width, alteration='shift', msize=3):
hlinewidth = 0.5
@ -294,7 +310,7 @@ def plot_AUC_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration='
if mod == model_name_dict[model]:
ax.plot(df['alteration'], df[mod], color=clr_dict[mod], alpha=1, zorder=10, linewidth=2)
else:
ax.plot(df['alteration'], df[mod], color=clr_dict[mod],alpha=1, zorder=1, linewidth=1)
ax.plot(df['alteration'], df[mod], color=clr_dict[mod],alpha=0.5, zorder=1, linewidth=1)
if alteration=='shift':
ax.set_ylabel('Normalized $\Delta$AUC', labelpad=4)
@ -304,6 +320,20 @@ def plot_AUC_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration='
y = df[model_name_dict[model]]
ax.set_xlim(x.min(), x.max())
ax.set_ylim(df[model_names].min().min(), df[model_names].max().max())
# x axis color gradient
cvals = [-2., 2]
colors = ['lightgrey', 'k']
norm = plt.Normalize(min(cvals), max(cvals))
tuples = list(zip(map(norm, cvals), colors))
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples)
(xstart, xend) = ax.get_xlim()
(ystart, yend) = ax.get_ylim()
print(ystart, yend)
start = (xstart, ystart * 1.0)
end = (xend, ystart * 1.0)
ax = gradientaxis(ax, start, end, cmap, n=100, lw=2)
ax.spines['bottom'].set_visible(False)
return ax
def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color2='dodgerblue'):
@ -427,5 +457,6 @@ ax2.text(-0.075, 1.35, string.ascii_uppercase[8], transform=ax2.transAxes, size=
#save
fig.set_size_inches(cm2inch(20.75,12))
fig.savefig('./Figures/AUC_correlation.png', dpi=fig.dpi) #pdf #eps
fig.savefig('./Figures/AUC_correlation.pdf', dpi=fig.dpi) #pdf #eps
# fig.savefig('./Figures/AUC_correlation.png', dpi=fig.dpi) #pdf #eps
plt.show()

Binary file not shown.

View File

@ -86,7 +86,7 @@ def add_scalebar(ax, matchx=True, matchy=True, hidex=True, hidey=True, **kwargs)
def plot_spike_train(ax, model='RS Pyramidal', stop=750):
model_spiking = pd.read_csv('./Figures/Data/model_spiking.csv')
stop_ind = np.int(np.argmin(np.abs(model_spiking['t'] - stop)))
stop_ind = int(np.argmin(np.abs(model_spiking['t'] - stop)))
ax.plot(model_spiking['t'][0:stop_ind], model_spiking[model][0:stop_ind], 'k', linewidth=1.5)
ax.set_ylabel('V')
ax.set_xlabel('Time [s]')
@ -100,28 +100,28 @@ def plot_fI(ax, model='RS Pyramidal'):
model_F_inf = pd.read_csv('./Figures/Data/model_F_inf.csv')
if model=='RS Inhibitory':
ax.plot(model_F_inf['I_inhib'], model_F_inf[model], color='grey')
ax.plot(firing_values.loc['spike_ind', model], model_F_inf[model][np.int(np.argmin(np.abs(model_F_inf['I_inhib'] - firing_values.loc['spike_ind', model])))],
ax.plot(firing_values.loc['spike_ind', model], model_F_inf[model][int(np.argmin(np.abs(model_F_inf['I_inhib'] - firing_values.loc['spike_ind', model])))],
'.', color='k', markersize=3)
ax.plot(firing_values.loc['ramp_up', model],
model_F_inf[model][np.int(np.argmin(np.abs(model_F_inf['I_inhib'] - firing_values.loc['ramp_up', model])))],
model_F_inf[model][int(np.argmin(np.abs(model_F_inf['I_inhib'] - firing_values.loc['ramp_up', model])))],
'.', color='g', markersize=3)
ax.plot(firing_values.loc['ramp_down', model],
model_F_inf[model][np.int(np.argmin(np.abs(model_F_inf['I_inhib'] - firing_values.loc['ramp_down', model])))],
model_F_inf[model][int(np.argmin(np.abs(model_F_inf['I_inhib'] - firing_values.loc['ramp_down', model])))],
'.', color='r', markersize=3)
else:
ax.plot(model_F_inf['I'], model_F_inf[model], color='grey')
ax.plot(firing_values.loc['spike_ind', model],
model_F_inf[model][np.int(np.argmin(np.abs(model_F_inf['I'] - firing_values.loc['spike_ind', model])))],
model_F_inf[model][int(np.argmin(np.abs(model_F_inf['I'] - firing_values.loc['spike_ind', model])))],
'.', color='k', markersize=3)
ax.plot(firing_values.loc['ramp_up', model],
model_F_inf[model][np.int(np.argmin(np.abs(model_F_inf['I'] - firing_values.loc['ramp_up', model])))],
model_F_inf[model][int(np.argmin(np.abs(model_F_inf['I'] - firing_values.loc['ramp_up', model])))],
'.', color='g', markersize=3)
ax.plot(firing_values.loc['ramp_down', model],
model_F_inf[model][np.int(np.argmin(np.abs(model_F_inf['I'] - firing_values.loc['ramp_down', model])))],
model_F_inf[model][int(np.argmin(np.abs(model_F_inf['I'] - firing_values.loc['ramp_down', model])))],
'.', color='r', markersize=3)
f = 8
ax.set_ylabel('Frequency [Hz]', fontsize=f)
ax.set_xlabel('Current [pA]', fontsize=f)
ax.set_xlabel('Current [nA]', fontsize=f)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
@ -188,7 +188,8 @@ for i in range(0,len(models)):
# save
fig.set_size_inches(cm2inch(17.6,20))
fig.savefig('./Figures/diversity_in_firing.png', dpi=fig.dpi) #pdf # eps
fig.savefig('./Figures/diversity_in_firing.pdf', dpi=fig.dpi) #pdf # eps
# fig.savefig('./Figures/diversity_in_firing.png', dpi=fig.dpi) #pdf # eps
plt.show()

Binary file not shown.

View File

@ -95,7 +95,40 @@ def new_scatter(self, *args, **kwargs):
Axes.scatter = new_scatter
############## End hack. ##############
########################################################################################################################
#%% add gradient arrows
import matplotlib.pyplot as plt
import matplotlib.transforms
import matplotlib.path
from matplotlib.collections import LineCollection
def rainbowarrow(ax, start, end, cmap, n=50,lw=3):
# Arrow shaft: LineCollection
x = np.linspace(start[0],end[0],n)
y = np.linspace(start[1],end[1],n)
points = np.array([x,y]).T.reshape(-1,1,2)
segments = np.concatenate([points[:-1],points[1:]], axis=1)
lc = LineCollection(segments, cmap=cmap, linewidth=lw)
lc.set_array(np.linspace(0,1,n))
ax.add_collection(lc)
# Arrow head: Triangle
tricoords = [(0,-0.02),(0.025,0),(0,0.02),(0,-0.02)]
angle = np.arctan2(end[1]-start[1],end[0]-start[0])
rot = matplotlib.transforms.Affine2D().rotate(angle)
tricoords2 = rot.transform(tricoords)
tri = matplotlib.path.Path(tricoords2, closed=True)
ax.scatter(end[0],end[1], c=1, s=(4*lw)**2, marker=tri, cmap=cmap,vmin=0)
ax.autoscale_view()
return ax
def gradientaxis(ax, start, end, cmap, n=100,lw=1):
# Arrow shaft: LineCollection
x = np.linspace(start[0],end[0],n)
y = np.linspace(start[1],end[1],n)
points = np.array([x,y]).T.reshape(-1,1,2)
segments = np.concatenate([points[:-1],points[1:]], axis=1)
lc = LineCollection(segments, cmap=cmap, linewidth=lw,zorder=15)
lc.set_array(np.linspace(0,1,n))
ax.add_collection(lc)
return ax
#%%
def boxplot_with_markers(ax,max_width, alteration='shift', msize=2.2):
hlinewidth = 0.5
@ -290,9 +323,9 @@ def plot_rheo_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration=
ax.set_xlabel('$g$/$g_{WT}$')
for mod in model_names:
if mod == model_name_dict[model]:
ax.plot(df['alteration'], df[mod], color=clr_dict[mod], alpha=1, zorder=10, linewidth=2)
ax.plot(df['alteration'], df[mod], color=clr_dict[mod], alpha=1, zorder=10, linewidth=2)
else:
ax.plot(df['alteration'], df[mod], color=clr_dict[mod], alpha=1, zorder=1, linewidth=1)
ax.plot(df['alteration'], df[mod], color=clr_dict[mod], alpha=0.5, zorder=1, linewidth=1)
ax.set_ylabel('$\Delta$ Rheobase (nA)', labelpad=0)
x = df['alteration']
@ -300,6 +333,25 @@ def plot_rheo_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration=
ax.set_xlim(x.min(), x.max())
ax.set_ylim(df[model_names].min().min(), df[model_names].max().max())
# x axis color gradient
cvals = [-2., 2]
colors = ['lightgrey', 'k']
norm = plt.Normalize(min(cvals), max(cvals))
tuples = list(zip(map(norm, cvals), colors))
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples)
(xstart, xend) = ax.get_xlim()
(ystart, yend) = ax.get_ylim()
print(ystart, yend)
start = (xstart, ystart*1.0)
end = (xend, ystart*1.0)
ax = gradientaxis(ax, start, end, cmap, n=100,lw=2)
ax.spines['bottom'].set_visible(False)
# ax.set_ylim(ystart, yend)
#xlabel tick colors
# my_colors = ['lightgrey', 'grey', 'k']
# for ticklabel, tickcolor in zip(ax.get_xticklabels(), my_colors):
# ticklabel.set_color(tickcolor)
return ax
def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color2='dodgerblue'):
@ -330,6 +382,27 @@ def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color
for i in newdf.index:
ax.plot(json.loads(newdf.loc[i, 'I']), json.loads(newdf.loc[i, 'F']), color=colors[c])
c += 1
# colors2 = [colors[10, :], 'k']
# norm2 = plt.Normalize(min(cvals), max(cvals))
# tuples2 = list(zip(map(norm2, cvals), colors2))
# cmap2 = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples2)
#
# colors3 = [colors[11, :], 'lightgrey']
# norm3 = plt.Normalize(min(cvals), max(cvals))
# tuples3 = list(zip(map(norm3, cvals), colors3))
# cmap3 = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples3)
#
# start = (1.1, json.loads(newdf.loc[10, 'F'])[-1])
# end = (1.1, json.loads(newdf.loc[20, 'F'])[-1])#-json.loads(newdf.loc[20, 'F'])[-1]*0.1)
# ax = rainbowarrow(ax, start, end, cmap2, n=50, lw=1)
# ax.text(1.15, json.loads(newdf.loc[20, 'F'])[-1], '$+ \Delta V$', fontsize=4, color='k')
#
# start = (1.1, json.loads(newdf.loc[10, 'F'])[-1])
# end = (1.1, json.loads(newdf.loc[0, 'F'])[-1])#-json.loads(newdf.loc[0, 'F'])[-1]*0.1)
# ax = rainbowarrow(ax, start, end, cmap3, n=50, lw=1)
# ax.text(1.15, json.loads(newdf.loc[0, 'F'])[-1], '$- \Delta V$', fontsize=4, color='lightgrey')
ax.set_ylabel('Frequency [Hz]')
ax.set_xlabel('Current [nA]')
ax.set_title(model, x=0.2, y=1.025)
@ -424,5 +497,41 @@ ax2.text(-0.075, 1.35, string.ascii_uppercase[8], transform=ax2.transAxes, size=
# save
fig.set_size_inches(cm2inch(20.75,12))
fig.savefig('./Figures/rheobase_correlation.png', dpi=fig.dpi) #bbox_inches='tight', dpi=fig.dpi # eps # pdf
fig.savefig('./Figures/rheobase_correlation.pdf', dpi=fig.dpi)
# fig.savefig('./Figures/rheobase_correlation.png', dpi=fig.dpi) #bbox_inches='tight', dpi=fig.dpi # eps # pdf
plt.show()
#%%
# fig, axs = plt.subplots(1,2)
# axs[0] = plot_fI(axs[0] , model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', type='shift', alt='s', color1='lightgrey', color2='k')
# plt.show()
#%%
#
#
# cvals = [-2., 2]
# colors = ['lightgrey', 'k']
#
# norm = plt.Normalize(min(cvals), max(cvals))
# tuples = list(zip(map(norm, cvals), colors))
# cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples)
# colors = cmap(np.linspace(0, 1, 22))
#
# colors2 = [colors[10,:], 'k']
# norm2 = plt.Normalize(min(cvals), max(cvals))
# tuples2 = list(zip(map(norm2, cvals), colors2))
# cmap2 = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples2)
#
# colors3 = [colors[11,:], 'lightgrey']
# norm3 = plt.Normalize(min(cvals), max(cvals))
# tuples3 = list(zip(map(norm3, cvals), colors3))
# cmap3 = matplotlib.colors.LinearSegmentedColormap.from_list("", tuples3)
#
# fig, axs = plt.subplots(1,2)
# start = (0,0)
# end = (1,1)
# axs[0] = rainbowarrow(axs[0], start, end, cmap2, n=50,lw=3)
# start = (0,0)
# end = (-1,-1)
# axs[0] = rainbowarrow(axs[0], start, end, cmap3, n=50,lw=3)
# plt.show()

View File

@ -160,7 +160,7 @@ def mutation_plot(ax, model='RS_pramidal'):
ax.plot(rheo.loc['V404I', model_names[mod]]*1000, AUC.loc['V404I', model_names[mod]]*100, linestyle='',
markeredgecolor=mut_col[3], markerfacecolor=mut_col[5], marker=Marker_dict[model_display_names[mod]],markersize=4)
ax.set_title(model_display_names[mod], pad=14)
ax.set_xlabel('$\Delta$ Rheobase (pA)')
ax.set_xlabel('$\Delta$ Rheobase [pA]')
ax.set_ylabel('Normalized $\Delta$AUC (%)')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
@ -241,6 +241,7 @@ axr1.text(-0.77, 1.1, string.ascii_uppercase[j+1], transform=axr1.transAxes, siz
# save
fig.set_size_inches(cm2inch(22.2,15))
# fig.savefig('./Figures/simulation_model_comparison.pdf', dpi=fig.dpi) #eps
fig.savefig('./Figures/simulation_model_comparison.png', dpi=fig.dpi) #eps
plt.show()

View File

@ -9,6 +9,9 @@ Manuscript for the modelling on the effects of ion current property changes on f
## ./Figures
Figures and python files for generating them
## ./Code
Python code for simulations and analysis
## plotstyle.py
Styles for figures

Binary file not shown.

View File

@ -86,10 +86,10 @@
\newcommand{\notenk}[1]{\note[NK]{#1}}
\newcommand{\notels}[1]{\note[LS]{#1}}
\newcommand{\notejb}[1]{\note[JB]{#1}}
\newcommand{\noteuh}[1]{\note[UBSH]{#1}}
\begin{document}
\title{Loss or Gain of Function? Neuronal Firing Effects of Ion Channel Mutations Depend on Cell Type}
\title{Loss or Gain of Function? Neuronal Firing Effects of Ion Channel Mutations Depend on the Cell Type}
\vspace{-1em}
\date{}
@ -98,7 +98,7 @@
\section*{Titlepage for eNeuro - will be put into Word file provided for submission}
\subsection{Manuscript Title (50 word maximum)}
Loss or Gain of Function? Neuronal Firing Effects of Ion Channel Mutations Depend on Cell Type
Loss or Gain of Function? Neuronal Firing Effects of Ion Channel Mutations Depend on the Cell Type
\subsection{Abbreviated Title (50 character maximum)}
Effects of Ion Channel Mutation Depend on Cell Type
@ -135,7 +135,7 @@ NK, LS,UBSH, SL, JB Wrote the paper
\subsection{Conflict of Interest}
Authors report no conflict of interest.
\\\textbf{A.} The autthors declare no competing financial interests.
\\\textbf{A.} The authors declare no competing financial interests.
\subsection{Funding sources}
\notenk{Add as appropriate - I don't know this information}\notejb{SmartStart}
\newpage{}
@ -157,37 +157,45 @@ Nils A. Koch\textsuperscript{1,2}, Lukas Sonnenberg\textsuperscript{1,2}, Ulrike
\textsuperscript{2}Bernstein Center for Computational Neuroscience Tuebingen, 72076 Tuebingen, Germany\\
\textsuperscript{3} Department of Neurology and Epileptology, Hertie Institute for Clinical Brain Research, University of Tuebingen, 72076 Tuebingen, Germany
\textcolor{red}{\noteuh{Viele verwenden mittlerweile variants anstelle von Mutations. Könnte evtl. geändert werden.}}
\section*{Abstract (250 Words Maximum - Currently 232)}
%\textit{It should provide a concise summary of the objectives, methodology (including the species and sex studied), key results, and major conclusions of the study.}
Ion channels determine neuronal excitability and disruption in ion channel properties in mutations can result in neurological disorders called channelopathies. Often many mutations are associated with a channelopathy, and determination of the effects of these mutations are generally done at the level of currents. The impact of such mutations on neuronal firing is vital for selecting personalized treatment plans for patients, however whether the effect of a given mutation on firing can simply be inferred from current level effects is unclear. The general impact of the ionic current environment in different neuronal types on the outcome of ion channel mutations is vital to understanding of the impacts of ion channel mutations and effective selection of personalized treatments.
Using a diverse collection of neuronal models, the effects of changes in ion current properties on firing is assessed systematically and for episodic ataxia type~1 associated \Kv mutations. The effects of ion current property changes or mutations on firing is dependent on the ionic current environment, or cell type, in which such a change occurs in. Characterization of ion channel mutations as loss or gain of function is useful at the level of the ionic current, however the effects of channelopathies on firing is dependent on cell type. To further the efficacy of personalized medicine in channelopathies, the effects of ion channel mutations must be examined in the context of the appropriate cell types.
\textcolor{red}{\noteuh{Ich bin mit dem Abstract noch nicht so glücklich, sollte noch besser hervorgehoben werden, warum du das gemacht hast und v.a. wie. Das fehlt bisher komplett. Können wir aber ganz am Schluss noch mal umschreiben. }}\notenk{Können wir machen, muss es nochmal anschauen.}
Ion channels determine neuronal excitability and disruption in ion channel properties caused by mutations can result in neurological disorders called channelopathies. Often, mutations within one gene are associated with a specific channelepothy and the
%mutations are associated with a channelopathy \noteuh{Ist es das, was du mit dem Satz gemeint hast? War mir nicht ganz klar. }, and determination of the
effects of these mutations on channel function, i.e. the gating current of the affected ion channel, are generally determined using heterologous expression systems.
%are generally done at the level of currents.
Nevertheless, the impact of such mutations on neuronal firing is essential not only for brain function, but also for selecting personalized treatment options for the affected patient. However, it is unclear whether the effect of a given mutation on firing can simply be inferred from the effects identified at the current level. The general impact of the ionic current environment in different neuronal cell types on the outcome of ion channel mutations is vital to the understanding of the impacts caused by ion channel mutations and the effective selection of personalized treatment options for affected patients.
Using a diverse collection of neuronal models, the effects of changes in ion current properties on firing properties of different neuronal types was assessed systematically and formutations in the \textit{KCNA1} gene encoding the \Kv potassium channel subtype associated with episodic ataxia type~1 (EA1). The effects of changes in ion current properties or changes due to mutations in the \Kv channel subtype on the firing of a neuron depends on the ionic current environment, or the neuronal cell type, in which such a change occurs in. Characterization of ion channel mutations as loss or gain of function is useful at the level of the ionic current. However, the effects of mutations causing channelopathies on the firing of a cell is dependent on the cell type and thus on the composition of different ion channels and subunits. To further the efficacy of personalized medicine in channelopathies, the effects of ion channel mutations must be examined in the context of the appropriate cell types in which these mutations occur.
\par\null
\section*{Significant Statement (120 Words Maximum - Currently 112)}
%\textit{The Significance Statement should provide a clear explanation of the importance and relevance of the research in a manner accessible to researchers without specialist knowledge in the field and informed lay readers. The Significance Statement will appear within the paper below the abstract.}
Ion channels determine neuronal excitability and mutations that alter ion channel properties result in neurological disorders called channelopathies. Although the genetic nature of such mutations as well as their effects on the ion channel's biophysical properties are routinely assessed experimentally, determination of the role in altering neuronal firing is more difficult. Computational modelling bridges this gap and demonstrates that the cell type in which a mutation occurs is an important determinant in the effects of firing. As a result, classification of ion channel mutations as loss or gain of function is useful to describe the ionic current but care should be taken when applying this classification on the level of neuronal firing.
Ion channels determine neuronal excitability and mutations that alter ion channel properties result in neurological disorders called channelopathies. Although the genetic nature of such mutations as well as their effects on the biophysical properties of an ion channel are routinely assessed experimentally, determination of the role in altering neuronal firing is more difficult. Computational modelling bridges this gap and demonstrates that the cell type in which a mutation occurs is an important determinant in the effects of neuronal firing. As a result, classification of ion channel mutations as loss or gain of function is useful to describe the ionic current but care should be taken when applying this classification on the level of neuronal firing.
\par\null
\section*{Introduction (750 Words Maximum - Currently 689)}
%\textit{The Introduction should briefly indicate the objectives of the study and provide enough background information to clarify why the study was undertaken and what hypotheses were tested.}
Voltage-gated ion channels are vital in determining neuronal excitability, action potential generation and firing patterns \citep{bernard_channelopathies_2008, carbone_ion_2020}. In particular, the properties and combinations of ion channels and their resulting currents determine the firing properties of a neuron \citep{rutecki_neuronal_1992, pospischil_minimal_2008}. However, ion channel function can be disturbed, resulting in altered ionic current properties and altered neuronal firing behaviour \citep{carbone_ion_2020}. Ion channel mutations are a common cause of such channelopathies and are often associated with hereditary clinical disorders including ataxias, epilepsies, pain disorders, dyskinesias, intellectual disabilities, myotonias, and periodic paralyses among others \citep{bernard_channelopathies_2008, carbone_ion_2020}.
Voltage-gated ion channels are vital in determining neuronal excitability, action potential generation and firing patterns \citep{bernard_channelopathies_2008, carbone_ion_2020}. In particular, the properties and combinations of ion channels and subunits and their resulting currents determine the firing properties of a neuron \citep{rutecki_neuronal_1992, pospischil_minimal_2008}. However, ion channel function can be disturbed, resulting in altered ionic current properties and altered neuronal firing behavior \citep{carbone_ion_2020}. Ion channel mutations are a common cause of such channelopathies \noteuh{Ist ja nicht nur common, sondern DER Grund für einen Kanalopathie} \notenk{Es gibt auch "acquired" Kanalopathie die aus verschiedene Gruenden (Droggen, Krankheiten, usw.) erstehen
https://www.bmj.com/content/316/7138/1104} and are often associated with hereditary clinical disorders including ataxias, epilepsies, pain disorders, dyskinesias, intellectual disabilities, myotonias, and periodic paralyses among others \citep{bernard_channelopathies_2008, carbone_ion_2020}.
The effects of mutations in ion channel genes on ionic current kinetics are frequently assessed using heterologous expression systems which do not express endogenous currents \citep{Balestrini1044, Noebels2017, Dunlop2008}, and are frequently classified as either a loss of function (LOF) or a gain of function (GOF) with respect to changes in gating of the altered ion channels \citep{Musto2020, Kullmann2002, Waxman2011, Kim2021}. This classification of the effects on ionic currents is often directly used to predict the effects on neuronal firing \citep{Niday2018, Wei2017, Wolff2017}\notenk{Any other papers?} \textcolor{red}{\noteuh{Da gibe s ja viele dazu… drei sollten reichen, vielleicht noch ein review?}}, which in turn is important for understanding the pathophysiology of these disorders and for identification of potential therapeutic targets \citep{Orsini2018, Yang2018, Colasante2020, Yu2006}. Genotype-phenotype relationships are complex and the understanding of the relationships between these is still evolving \citep{Wolff2017, johannesen_genotype-phenotype_2021}. Experimentally, the effects of channelopathies on neuronal firing can be assessed using primary neuronal cultures \citep{Scalmani2006, Smith2018, Liu2019} or \textit{in vitro} recordings from slices of transgenic mouse lines \textcolor{red}{\citep{Mantegazza2019, Xie2010,Lory2020, Habib2015, Hedrich2019} \noteuh{Hedrich 2019 ja ein review, würde vorne besser passen. Es gibt ja sehr viele Beispiele für Schnittableitungen…}}. \notenk{Bin mir nicht sicher was bei "vorne" gemeint ist}
\notenk{Are there any obvious citations missing from the following section?}
The effects of channelopathies on ionic current kinetics are frequently assessed by transfection of heterologous expression systems without endogenous currents \citep{Balestrini1044, Noebels2017, Dunlop2008}, and are frequently classified as either a loss of function (LOF) or a gain of function (GOF) with respect to changes in the magnitude of ionic currents flowing through the channels \citep{Musto2020, Kullmann2002, Waxman2011, Kim2021}. This classification of the effects on ionic currents is often directly used to predict the effects on neuronal firing \citep{Niday2018, Wei2017, Wolff2017} \textcolor{red}{(any other Papers?)}, which in turn is important for understanding the pathophysiology of these disorders and for identification of potential therapeutic targets \citep{Orsini2018, Yang2018}. Genotype-phenotype relationships are complex and the understanding of the relationships between these is still evolving \citep{Wolff2017, johannesen_genotype-phenotype_2021}. Experimentally, the effects of channelopathies on neuronal firing can be assessed using primary neuronal cultures \citep{Scalmani2006, Smith2018, Liu2019} or \textit{in vitro} recordings from transgenic mouse lines \citep{Mantegazza2019, Xie2010,Lory2020, Habib2015, Hedrich2019}.
However, the effect of a given channelopathy on the firing behavior of different neuronal types across the brain is often unclear and not feasible to experimentally obtain. Different neuron types differ in their composition of ionic currents \citep{yao2021taxonomy, Cadwell2016, BICCN2021, Scala2021} and therefore likely respond differently to changes in the properties of a single ionic current. The expression level of an affected gene can correlate with firing behavior in the simplest case \citep{Layer2021}. However, if gating kinetics are affected this can have complex consequences on the firing behavior of a specific cell type and the network activity within the brain.
However the effect of a given channelopathy on firing behavior of different neuronal types across the brain is often unclear and not feasible to experimentally obtain. Different neuron types differ in their composition of ionic currents \citep{yao2021taxonomy, Cadwell2016, BICCN2021, Scala2021} and therefore likely respond differently to changes in the properties of a single ionic current. The expression level of an affected gene can correlate with firing behaviour in the simplest case \citep{Layer2021} \textcolor{red}{(any other Papers?)}, however if gating kinetics are affected this can have complex consequences.
For instance, altering relative amplitudes of ionic currents can dramatically influence the firing behavior and dynamics of neurons \citep{rutecki_neuronal_1992, pospischil_minimal_2008,Kispersky2012, golowasch_failure_2002, barreiro_-current_2012, Noebels2017, Layer2021}, however other properties of ionic currents impact neuronal firing as well. Cell-type specific effects one firing can occur for instance increases inhibitory interneuron but not pyramidal neuron firing with R1648H mutation in \textit{SCN1A} \citep{Hedrich14874}. In extreme cases, a mutation can have opposite effects on different neuron types. For example, the R1627H \noteuh{R1629H ist glaube ich die Position in SCN8A}\notenk{R1627H in SCN8A in Makinson} \textit{SCN8A} mutation is associated which increased firing in interneurons, but decreases pyramidal neuron excitability \noteuh{Das stimmt nicht für die R1648H mutation in interneuronen. Das Makinson paper untersuchte doch die R1627H mutation in SCN8A. Da war aber die Erregbarkeit von Pyramidenzellen erhöht.}\notenk{Mein Fehler, ich habe den Paper falsch vestandend. Habe es im Text umgeschrieben} \citep{makinson_scn1a_2016}
For instance, altering relative amplitudes of ionic currents can dramatically influence the firing behaviour and dynamics of neurons \citep{rutecki_neuronal_1992, pospischil_minimal_2008,Kispersky2012, golowasch_failure_2002, barreiro_-current_2012, Noebels2017, Layer2021}, however other properties of ionic currents impact neuronal firing as well. In extreme cases, a mutation can have opposite effects on different neuron types. For example, the R1629H SCN1A mutation is associated which increased firing in interneurons, but decreases pyramidal neuron excitability \citep{Hedrich14874,makinson_scn1a_2016}
Computational modelling approaches can be used to assess the impacts of changed ionic current properties on firing behaviour, bridging the gap between changes in the biophysical properties induced by mutations, firing and clinical symptoms. Conductance-based neuronal models enable insight into the effects of ion channel mutations with specific effects of the resulting ionic current as well as enabling \textit{in silico} assessment of the relative effects of changes in biophysical properties of ionic currents on neuronal firing. Furthermore, modelling approaches enable predictions of the effects of specific mutation and drug induced biophysical property changes.
We therefore investigate the role that neuronal type plays on the outcome of ionic current kinetic changes on firing by simulating the response of a repertoire of different neuronal models to changes in single current parameters as well as to more complex changes as they were observed for specific mutations. For this task we chose mutations in KCNA1, encoding for the potassium channel \Kv, that are associated with episodic ataxia type~1 \citep{lauxmann_therapeutic_2021}.
Computational modelling approaches can be used to assess the impacts of altered ionic current properties on firing behavior, bridging the gap between changes in the biophysical properties induced by mutations, firing and clinical symptoms. Conductance-based neuronal models enable insight into the effects of ion channel mutations with specific effects of the resulting ionic current as well as enabling \textit{in silico} assessment of the relative effects of changes in biophysical properties of ionic currents on neuronal firing. Furthermore, modelling approaches enable predictions of the effects of specific mutation and drug induced biophysical property changes. \noteuh{Hiermit möchtest du sagen, dass man quasi den Block eines bestimmtem Kanaltyps auf das Feuern untersuchen kann? Oder was genau meinst du damit?} \notenk{Ja, nicht nur Mutation oder Block alleine, aber auch ob ein bestimmten Block das Feuern richtung Wildtyp bringen kann (bzw. Unser Paper mit Carbamazepine und Riluzul in KCNA1)}
In this study, we therefore investigated the role that a specific neuronal cell type plays on the outcome of ionic current kinetic changes on firing \noteuh{Eher andresrum, oder? Es wurde untersucht, wie die Veränderungen in der Kinetik sich auf das Feuern unterschiedlicher Neuronentypen auswirken.} \notenk{I'm not sure I understand this comment - I think I have done what Uli is suggesting?} by simulating the response of a repertoire of different neuronal models to changes in single current parameters as well as to more complex changes as they were observed for specific mutations. For this task we chose mutations in the \textit{KCNA1} gene, encoding the potassium channel subunit \Kv, that are associated with episodic ataxia type~1 \citep{Browne1994, Browne1995, lauxmann_therapeutic_2021}.
\noteuh{Warum hast du die UE den immer als „Formel“ eingefügt? (\Kv) Geht auch einfach als normaler Text. (Kv1.1) } \notenk{Ich habe die IUPHAR Nomenklatur mit "V" tiefgestellt benutzt}
\par\null
\section*{Materials and Methods}
@ -198,11 +206,11 @@ All modelling and simulation was done in parallel with custom written Python 3.8
% @ 2.60 GHz Linux 3.10.0-123.e17.x86_64.
\subsection*{Different Cell Models}
A group of neuronal models representing the major classes of cortical and thalamic neurons including regular spiking pyramidal (RS pyramidal), regular spiking inhibitory (RS inhibitory), and fast spiking (FS) cells were used \citep{pospischil_minimal_2008}. Additionally, a \Kv current (\IKv; \citealt{ranjan_kinetic_2019}) was added to each of these models (RS pyramidal +\Kv, RS inhibitory +\Kv, and FS +\Kv respectively). A cerebellar stellate cell model from \citet{alexander_cerebellar_2019} is used (Cb stellate). This model was also used with a \Kv current \citep{ranjan_kinetic_2019} in addition to the A-type potassium current (Cb stellate +\Kv) or replacing the A-type potassium current (Cb stellate \(\Delta\)\Kv). A subthalamic nucleus neuron model as described by \citet{otsuka_conductance-based_2004} are used (STN) and with a \Kv current (\IKv; \citealp{ranjan_kinetic_2019}) in addition to the A-type potassium current (STN +\Kv) or replacing the A-type potassium current (STN \(\Delta\)\Kv). The properties and maximal conductances of each model are detailed in \Cref{tab:g} and the gating properties are unaltered from the original Cb stellate and STN models. For comparability to typical electrophysiological data fitting reported and for ease of further gating curve manipulations, a modified Boltzmann function
A group of neuronal models representing the major classes of cortical and thalamic neurons including regular spiking pyramidal (RS pyramidal), regular spiking inhibitory (RS inhibitory), and fast spiking (FS) cells were used \citep{pospischil_minimal_2008}. Additionally, a \Kv current (\IKv; \citealt{ranjan_kinetic_2019}) was added to each of these models (RS pyramidal +\Kv, RS inhibitory +\Kv, and FS +\Kv respectively). A cerebellar stellate cell model from \citet{alexander_cerebellar_2019} is used (Cb stellate) in this study. This cell model was also extended by a \Kv current \citep{ranjan_kinetic_2019}, either in addition to the A-type potassium current (Cb stellate +\Kv) or by replacing the A-type potassium current (Cb stellate \(\Delta\)\Kv). A subthalamic nucleus (STN) neuron model as described by \citet{otsuka_conductance-based_2004} was also used. The STN cell model was additionally extended by a \Kv current \citep{ranjan_kinetic_2019}, either in addition to the A-type potassium current (STN+\Kv) or by replacing the A-type potassium current (STN \(\Delta\)\Kv). The properties and maximal conductances of each model are detailed in \Cref{tab:g} and the gating properties are unaltered from the original Cb stellate and STN models \citet{alexander_cerebellar_2019, otsuka_conductance-based_2004}. For enabling the comparison of models with the typically reported electrophysiological data fitting reported and for ease of further gating curve manipulations, a modified Boltzmann function
\begin{equation}\label{eqn:Boltz}
x_\infty = {\left(\frac{1-a}{1+{\exp\left[{\frac{V-V_{1/2}}{k}}\right]}} +a\right)^j}
\end{equation}
with slope \(k\), voltage for half-maximal activation or inactivation (\(V_{1/2}\)), exponent \(j\), and persistent current \(0 \leq a \leq 1\) were fitted to the original formulism for RS pyramidal, RS inhibitory and FS models from \citet{pospischil_minimal_2008}. The properties of \IKv were fitted to the mean wild type biophysical parameters of \Kv \citep{lauxmann_therapeutic_2021}. Each of the original single-compartment models used here can reproduce physiological firing behaviour of the neurons they represent \citep{pospischil_minimal_2008, alexander_cerebellar_2019, otsuka_conductance-based_2004} and capture key aspects of the dynamics of these cell types.
with slope \(k\), voltage for half-maximal activation or inactivation (\(V_{1/2}\)), exponent \(j\), and persistent current \(0 \leq a \leq 1\) were fitted to the original formulism for RS pyramidal, RS inhibitory and FS models from \citet{pospischil_minimal_2008}. The properties of \IKv were fitted to the mean wild type biophysical parameters of \Kv described in \citet{lauxmann_therapeutic_2021}. Each of the original single-compartment models used here can reproduce physiological firing behavior of the neurons they represent \citep{pospischil_minimal_2008, alexander_cerebellar_2019, otsuka_conductance-based_2004} and capture key aspects of the dynamics of these cell types.
\input{g_table}
@ -210,32 +218,32 @@ with slope \(k\), voltage for half-maximal activation or inactivation (\(V_{1/2}
\input{gating_table}
\subsection*{Firing Frequency Analysis}
The membrane responses to 200 equidistant two second long current steps were simulated using the forward-Euler method with a \(\Delta \textrm{t} = 0.01\)\,ms from steady state. Current steps ranged from 0 to 1\,nA for all models except for the RS inhibitory neuron models where a range of 0 to 0.35 nA was used to ensure repetitive firing across the range of input currents. For each current step, action potentials were detected as peaks with at least 50\,mV prominence, or the relative height above the lowest contour line encircling it, and a minimum interspike interval of 1\,ms. The interspike interval was computed and used to determine the instantaneous firing frequencies elicited by the current step. The steady-state firing frequency were defined as the mean firing frequency in 0.5\,s after the first action potential in the last second of the current step respectively and was used to construct frequency-current (fI) curves. Alteration in current magnitudes can have different effects on rheobase and the initial slope of the fI curve \citep{Kispersky2012}.
For this reason, we quantify neuronal firing with the rheobase as well as the area under the curve (AUC) of the initial portion of the fI curve as a measure of the initial slope of the fI curve.
The membrane responses to 200 equidistant two second long current steps were simulated using the forward-Euler method with a \(\Delta \textrm{t} = 0.01\)\,ms from steady state. Current steps ranged from 0 to 1\,nA \noteuh{Wie groß war den die Step-size?}\notenk{Es gab 200 schrite (siehe erster Satz) also 0.005nA von 0 bis 1 nA } for all models except for the RS inhibitory neuron models where a range of 0 to 0.35 nA was used to ensure repetitive firing across the range of input currents. For each current step, action potentials were detected as peaks with at least 50\,mV prominence, or the relative height above the lowest contour line encircling it, and a minimum interspike interval of 1\,ms. The interspike interval was computed and used to determine the instantaneous firing frequencies elicited by the current step. The steady-state firing frequency was defined as the mean firing frequency in 0.5\,s after the first action potential \noteuh{Warum nur in den ersten 0.5 s ? da würde man auch schon sehen, ob es zu einer spike frequency adaptation kommt? Aber das hattest du nicht angeschaut, oder? Ist ja auch wichtig für das Feuerverhalten unterschiedlichen Neurone. } \notenk{Die 0.5s ist in der letzte sekunde des steps, damit die adaption keine Rolle spielt. Wenn mann die ISIs hat fuer den ganzen Step, kann mann nicht einfach die letzte sekunde nehmen weil es nicht unbedingt (bzw fast nie) einen spike genau am Anfang oder am Ende gibt. Dies bedeutet das mann irgendwie nur ein Teil des erstes/letztes ISI im durchschnitt mit rechnen muss. Um das zu vermeiden habe ich nur 0.5s benutzt die vom ersten spike in der letzte sekund anfaengt. Ich hoffe das dass Sinn macht?} in the last second of the current step respectively and was used to construct frequency-current (fI) curves. Alteration in current magnitudes can have different effects on rheobase and the initial slope of the fI curve \citep{Kispersky2012}.
For this reason, we quantified neuronal firing using the rheobase as well as the area under the curve (AUC) of the initial portion of the fI curve as a measure of the initial slope of the fI curve.
The smallest current at which steady state firing occurs was identified and the current step interval preceding the occurrence of steady state firing was simulated at higher resolution (100 current steps) to determine the current at which steady state firing began. Firing was simulated with 100 current steps from this current upwards for 1/5 of the overall current range. Over this range a fI curve was constructed and the integral, or area under the curve (AUC), of the fI curve over this interval was computed with the composite trapezoidal rule and used as a measure of firing rate independent from rheobase.
The smallest current at which steady state firing occured was identified and the current step interval preceding the occurrence of steady state firing was simulated at higher resolution (100 current steps) to determine the current at which steady state firing began. Firing was simulated with 100 current steps from this current upwards for 1/5 of the overall current range. Over this range a fI curve was constructed and the integral, or area under the curve (AUC), of the fI curve over this interval was computed with the composite trapezoidal rule and used as a measure of firing rate independent from rheobase.
To obtain the rheobase, the current step interval preceding the occurrence of action potentials was explored at higher resolution with 100 current steps spanning the interval. Membrane responses to these current steps were then analyzed for action potentials and the rheobase was considered the lowest current step for which an action potential was elicited.
All models exhibit tonic firing and any instances of bursting were excluded to simplify the characterization of firing. Firing characterization was performed on steady-state firing and as such adaptation processes are neglected in our analysis.
To obtain the rheobase, the current step interval preceding the occurrence of action potentials was explored at higher resolution with 100 current steps spanning the interval. Membrane responses to these current steps were then analyzed for action potentials and the rheobase was considered the lowest current step for which an action potential was elicited. \noteuh{Ich verstehe aber nicht so ganz, was dann der Unterschied zu oben ist? Ab wann hast du den steady-state definiert? Wie viele Aktionspotentiale mussten mindestens auftreten? Das ist mir unklar. Und für die Rheobas hast du dann geschaut, wann min. 1 AP aufgetreten ist, oder?} \notenk{Der Unterschied zu oben ist dass oben die Ziel Stromschrit gefunden wird wo das Feuern anfaengt (z.B. 0.07 kein feuern, 0.08 feuern). Dieser Stromschrit wird dann wieder Simuliert mit kleinere schritte (z.B. 0.007, 0.00701, 0.00702, …, 0.0799, 0.08). Die Rheobas wird dann von diese kleiner schritte gefunden wo min 1 AP aufgreten ist (damit die Rheobase feiner aufgeloest ist)}
All models exhibited tonic firing and any instances of bursting were excluded to simplify the characterization of firing. \noteuh{Die Pyramidenzellen haben auch nie am Anfang einen kurzen „burst“ gezeigt? Ich frage nur, weil das in Zellen bei einigen Pyramidenzellen der Fall ist. Die hast du auch alles ausgeschlossen, um die Variabilität zu minimieren?} \notenk{Mit bursting meine ich hier repetitiven bursts, bzw. Periodisches bursting mit interburst Intervale. Den Fall wo die Pyramidenzellen am Anfang einen kurzen "burst" haben ist vorgekommen, wird aber hier nicht analysiert weil wir das "steady state" feuern hier betrachten} Firing characterization was performed on steady-state firing and as such adaptation processes are neglected in our analysis.
\subsection*{Sensitivity Analysis and Comparison of Models}
Properties of ionic currents common to all models (\(\textrm{I}_{\textrm{Na}}\), \(\textrm{I}_{\textrm{K}}\), \(\textrm{I}_{\textrm{A}}\)/\IKv, and \(\textrm{I}_{\textrm{Leak}}\)) were systematically altered in a one-factor-at-a-time sensitivity analysis for all models. The gating curves for each current were shifted (\(\Delta V_{1/2}\)) from -10 to 10\,mV in increments of 1\,mV. The voltage dependence of the time constant associated with the shifted gating curve was correspondingly shifted. The slope (\(k\)) of the gating curves were altered from half to twice the initial slope. Similarly, the maximal current conductance (\(g\)) was also scaled from half to twice the initial value. For both slope and conductance alterations, alterations consisted of 21 steps spaced equally on a \(\textrm{log}_2\) scale. We neglect variation of time constants for the practical reason that estimation and assessment of time constants and changes to them is not straightforward \citep{Clerx2019, Whittaker2020}.
Properties of ionic currents common to all models (\(\textrm{I}_{\textrm{Na}}\), \(\textrm{I}_{\textrm{K}}\), \(\textrm{I}_{\textrm{A}}\)/\IKv, and \(\textrm{I}_{\textrm{Leak}}\)) were systematically altered in a one-factor-at-a-time sensitivity analysis for all models. The gating curves for each current were shifted (\(\Delta V_{1/2}\)) from -10 to 10\,mV in increments of 1\,mV. The voltage dependence of the time constant associated with the shifted gating curve was correspondingly shifted. The slope (\(k\)) of the gating curves were altered from half to twice the initial slope. Similarly, the maximal current conductance (\(g\)) was also scaled from half to twice the initial value. For both slope and conductance alterations, alterations consisted of 21 steps spaced equally on a \(\textrm{log}_2\) scale. We neglected the variation of time constants for the practical reason that estimation and assessment of time constants and changes to them is not straightforward \citep{Clerx2019, Whittaker2020}.
\subsection*{Model Comparison}
Changes in rheobase (\drheo) are calculated in relation to the original model rheobase. The contrast of each AUC value (\(AUC_i\)) was computed in comparison to the AUC of the unaltered wild type model (\(AUC_{wt}\))
Changes in rheobase (\drheo) were calculated in relation to the original model rheobase. The contrast of each AUC value (\(AUC_i\)) was computed in comparison to the AUC of the unaltered wild type model (\(AUC_{wt}\))
\begin{equation}\label{eqn:AUC_contrast}
\textrm{normalized } \Delta \textrm{AUC} = \frac{AUC_i - AUC_{wt}}{AUC_{wt}}
\end{equation}
To assess whether the effects of a given alteration on \ndAUC or \drheo are robust across models, the correlation between \ndAUC or \drheo and the magnitude of the alteration of a current property was computed for each alteration in each model and compared across alteration types.
To assess whether the effects of a given alteration on \ndAUC or \drheo were robust across models, the correlation between \ndAUC or \drheo and the magnitude of the alteration of a current property was computed for each alteration in each model and compared across alteration types.
The Kendall's \(\tau\) coefficient, a non-parametric rank correlation, is used to describe the relationship between the magnitude of the alteration and AUC or rheobase values. A Kendall \(\tau\) value of -1 or 1 is indicative of monotonically decreasing and increasing relationships respectively.
\subsection*{KCNA1/\Kv Mutations}\label{subsec:mut}
Known episodic ataxia type~1 associated KCNA1 mutations and their electrophysiological characterization reviewed in \citet{lauxmann_therapeutic_2021}. The mutation-induced changes in \IKv amplitude and activation slope (\(k\)) were normalized to wild type measurements and changes in activation \(V_{1/2}\) were used relative to wild type measurements. The effects of a mutation were also applied to \(\textrm{I}_{\textrm{A}}\) when present as both potassium currents display prominent inactivation. In all cases, the mutation effects were applied to half of the \Kv or \(\textrm{I}_{\textrm{A}}\) under the assumption that the heterozygous mutation results in 50\% of channels carrying the mutation. Frequency-current curves for each mutation in each model were obtained through simulation and used to characterize firing behaviour as described above. For each model the differences in mutation AUC to wild type AUC were normalized by wild type AUC (\ndAUC) and mutation rheobases are compared to wild type rheobase values (\drheo). Pairwise Kendall rank correlations (Kendall \(\tau\)) are used to compare the the correlation in the effects of \Kv mutations on AUC and rheobase between models.
\subsection*{\textit{KCNA1} Mutations}\label{subsec:mut}
Known episodic ataxia type~1 associated \textit{KCNA1} mutations and their electrophysiological characterization have been reviewed in \citet{lauxmann_therapeutic_2021}. The mutation-induced changes in \IKv amplitude and activation slope (\(k\)) were normalized to wild type measurements and changes in activation \(V_{1/2}\) were used relative to wild type measurements. The effects of a mutation were also applied to \(\textrm{I}_{\textrm{A}}\) when present as both potassium currents display prominent inactivation. \textcolor{red}{\noteuh{Allerdings trägt Kv1.1 eher zum D-current bei, und nur zu gewissen Teilen zum A-type (wenn mit Kv1.4 exprimiert). Ansonsten inaktiviert Kv1.1 eher langsam…}} \notenk{Bei hoehere bzw mehr physiologischen Temperaturen ist die Inaktivierung schneller und eher A-type als D. siehe: https://channelpedia.epfl.ch/wiki/ionchannels/1 https://www.frontiersin.org/articles/10.3389/fncel.2019.00358/full} In all cases, the mutation effects were applied to half of the \Kv or \(\textrm{I}_{\textrm{A}}\) under the assumption that the heterozygous mutation results in 50\% of channels carrying the mutation. Frequency-current curves for each mutation in each model were obtained through simulation and used to characterize firing behavior as described above. For each model the differences in mutation AUC to wild type AUC were normalized by wild type AUC (\ndAUC) and mutation rheobases were compared to wild type rheobase values (\drheo). Pairwise Kendall rank correlations (Kendall \(\tau\)) were used to compare the correlation in the effects of \Kv mutations on AUC and rheobase between models.
@ -249,18 +257,18 @@ The code/software described in the paper is freely available online at [URL reda
% \textit{The results section should clearly and succinctly present the experimental findings. Only results essential to establish the main points of the work should be included.\\
% Authors must provide detailed information for each analysis performed, including population size, definition of the population (e.g., number of individual measurements, number of animals, number of slices, number of times treatment was applied, etc.), and specific p values (not > or <), followed by a superscript lowercase letter referring to the statistical table provided at the end of the results section. Numerical data must be depicted in the figures with box plots.}
To examine the role of cell-type specific ionic current environments on the impact of altered ion channel properties on firing behaviour a set of neuronal models was used and properties of channels common across models were altered systematically one at a time. The effects of a set of episodic ataxia type~1 associated \Kv mutations on firing was then examined across different neuronal models with different ionic current environments.
To examine the role of cell-type specific ionic current environments on the impact of altered ion channel properties on firing behavior a set of neuronal models was used and properties of channels common across models were altered systematically one at a time. The effects of a set of episodic ataxia type~1 associated \textit{KCNA1} mutations on firing was then examined across different neuronal models with different ionic current environments.
\begin{figure}[tp]
\centering
\includegraphics[width=\linewidth]{Figures/diversity_in_firing.pdf}
\linespread{1.}\selectfont
\caption[]{Diversity in Neuronal Model Firing. Spike trains (left), frequency-current (fI) curves (right) for Cb stellate (A), RS inhibitory (B), FS (C), RS pyramidal (D), RS inhibitory +\Kv (E), Cb stellate +\Kv (F), FS +\Kv (G), RS pyramidal +\Kv (H), STN +\Kv (I), Cb stellate \(\Delta\)\Kv (J), STN \(\Delta\)\Kv (K), and STN (L) neuron models. Black marker on the fI curves indicate the current step at which the spike train occurs. The green marker indicates the current at which firing begins in response to an ascending current ramp, whereas the red marker indicates the current at which firing ceases in response to a descending current ramp (see \Cref{fig:ramp_firing}).}
\caption[]{Diversity in Neuronal Model Firing. Spike trains (left), frequency-current (fI) curves (right) for Cb stellate (A), RS inhibitory (B), FS (C), RS pyramidal (D), RS inhibitory +\Kv (E), Cb stellate +\Kv (F), FS +\Kv (G), RS pyramidal +\Kv (H), STN +\Kv (I), Cb stellate \(\Delta\)\Kv (J), STN \(\Delta\)\Kv (K), and STN (L) neuron models. Black markers on the fI curves indicate the current step at which the spike train occurs. The green marker indicates the current at which firing begins in response to an ascending current ramp, whereas the red marker indicates the current at which firing ceases in response to a descending current ramp (see \Cref{fig:ramp_firing}). \textcolor{red}{\noteuh{Würde jeweils noch ein Leerzeichen nach dem „+“ machen. Oder davor und danach weglassen. }}\notenk{Ist vielleicht weil pandoc von LaTeX zu Word immer + Kv1.1 statt \Kv in der Word datei getan hat} \textcolor{red}{\noteuh{Bricht das Feuern der Zellen wirklich schon bei einer Strominjektion von 0.3nA ab? Und die Feuerfrequenz ist so hoch? War das bei den bereits publizierten RS inhibitory neurons ebenfalls so?}}\notenk{Ja das Feuern des Modells bricht von 0.3nA ab und feuert mit hoehe Feuerfrequenz. Das eine (RS inhibitory ist das original publizierte model (die von Experimentelle Daten gefitted wurde), und das RS inhibitory +\Kv hat niedriger Feuerfrequenz. }\textcolor{red}{\noteuh{Sollte bei A-L nA sein, nicht pA. }} \notenk{Changed}}
\label{fig:diversity_in_firing}
\end{figure}
\subsection*{Variety of model neurons}
Neuronal firing is heterogenous across the CNS and a set of neuronal models with heterogenous firing due to different ionic currents is desirable to reflect this heterogeneity. The set of single-compartment, conductance-based neuronal models used here has considerable diversity as evident in the variability seen across neuronal models both in spike trains and their fI curves (\Cref{fig:diversity_in_firing}). The models chosen all fire tonically and do not exhibit bursting. See methods for details and naming of the models. Some models, such as Cb stellate and RS inhibitory models, display type I firing whereas others such as Cb stellate \(\Delta\)\Kv and STN models have type II firing. Type I firing is characterized by continuous fI curves (i.e. firing rate increases from 0 in a continuous fashion) whereas type II firing is characterized by a discontinuity in the fI curve (i.e. a jump occurs from no firing to firing at a certain frequency). The other models used here lie on a continuum between these prototypical firing classifications. Most neuronal models exhibit hysteresis with ascending and descending ramps eliciting spikes at different current thresholds, however the STN +\Kv, STN \(\Delta\)\Kv, and Cb stellate \(\Delta\)\Kv models have large hysteresis (\Cref{fig:diversity_in_firing}, \Cref{fig:ramp_firing}). Different types of the underlying voltage and gating dynamics are known to generate these different firing types and hysteresis \cite{ERMENTROUT2002, ermentrout_type_1996, Izhikevich2006}.
Neuronal firing is heterogenous across the CNS and a set of neuronal models with heterogenous firing due to different ionic currents is desirable to reflect this heterogeneity. The set of single-compartment, conductance-based neuronal models used here has considerable diversity as evident in the variability seen across neuronal models both in spike trains and their fI curves (\Cref{fig:diversity_in_firing}). The models chosen for this study all fire tonically and do not exhibit bursting (see methods for details and naming of the models). Some models, such as Cb stellate and RS inhibitory models, display type I firing, whereas others such as Cb stellate \(\Delta\)\Kv and STN models exhibit type II firing. Type I firing is characterized by continuous fI curves (i.e. firing rate increases from 0 in a continuous fashion) whereas type II firing is characterized by a discontinuity in the fI curve (i.e. a jump occurs from no firing to firing at a certain frequency). The other models used here lie on a continuum between these prototypical firing classifications. Most neuronal models exhibit hysteresis with ascending and descending ramps eliciting spikes at different current thresholds. However, the STN +\Kv, STN \(\Delta\)\Kv, and Cb stellate \(\Delta\)\Kv models have large hysteresis (\Cref{fig:diversity_in_firing}, \Cref{fig:ramp_firing}). Different types of underlying voltage and gating dynamics \textcolor{red}{\noteuh{wie zum Beispiel? Könnte dann in der Diskussion evtl. aufgegriffen werden}} are known to generate these different firing types and hysteresis \cite{ERMENTROUT2002, ermentrout_type_1996, Izhikevich2006}.
\subsection*{Characterization of Neuronal Firing Properties}
\begin{figure}[tp]
@ -268,53 +276,53 @@ Neuronal firing is heterogenous across the CNS and a set of neuronal models with
\includegraphics[width=0.5\linewidth]{Figures/firing_characterization_arrows.pdf}
\linespread{1.}\selectfont
\caption[]{Characterization of firing with AUC and rheobase. (A) The area under the curve (AUC) of the repetitive firing frequency-current (fI) curve. (B)
Changes in firing as characterized by \(\Delta\)AUC and \(\Delta\)rheobase occupy 4 quadrants separated by no changes in AUC and rheobase. Representative schematic fI curves in red with respect to a reference fI curve (blue) depict the general changes associated with each quadrant.}
Changes in firing as characterized by \(\Delta\)AUC and \(\Delta\)rheobase occupy four quadrants separated by no changes in AUC and rheobase. Representative schematic fI curves in red with respect to a reference (or wild type) fI curve (blue) depict the general changes associated with each quadrant.\textcolor{red}{\noteuh{Evtl. könntest du schon in den Methoden auf Fig. 2A verweisen?}}\noteuh{Die Referenz ist dann der WT?}\notenk{Yes, add (or wildtype) tp make this clear} }
\label{fig:firing_characterization}
\end{figure}
Neuronal firing is a complex phenomenon and a quantification of firing properties is required for comparisons across cell types and between conditions. Here we focus on two aspects of firing: rheobase, the smallest injected current at which the cell fires an action potential, and the shape of the frequency-current (fI) curve as quantified by the area under the curve (AUC) for a fixed range of input currents above rheobase (\Cref{fig:firing_characterization}A). The characterization of firing by rheobase and AUC allows to characterize both a neuron's excitability in the sub-threshold regime (rheobase) and periodic firing in the super-threshold regime (AUC) by two independent measures. Note that AUC is essentially quantifying the slope of a neuron's fI curve.
Neuronal firing is a complex phenomenon, and a quantification of firing properties is required for comparisons across cell types and between different conditions. Here we focus on two aspects of firing: rheobase, the smallest injected current at which the cell fires an action potential, and the shape of the frequency-current (fI) curve as quantified by the area under the curve (AUC) for a fixed range of input currents above rheobase (\Cref{fig:firing_characterization}A). The characterization of the firing properties of a neuron by using rheobase and AUC allows to characterize both a neuron's excitability in the sub-threshold regime (rheobase) and periodic firing in the super-threshold regime (AUC) by two independent measures. Note that AUC is essentially quantifying the slope of a neuron's fI curve.
Using these two measures we quantify the effects a changed property of an ionic current has on neural firing by the differences in both rheobase, \drheo, and in AUC, \(\Delta\)AUC, relative to the wild type neuron. \(\Delta\)AUC is in addition normalized to the AUC of the wild type neuron, see Eq.~\eqref{eqn:AUC_contrast}. Each fI curve resulting from an altered ionic current is a point in a two-dimensional coordinate system spanned by \drheo and \ndAUC (\Cref{fig:firing_characterization}B). An fI curve similar to the one of the wild type neuron is marked by a point close to the origin. In the upper left quadrant, fI curves become steeper (positive difference of AUC values: \(+\Delta\)AUC) and are shifted to lower rheobases (negative difference of rheobases: \(-\)\drheo), unambigously indicating an increased firing that clearly might be classified as a GOF of neuronal firing. The opposite happens in the bottom right quadrant where the slope of fI curves decreases (\(-\Delta\)AUC) and the rheobase is shifted to higher currents (\(+\)\drheo), indicating a decreased, LOF firing. In the lower left (\(-\Delta\)AUC and \(-\)\drheo) and upper right (\(+\Delta\)AUC and \(+\)\drheo) quadrants, the effects on firing are less clear-cut, because the changes in rheobase and AUC have opposite effects on neuronal firing. Changes in a neuron's fI curves in these two quadrants cannot uniquely be described as a gain or loss of excitability. In these cases it depends on the regime the neuron is operating in. If it is in its excitable regime and only occasionally generates an action potential, then the effect on the rheobase matters more. If it is firing periodically with high rates, then the change in AUC might be more relevant.
Using these two measures we quantify the effects a changed property of an ionic current has on neural firing by the differences in both rheobase, \drheo, and in AUC, \(\Delta\)AUC, relative to the wild type neuron. \(\Delta\)AUC is in addition normalized to the AUC of the wild type neuron, see Eq.~\eqref{eqn:AUC_contrast}. Each fI curve resulting from an altered ionic current is a point in a two-dimensional coordinate system spanned by \drheo and \ndAUC (\Cref{fig:firing_characterization}B). An fI curve similar to the one of the wild type neuron is marked by a point close to the origin. In the upper left quadrant, fI curves become steeper (positive difference of AUC values: \(+\Delta\)AUC) and are shifted to lower rheobases (negative difference of rheobases: \(-\)\drheo), unambigously indicating an increased firing that clearly might be classified as a gain of function (GOF) of neuronal firing. The opposite happens in the bottom right quadrant where the slope of fI curves decreases (\(-\Delta\)AUC) and the rheobase is shifted to higher currents (\(+\)\drheo), indicating a decreased, loss of function (LOF) firing. In the lower left (\(-\Delta\)AUC and \(-\)\drheo) and upper right (\(+\Delta\)AUC and \(+\)\drheo) quadrants, the effects on firing are less clear-cut, because the changes in rheobase and AUC have opposite effects on neuronal firing. Changes in a neuron's fI curves in these two quadrants cannot uniquely be described as a gain or loss of excitability. In these cases, it depends on the regime the neuron is operating in. If it is in its excitable regime and only occasionally generates an action potential, then the effect on the rheobase matters more. If it is firing periodically with high rates, then the change in AUC might be more relevant. \textcolor{red}{\noteuh{Das sind ja eigentlich schon Hypothesen, sollte eher in die Diskussion oder dort zumindest noch mal aufgegriffen werden. Kommt ja vermutlich noch ;-)}}
\subsection*{Sensitivity Analysis}
Sensitivity analyses are used to understand how input model parameters contribute to determining the output of a model \citep{Saltelli2002}. In other words, sensitivity analyses are used to understand how sensitive the output of a model is to a change in input or model parameters. One-factor-a-time sensitivity analyses involve altering one parameter at a time and assessing the impact of this parameter on the output. This approach enables the comparison of given alterations in parameters of ionic currents across models.
For example, when shifting the half activation voltage \(V_{1/2}\) of the delayed rectifier potassium current in the FS +\Kv model to more depolarized values, then the rheobase of the resulting fI curves shifts to lower currents \(-\)\drheo, making the neuron more sensitive to weak inputs, but at the same time the slope of the fI curves is reduced (\(-\)\ndAUC), reducing firing rate (\Cref{fig:AUC_correlation}~A). As a result the effect of a depolarizing shift in the delayed rectifier potassium current half activation \(V_{1/2}\) in FS neurons is in the bottom left quadrant of \Cref{fig:firing_characterization}~B and characterization as LOF or GOF in excitability is not possible. Plotting the corresponding changes in AUC against the change in half activation potential \(V_{1/2}\) results in a monotonically falling curve (thick orange line in \Cref{fig:AUC_correlation}~B). For each of the many models we get a different relation between the changes in AUC and the shifts in half maximal potential \(V_{1/2}\) (thin lines in \Cref{fig:AUC_correlation}~B). To further summarize these different dependencies of the various models we characterize each of these curves by a single number, the \( \text{Kendall} \ \tau \) correlation coefficient\textcolor{red}{\textsuperscript{a}}. A monotonically increasing curve results in a \( \text{Kendall} \ \tau \) close to \(+1\)\textcolor{red}{\textsuperscript{a}}, a monotonously decreasing curve in \( \text{Kendall} \ \tau \approx -1 \)\textcolor{red}{\textsuperscript{a}}, and a non-monotonous, non-linear relation in \( \text{Kendall} \ \tau \) close to zero\textcolor{red}{\textsuperscript{a}} (compare lines in \Cref{fig:AUC_correlation}~B with dots in black box in panel C).
For example, when shifting the half activation voltage \(V_{1/2}\) of the delayed rectifier potassium current in the FS +\Kv model to more depolarized values, then the rheobase of the resulting fI curves shifted to lower currents \(-\)\drheo, making the neuron more sensitive to weak inputs, but at the same time the slope of the fI curves was reduced (\(-\)\ndAUC), which resulted in a reduced firing rate (\Cref{fig:AUC_correlation}~A) \textcolor{red}{\noteuh{Ich kann das auf Fig. 3 A nicht rauslesen…. Es ist aber auch nicht beschrieben, was dort genau gezeigt ist. Oder ich verstehe es gerade nicht....}}\notenk{The decrease in AUC and rheobase cause a decrease in firing (lower right quadrant Figure 2B). I've added grey to black color scheme to to axis in B, D and H to help make it clearer, but we could also change the figure legend?}. As a result the effect of a depolarizing shift in the delayed rectifier potassium current half activation \(V_{1/2}\) in FS neurons is in the bottom left quadrant of \Cref{fig:firing_characterization}~B and characterization as LOF or GOF in excitability is not possible. Plotting the corresponding changes in AUC against the change in half activation potential \(V_{1/2}\) results in a monotonically falling curve (thick orange line in \Cref{fig:AUC_correlation}~B). For each of the many models we got a different relation between the changes in AUC and the shifts in half maximal potential \(V_{1/2}\) (thin lines in \Cref{fig:AUC_correlation}~B). To further summarize these different dependencies of the various models we characterized each of these curves by a single number, the \( \text{Kendall} \ \tau \) correlation coefficient\textsuperscript{a}. A monotonically increasing curve resulted in a \( \text{Kendall} \ \tau \) close to \(+1\)\textsuperscript{a}, a monotonously decreasing curve in \( \text{Kendall} \ \tau \approx -1 \)\textsuperscript{a}, and a non-monotonous, non-linear relation in \( \text{Kendall} \ \tau \) close to zero\textsuperscript{a} (compare lines in \Cref{fig:AUC_correlation}~B with dots in black box in panel C).
Changes in gating half activation potential \(V_{1/2}\) and slope factor \(k\) as well as the maximum conductance \(g\) affect AUC (\Cref{fig:AUC_correlation}), but how exactly AUC is affected usually depends on the specific models. Increasing, for example, the slope factor of the \Kv activation curve, increases the AUC in all models (\( \text{Kendall} \ \tau \approx +1\)\textcolor{red}{\textsuperscript{a}}), but with different slopes (\Cref{fig:AUC_correlation}~D,E,F). Similar consistent positive correlations can be found for shifts in A-current activation \(V_{1/2}\). Changes in \Kv half activation \(V_{1/2}\) and in maximal A-current conductance result in negative correlations with the AUC in all models (\( \text{Kendall} \ \tau \approx -1\)\textcolor{red}{\textsuperscript{a}}).
Changes in gating half activation potential \(V_{1/2}\) and slope factor \(k\) as well as the maximum conductance \(g\) affected the AUC (\Cref{fig:AUC_correlation}), but how exactly the AUC was affected usually depended on the specific neuronal model. Increasing the slope factor of the \Kv activation curve for example increased the AUC in all models (\( \text{Kendall} \ \tau \approx +1\)\textsuperscript{a}), but with different slopes (\Cref{fig:AUC_correlation}~D,E,F). Similar consistent positive correlations can be found for shifts in A-current activation \(V_{1/2}\). Changes in \Kv half activation \(V_{1/2}\) and in maximal A-current conductance resulted in negative correlations with the AUC in all models (\( \text{Kendall} \ \tau \approx -1\)\textsuperscript{a}).
Qualitative differences can be found, for example, when increasing the maximal conductance of the delayed rectifier (\Cref{fig:AUC_correlation}~G,H,I). In some model neurons this increased AUC (\( \text{Kendall} \ \tau \approx +1\)\textcolor{red}{\textsuperscript{a}}), whereas in others AUC is decreased (\( \text{Kendall} \ \tau \approx -1\)\textcolor{red}{\textsuperscript{a}}). In the STN +\Kv model, AUC depends in a non-linear way on the maximal conductance of the delayed rectifier, resulting in an \( \text{Kendall} \ \tau \) close to zero\textcolor{red}{\textsuperscript{a}}. Even more dramatic qualitative differences between models result from shifts of the activation curve of the delayed rectifier, as discussed already above (\Cref{fig:AUC_correlation}~A,B,C). Some model neurons do almost not depend on changes in K-current half activation \(V_{1/2}\) or show strongly non-linear dependencies, both resulting in \( \text{Kendall} \ \tau\) close to zero\textcolor{red}{\textsuperscript{a}}. Many model neurons show strongly negative correlations, and a few show positive correlations with shifting the activation curve of the delayed rectifier.
Qualitative differences can be found, for example, when increasing the maximal conductance of the delayed rectifier (\Cref{fig:AUC_correlation}~G,H,I). In some model neurons this increased AUC (\( \text{Kendall} \ \tau \approx +1\)\textsuperscript{a}), whereas in others AUC was decreased (\( \text{Kendall} \ \tau \approx -1\)\textsuperscript{a}). In the STN +\Kv model, AUC depended in a non-linear way on the maximal conductance of the delayed rectifier, resulting in a \( \text{Kendall} \ \tau \) close to zero\textsuperscript{a}. Even more dramatic qualitative differences between models resulted from shifts of the activation curve of the delayed rectifier, as discussed already above (\Cref{fig:AUC_correlation}~A,B,C). Some model neurons did almost not depend on changes in K-current half activation \(V_{1/2}\) or showed strong non-linear dependencies, both resulting in \( \text{Kendall} \ \tau\) close to zero\textsuperscript{a}. Many model neurons showed strongly negative correlations, and a few displayed positive correlations with shifting the activation curve of the delayed rectifier.
\begin{figure}[tp]
\centering
\includegraphics[width=\linewidth]{Figures/AUC_correlation.pdf}
\linespread{1.}\selectfont
\caption[]{Effects of altered channel kinetics on AUC in various neuron models. The fI curves corresponding to shifts in FS \(+\)\Kv model delayed rectifier K half activation \(V_{1/2}\) (A), changes \Kv activation slope factor \(k\) in the FS \(+\)\Kv model (B), and changes in maximal conductance of delayed rectifier K current in the STN \(+\)\Kv model (C) are shown. The \ndAUC of fI curves is plotted against delayed rectifier K half activation potential (\(\Delta V_{1/2}\); B), \Kv activation slope factor \(k\) (k/\(\textrm{k}_{WT}\); E) and maximal conductance \(g\) of the delayed rectifier K current (g/\(\textrm{g}_{WT}\); H) for all models (thin lines) with relationships from the fI curve examples (A, D, G respectively) highlighted by thick lines with colors corresponding to the box highlighting each set of fI curves. The Kendall rank correlation (Kendall \(\tau\)) coefficients between shifts in half maximal potential \(V_{1/2}\) and \ndAUC (C), slope factor k and \ndAUC (F) as well as maximal current conductances and \ndAUC (I) for each model and current property is computed. The relationships between \(\Delta V_{1/2}\), k/\(\textrm{k}_{WT}\), and g/\(\textrm{g}_{WT}\) and \ndAUC for the Kendall rank correlations highlighted in the black boxes are depicted in (B), (E) and (H) respectively.}
\caption[]{Effects of altered channel kinetics on AUC in various neuron models. The fI curves corresponding to shifts in FS \(+\)\Kv model delayed rectifier K half activation \(V_{1/2}\) (A), changes \Kv activation slope factor \(k\) in the FS \(+\)\Kv model (D), and changes in maximal conductance of delayed rectifier K current in the STN \(+\)\Kv model (G) are shown. The \ndAUC of fI curves is plotted against delayed rectifier K half activation potential (\(\Delta V_{1/2}\); D), \Kv activation slope factor \(k\) (k/\(\textrm{k}_{WT}\); E) and maximal conductance \(g\) of the delayed rectifier K current (g/\(\textrm{g}_{WT}\); H) for all models (thin lines) with relationships from the fI curve examples (A, D, G respectively) highlighted by thick lines with colors corresponding to the box highlighting each set of fI curves. The Kendall rank correlation (Kendall \(\tau\)) coefficients between shifts in half maximal potential \(V_{1/2}\) and \ndAUC (C), slope factor k and \ndAUC (F) as well as maximal current conductances and \ndAUC (I) for each model and current property is computed. The relationships between \(\Delta V_{1/2}\), k/\(\textrm{k}_{WT}\), and g/\(\textrm{g}_{WT}\) and \ndAUC for the Kendall rank correlations highlighted in the black boxes are depicted in (B), (E) and (H) respectively. \textcolor{red}{\noteuh{Leerzeichen nach dem “+” ergänzen}\noteuh{Den Unterschied zwischen den dicken und dünnen Linien kann man relativ schlecht sehen. Obwohl ja die dicke Linie auch der Farbe des Kastens entspricht. Aber wenn man B/W druckt, dann sieht man das halt schlecht…}} \notenk{Added color gradient x-axis in B, E, H to indicate color scale in A,D,G}}
\label{fig:AUC_correlation}
\end{figure}
Changes in gating half activation potential \(V_{1/2}\) and slope factor \(k\) as well as the maximum conductance \(g\) affect rheobase (\Cref{fig:rheobase_correlation}), however, in contrast to AUC, qualitatively consistent effects on rheobase across models are observed. Increasing, for example, the maximal conductance of the leak current in the Cb stellate model increases the rheobase (\Cref{fig:rheobase_correlation}~G). When these changes are plotted against the change in maximal conductance a monotonically increasing relationship is evident (thick teal line in \Cref{fig:rheobase_correlation}~H). This monotonically increasing relationship is evident in all models (\( \text{Kendall} \ \tau \approx +1\)\textcolor{red}{\textsuperscript{a}}), but with different slopes (thin lines in \Cref{fig:rheobase_correlation}~H). Similarly, positive correlations are consistently found across models for maximal conductances of delayed rectifier K, \Kv, and A type currents, whereas the maximal conductance of the sodium current consistently is associated with negative correlations (\( \text{Kendall} \ \tau \approx -1\)\textcolor{red}{\textsuperscript{a}}; \Cref{fig:rheobase_correlation}~I), i.e. rheobase is decreased with increasing maximum conductance in all models.
Changes in gating half activation potential \(V_{1/2}\) and slope factor \(k\) as well as the maximum conductance \(g\) affected rheobase (\Cref{fig:rheobase_correlation}). However, in contrast to AUC, qualitatively consistent effects on rheobase across models could be observed. An increasing of the maximal conductance of the leak current in the Cb stellate model increased the rheobase (\Cref{fig:rheobase_correlation}~G). When these changes were plotted against the change in maximal conductance a monotonically increasing relationship was evident (thick teal line in \Cref{fig:rheobase_correlation}~H). \textcolor{red}{\noteuh{Den Unterschied zwischen den dicken und dünnen Linien kann man relativ schlecht sehen. Obwohl ja die dicke Linie auch der Farbe des Kastens entspricht. Aber wenn man B/W druckt, dann sieht man das halt schlecht…}}\notenk{decreased alpha of other lines to make thick line more obvious} This monotonically increasing relationship was evident in all models (\( \text{Kendall} \ \tau \approx +1\)\textsuperscript{a}), but with different slopes (thin lines in \Cref{fig:rheobase_correlation}~H). Similarly, positive correlations were consistently found across models for maximal conductances of delayed rectifier K, \Kv, and A type currents, whereas the maximal conductance of the sodium current was consistently associated with negative correlations (\( \text{Kendall} \ \tau \approx -1\)\textsuperscript{a}; \Cref{fig:rheobase_correlation}~I), i.e. rheobase decreased with increasing maximum conductance in all models.
Although changes in half maximal potential \(V_{1/2}\) and slope factor \(k\) generally correlate with rheobase similarly across model there are some exceptions. Changing the slope factor of Na-current inactivation, \Kv-current inactivation, and A-current activation affect rheobase both with positive and negative correlations in different models (\Cref{fig:rheobase_correlation}~F). Departures from monotonic relationships also occur in some models as a result of K-current activation \(V_{1/2}\) and slope factor \(k\), \Kv-current inactivation slope factor \(k\), and A-current activation slope factor \(k\) in some models. Thus, identical changes in current gating properties such as the half maximal potential \(V_{1/2}\) or slope factor \(k\) can have differing effects on firing depending on the model in which they occur.
Although changes in half maximal potential \(V_{1/2}\) and slope factor \(k\) generally correlated with rheobase similarly across model there were some exceptions. Changing the slope factor of Na-current inactivation, \Kv-current inactivation, and A-current activation affected the rheobase both with positive and negative correlations in different models \textcolor{red}{\noteuh{Würde diese hier noch mal benennen, damit es klar wird. }}\notenk{Ich mache das ungern, weil ich für jedes (Na-current inactivation, \Kv-current inactivation, and A-current activation) 2 Liste habe (+ und - rheobase Aenderungen} (\Cref{fig:rheobase_correlation}~F). Departures from monotonic relationships also occurred in some models as a result of K-current activation \(V_{1/2}\) and slope factor \(k\), \Kv-current inactivation slope factor \(k\), and A-current activation slope factor \(k\) in some models \textcolor{red}{\noteuh{Auch hier die unterschiedlcihen betroffenen cell type models benennen, einfach in Klammer dahinter.}}\notenk{Hier mache ich das auch ungern, für ähnlichen Gründen}. Thus, identical changes in current gating properties such as the half maximal potential \(V_{1/2}\) or slope factor \(k\) can have differing effects on firing depending on the model in which they occur.
\begin{figure}[tp]
\centering
\includegraphics[width=\linewidth]{Figures/rheobase_correlation.pdf}
\linespread{1.}\selectfont
\caption[]{Effects of altered channel kinetics on rheobase. The fI curves corresponding to shifts in FS \(+\)\Kv model \Kv activation \(V_{1/2}\) (A), changes \Kv inactivation slope factor \(k\) in the Cb stellate \(+\)\Kv model (B), and changes in maximal conductance of the leak current in the Cb stellate model (C) are shown. The \drheo of fI curves is plotted against \Kv half activation potential (\(\Delta V_{1/2}\); B), \Kv inactivation slope factor \(k\) (k/\(\textrm{k}_{WT}\); E) and maximal conductance \(g\) of the leak current (g/\(\textrm{g}_{WT}\); H) for all models (thin lines) with relationships from the fI curve examples (A, D, G respectively) highlighted by thick lines with colors corresponding to the box highlighting each set of fI curves. The Kendall rank correlation (Kendall \(\tau\)) coefficients between shifts in half maximal potential \(V_{1/2}\) and \drheo (C), slope factor k and \drheo (F) as well as maximal current conductances and \drheo (I) for each model and current property is computed. The relationships between \(\Delta V_{1/2}\), k/\(\textrm{k}_{WT}\), and g/\(\textrm{g}_{WT}\) and \drheo for the Kendall rank correlations highlighted in the black boxes are depicted in (B), (E) and (H) respectively..}
\caption[]{Effects of altered channel kinetics on rheobase. The fI curves corresponding to shifts in FS \(+\)\Kv model \Kv activation \(V_{1/2}\) (A), changes \Kv inactivation slope factor \(k\) in the Cb stellate \(+\)\Kv model (D), and changes in maximal conductance of the leak current in the Cb stellate model (G) are shown. The \drheo of fI curves is plotted against \Kv half activation potential (\(\Delta V_{1/2}\); B), \Kv inactivation slope factor \(k\) (k/\(\textrm{k}_{WT}\); E) and maximal conductance \(g\) of the leak current (g/\(\textrm{g}_{WT}\); H) for all models (thin lines) with relationships from the fI curve examples (A, D, G respectively) highlighted by thick lines with colors corresponding to the box highlighting each set of fI curves. The Kendall rank correlation (Kendall \(\tau\)) coefficients between shifts in half maximal potential \(V_{1/2}\) and \drheo (C), slope factor k and \drheo (F) as well as maximal current conductances and \drheo (I) for each model and current property is computed. The relationships between \(\Delta V_{1/2}\), k/\(\textrm{k}_{WT}\), and g/\(\textrm{g}_{WT}\) and \drheo for the Kendall rank correlations highlighted in the black boxes are depicted in (B), (E) and (H) respectively. \notenk{Added color gradient x-axis in B, E, H to indicate color scale in A,D,G}}
\label{fig:rheobase_correlation}
\end{figure}
\subsection*{\Kv Mutations}
Mutations in \Kv are associated with episodic ataxia type~1 (EA1) and have been characterized biophysically \citep{lauxmann_therapeutic_2021}. They are used here as a case study in the effects of various ionic current environments on neuronal firing and on the outcomes of channelopathies. The changes in AUC and rheobase from wild type values for reported EA1 associated \Kv mutations are heterogenous across models containing \Kv, but generally show decreases in rheobase (\Cref{fig:simulation_model_comparision}A-I). Pairwise non-parametric Kendall \(\tau\) rank correlations\textcolor{red}{\textsuperscript{a}} between the simulated effects of these \Kv mutations on rheobase are highly correlated across models (\Cref{fig:simulation_model_comparision}J) indicating that EA1 associated \Kv mutations generally decrease rheobase across diverse cell-types. However, the effects of the \Kv mutations on AUC are more heterogenous as reflected by both weak and strong positive and negative pairwise correlations between models (\Cref{fig:simulation_model_comparision}K), suggesting that the effects of ion-channel variant on super-threshold neuronal firing depend both quantitatively and qualitatively on the specific composition of ionic currents in a given neuron.
\subsection*{\textit{KCNA1} Mutations}
Mutations in \textit{KCNA1} are associated with episodic ataxia type~1 (EA1) and have been characterized biophysically (as reviewed by \citet{lauxmann_therapeutic_2021}). Here they were used as a case study \noteuh{Das hört sich so nach Klinik an…} in the effects of various ionic current environments on neuronal firing and on the outcomes of channelopathies. The changes in AUC and rheobase from wild type values for reported EA1 associated \textit{KCNA1} mutations were heterogeneous across models containing \Kv, but generally showed decreases in rheobase (\Cref{fig:simulation_model_comparision}A-I). Pairwise non-parametric Kendall \(\tau\) rank correlations\textsuperscript{a} between the simulated effects of these \Kv mutations on rheobase were highly correlated across models (\Cref{fig:simulation_model_comparision}J) indicating that EA1 associated \textit{KCNA1} mutations generally decrease rheobase across diverse cell-types. However, the effects of the \Kv mutations on AUC were more heterogenous as reflected by both weak and strong positive and negative pairwise correlations between models (\Cref{fig:simulation_model_comparision}K), suggesting that the effects of ion-channel variant on super-threshold neuronal firing depend both quantitatively and qualitatively on the specific composition of ionic currents in a given neuron.
\begin{figure}[tp]
\centering
\includegraphics[width=\linewidth]{Figures/simulation_model_comparison.pdf}
\linespread{1.}\selectfont
\caption[]{Effects of episodic ataxia type~1 associated \Kv mutations on firing. Effects of \Kv mutations on AUC (percent change in normalized \(\Delta\)AUC) and rheobase (\(\Delta\)Rheobase) compared to wild type for RS pyramidal +\Kv (A), RS inhibitory +\Kv (B), FS +\Kv (C), Cb stellate (D), Cb stellate +\Kv (E), Cb stellate \(\Delta\)\Kv (F), STN (G), STN +\Kv (H) and STN \(\Delta\)\Kv (I) models. V174F, F414C, E283K, and V404I mutations are highlighted in color for each model. Pairwise Kendall rank correlation coefficients (Kendall \(\tau\)) between the effects of \Kv mutations on rheobase and on AUC are shown in J and K respectively. Marker shape is indicative of model/firing type, and grey dashed lines denote the quadrants of firing characterization (see \Cref{fig:firing_characterization}).}
\caption[]{Effects of episodic ataxia type~1 associated \Kv mutations on firing. Effects of \Kv mutations on AUC (percent change in normalized \(\Delta\)AUC) and rheobase (\(\Delta\)Rheobase) compared to wild type for RS pyramidal +\Kv (A), RS inhibitory +\Kv (B), FS +\Kv (C), Cb stellate (D), Cb stellate +\Kv (E), Cb stellate \(\Delta\)\Kv (F), STN (G), STN +\Kv (H) and STN \(\Delta\)\Kv (I) models. Mutations are marked in grey with the V174F, F414C, E283K, and V404I mutations are highlighted in color for each model. Pairwise Kendall rank correlation coefficients (Kendall \(\tau\)) between the effects of \Kv mutations on rheobase and on AUC are shown in J and K respectively. Marker shape is indicative of model/firing type, and grey dashed lines denote the quadrants of firing characterization (see \Cref{fig:firing_characterization}). \textcolor{red}{\noteuh{Auch hier wieder ein Leerzeichen nach dem „+“ ergänzen}} \noteuh{Und die kleineren grauen Symbole sind andere Mutationen?} \notenk{Added ``Mutations are marked in grey with...'' to legend to make this clear}\noteuh{Eckige Klammer bei den Einheiten? War zumindest oben mal so [pA]}\notenk{Gemacht []}}
\label{fig:simulation_model_comparision}
\end{figure}
@ -322,37 +330,38 @@ Mutations in \Kv are associated with episodic ataxia type~1 (EA1) and have been
\section*{Discussion (3000 Words Maximum - Currently 1871)}
% \textit{The discussion section should include a brief statement of the principal findings, a discussion of the validity of the observations, a discussion of the findings in light of other published work dealing with the same or closely related subjects, and a statement of the possible significance of the work. Extensive discussion of the literature is discouraged.}\\
To compare the effects of changes to properties of ionic currents on neuronal firing of different neuron types, a diverse set of conductance-based models was simulated. Changes to single ionic current properties, as well as known episodic ataxia type~1 associated \Kv mutations showed consistent effects on the rheobase across cell types, whereas the effects on AUC of the steady-state fI-curve depend on cell type. Our results demonstrate that LOF and GOF on the biophysical level cannot be uniquely transferred to the level of neuronal firing. The effects depend on the properties of the other currents expressed in a cell and are therefore depending on cell type.
To compare the effects of alterations \textcolor{red}{\noteuh{Welches changes? Du meinst vermutlich die Effekte unterschiedlicher Mutationen}}\notenk{Ja die Effekte der Mutationen gehoeren dazu, aber es wird allgmein gemeint - wenn irgendwas anderes die Kanaleigenschaften aendern (auxillary subunits, etc) diese Aenderungen gehoeren auch dazu.}\notenk{Changed from ``changes'' to ``alterations'' to make it more clear} to properties of ionic currents on neuronal firing of different neuron types, a diverse set of conductance-based models was simulated. Changes to single ionic current properties, as well as known episodic ataxia type~1 associated \textit{KCNA1} mutations showed consistent effects on the rheobase across cell types, whereas the effects on AUC of the steady-state fI-curve depended on the cell type. Our results demonstrate that loss of function (LOF) and gain of function (GOF) on the biophysical level cannot be uniquely transferred to the level of neuronal firing. Thus the effects caused by different mutations depend on the properties of the other ion channels expressed in a cell and are therefore depend on the channel ensemble of a specific cell type.
\subsection*{Neuronal Diversity}
\noteuh{Der Abschnitt gefällt mir sehr gut!}
The nervous system consists of a vastly diverse and heterogenous collection of neurons with variable properties and characteristics including diverse combinations and expression levels of ion channels which are vital for neuronal firing dynamics.
Advances in high-throughput techniques have enabled large-scale investigation into single-cell properties across the CNS \citep{Poulin2016} that have revealed large diversity in neuronal gene expression, morphology and neuronal types in the motor cortex \citep{Scala2021}, neocortex \cite{Cadwell2016, Cadwell2020}, GABAergic neurons \citep{Huang2019} and interneurons \citep{Laturnus2020}, cerebellum \citep{Kozareva2021}, spinal cord \citep{Alkaslasi2021}, visual cortex \citep{Gouwens2019} as well as the retina \citep{Baden2016, Voigt2019, Berens2017, Yan2020a, Yan2020b}.
Advances in high-throughput techniques have enabled large-scale investigation into single-cell properties across the CNS \citep{Poulin2016} that have revealed large diversity in neuronal gene expression, morphology and neuronal types in the motor cortex \citep{Scala2021}, neocortex \cite{Cadwell2016, Cadwell2020}, GABAergic neurons in the cortex and retina \citep{Huang2019, Laturnus2020} \noteuh{Wie sind den hier die Unterschiede zwischen GABAergen Neuronen und Interneuronen festgelegt? Und von welchen Gehrinbereichen ist dann hier die Rede?} \notenk{Stimmt, habe ich schlecht geschrieben. Das sind Interneuronen vom neocortex in Huang und Paul und V1 und bipolar cells in der Retina in Laturnus}\notenk{Change to ``GABAergic neurons in the cortex and retina''}, cerebellum \citep{Kozareva2021}, spinal cord \citep{Alkaslasi2021}, visual cortex \citep{Gouwens2019} as well as the retina \citep{Baden2016, Voigt2019, Berens2017, Yan2020a, Yan2020b}.
Diversity across neurons is not limited to gene expression and can also be seen electrophysiologically \citep{Tripathy2017, Gouwens2018, Tripathy2015, Scala2021, Cadwell2020, Gouwens2019, Baden2016, Berens2017} with correlations existing between gene expression and electrophysiological properties \citep{Tripathy2017}. At the ion channel level, diversity exists not only between the specific ion channels cell types express but heterogeneity also exists in ion channel expression levels within cell types \citep{marder_multiple_2011, goaillard_ion_2021,barreiro_-current_2012}. As ion channel properties and expression levels are key determinents of neuronal dynamics and firing \citep{Balachandar2018, Gu2014, Zeberg2015, Aarhem2007, Qi2013, Gu2014a, Zeberg2010, Zhou2020, Kispersky2012} neurons with different ion channel properties and expression levels display different firing properties.
Diversity across neurons is not limited to gene expression and can also be seen electrophysiologically \citep{Tripathy2017, Gouwens2018, Tripathy2015, Scala2021, Cadwell2020, Gouwens2019, Baden2016, Berens2017} with correlations existing between gene expression and electrophysiological properties \citep{Tripathy2017}. At the ion channel level, diversity exists not only between the specific ion channels the different cell types express but heterogeneity also exists in ion channel expression levels within cell types \citep{marder_multiple_2011, goaillard_ion_2021,barreiro_-current_2012}. As ion channel properties and expression levels are key determinents of neuronal dynamics and firing \citep{Balachandar2018, Gu2014, Zeberg2015, Aarhem2007, Qi2013, Gu2014a, Zeberg2010, Zhou2020, Kispersky2012} neurons with different ion channel properties and expression levels display different firing properties.
To capture the diversity in neuronal ion channel expression and its relevance in the outcome of ion channel mutations, we used multiple neuronal models with different ionic currents and underlying firing dynamics here.
\subsection*{Ionic Current Environments Determine the Effect of Ion Channel Mutations}
To our knowledge, no comprehensive evaluation of how ionic current environment and cell type affect the outcome of ion channel mutations have been reported. However, comparisons between the effects of such mutations between certain cell types were described. For instance, the R1628H mutation in SCN1A results in selective hyperexcitability of cortical pyramidal neurons, but causes hypoexcitability of adjacent inhibitory GABAergic neurons \citep{Hedrich14874}. In CA3 of the hippocampus, the equivalent mutation in SCN8A, R1648H, increases excitability of pyramidal neurons and decreases excitability of parvalbumin positive interneurons \cite{makinson_scn1a_2016}. Additionally, the L858H mutation in \(\textrm{Na}_\textrm{V}\textrm{1.7}\), associated with erythermyalgia, has been shown to cause hypoexcitability in sympathetic ganglion neurons and hyperexcitability in dorsal root ganglion neurons \citep{Waxman2007, Rush2006}. The differential effects of L858H \(\textrm{Na}_\textrm{V}\textrm{1.7}\) on firing is dependent on the presence or absence of another sodium channel \(\textrm{Na}_\textrm{V}\textrm{1.8}\) \citep{Waxman2007, Rush2006}. These findings, in concert with our findings emphasize that the ionic current environment in which a channelopathy occurs is vital in determining the outcomes of the channelopathy on firing.
To our knowledge, no comprehensive evaluation of how ionic current environment and cell type affect the outcome of ion channel mutations have been reported. However, comparisons between the effects of such mutations between certain cell types were described. For instance, the R1648H mutation in SCN1A does not alter the excitability of cortical pyramidal neurons \noteuh{Das stimmt so allerdings nicht. Es wurde nicht geziegt, dass die Pyramidenzellen hyperexzitabel sind. Die Hypoexcitability der Interneurone wurde dagegen gezeigt und man geht davon aus, dass die reduzierte Inhibition zu einer Hyperexzitabilität des Netzwerks führt. Das war im Ergebnisteil auch schon etwas durcheinander.} \notenk{Mein Fehler, habe ich falsch von Paper vestandend. Habe es im Text umgeschrieben}, but causes hypoexcitability of adjacent inhibitory GABAergic neurons \citep{Hedrich14874}. In the CA3 region of the hippocampus, the equivalent mutation in \textit{SCN8A}, R1627H \noteuh{Bitte noch mal kontrollieren, ob das stimmt. Bin mir nicht sicher, ober es 1627 oder 1629 ist…} \notenk{1627 in \citep{makinson_scn1a_2016}}, increases the excitability of pyramidal neurons and decreases the excitability of parvalbumin positive interneurons \cite{makinson_scn1a_2016}. Additionally, the L858H mutation in \(\textrm{Na}_\textrm{V}\textrm{1.7}\), associated with erythermyalgia, has been shown to cause hypoexcitability in sympathetic ganglion neurons and hyperexcitability in dorsal root ganglion neurons \citep{Waxman2007, Rush2006}. The differential effects of L858H \(\textrm{Na}_\textrm{V}\textrm{1.7}\) on firing is dependent on the presence or absence of another sodium channel, namely the \(\textrm{Na}_\textrm{V}\textrm{1.8}\) subunit \noteuh{Stimmt das dann beides so? Bitte noch mal kontrollieren.} \notenk{Ja, das stimmt. Habe ich kontrolliert - das stimmt beides, weil einer der grosse Unterschied zwischen diese Zelltypen ist Nav1.8} \citep{Waxman2007, Rush2006}. These findings, in concert with our findings emphasize that the ionic current environment in which a channelopathy occurs is vital in determining the outcomes of the channelopathy on firing.
Cell type specific differences in ionic current properties are important in the effects of ion channel mutations, however within a cell type heterogeneity in channel expression levels exists and it is often desirable to generate a population of neuronal models and to screen them for plausibility to biological data in order to capture neuronal population diversity \citep{marder_multiple_2011}. The models we used here are originally generated by characterization of current gating properties and by fitting of maximal conductances to experimental data \citep{pospischil_minimal_2008, ranjan_kinetic_2019, alexander_cerebellar_2019, otsuka_conductance-based_2004}. This practice of fixing maximal conductances based on experimental data is limiting as it does not reproduce the variability in channel expression and neuronal firing behaviour of a heterogeneous neuron population \citep{verma_computational_2020}. For example, a model derived from the mean conductances in a sub-population of stomatogastric ganglion "one-spike bursting" neurons fires 3 spikes instead of 1 per burst due to an L shaped distribution of sodium and potassium conductances \citep{golowasch_failure_2002}.
Multiple sets of current conductances can give rise to the same patterns of activity also termed degeneracy and differences in neuronal dynamics may only be evident with perturbations \citep{marder_multiple_2011, goaillard_ion_2021}.
Variability in ion channel expression often correlates with the expression of other ion channels \citep{goaillard_ion_2021} and neurons whose behaviour is similar may possess correlated variability across different ion channels resulting in stability in neuronal phenotype \citep{lamb_correlated_2013, soofi_co-variation_2012, taylor_how_2009}.
The variability of ion currents and degeneracy of neurons may account, at least in part, for the observation that the effect of toxins within a neuronal type is frequently not constant \citep{khaliq_relative_2006, puopolo_roles_2007, ransdell_neurons_2013}.
Cell type specific differences in ionic current properties are important in the effects of ion channel mutations. However within a cell type heterogeneity in channel expression levels exists \noteuh{Meinst du damit die “realen” Zellen oder die Modelle?}\notenk{Beides, ``realen'' Zellen und dann die Modelle die daraus entstehen} and it is often desirable to generate a population of neuronal models and to screen them for plausibility to biological data in order to capture neuronal population diversity \citep{marder_multiple_2011}. The models we used here are originally generated by characterization of current gating properties and by fitting of maximal conductances to experimental data \citep{pospischil_minimal_2008, ranjan_kinetic_2019, alexander_cerebellar_2019, otsuka_conductance-based_2004}. This practice of fixing maximal conductances based on experimental data is limiting as it does not reproduce the variability in channel expression and neuronal firing behavior of a heterogeneous neuron population \citep{verma_computational_2020}. For example, a model derived from the mean conductances in a neuronal sub-population within the stomatogastric ganglion, the so-called "one-spike bursting" neurons fire three spikes instead of one per burst due to an L-shaped distribution of sodium and potassium conductances \citep{golowasch_failure_2002}.
Multiple sets of conductances can give rise to the same patterns of activity also termed degeneracy and differences in neuronal dynamics may only be evident with perturbations \citep{marder_multiple_2011, goaillard_ion_2021}.
The variability in ion channel expression often correlates with the expression of other ion channels \citep{goaillard_ion_2021} and neurons whose behavior is similar may possess correlated variability across different ion channels resulting in stability in the neuronal phenotype \citep{lamb_correlated_2013, soofi_co-variation_2012, taylor_how_2009}.
The variability of ionic currents and degeneracy of neurons may account, at least in part, for the observation that the effect of toxins within a neuronal type is frequently not constant \citep{khaliq_relative_2006, puopolo_roles_2007, ransdell_neurons_2013}.
\subsection*{Effects of KCNA1 Mutations}
Changes in delayed rectifier potassium currents, analogous to those seen in \Kv mutations, change the underlying firing dynamics of the Hodgkin Huxley model result in reduced thresholds for repetitive firing and thus contribute to increased excitability \citep{hafez_altered_2020}. Although the Hodgkin Huxley delayed rectifier lacks inactivation, the increases in excitability seen by \citet{hafez_altered_2020} are in line with our simulation-based predictions of the outcomes of \Kv mutations. LOF KCNA1 mutations generally increase neuronal excitability, however the varying susceptibility on rheobase and different effects on AUC of the fI-curve of KCNA1 mutations across models are indicative that a certain cell type specific complexity exists. Increased excitability is seen experimentally with \Kv null mice \citep{smart_deletion_1998, zhou_temperature-sensitive_1998}, with pharmacological \Kv block \citep{chi_manipulation_2007, morales-villagran_protection_1996} and by \citet{hafez_altered_2020} with simulation-based predictions of KCNA1 mutations. Contrary to these results, \citet{zhao_common_2020} predicted \textit{in silico} that the depolarizing shifts seen as a result of KCNA1 mutations broaden action potentials and interfere negatively with high frequency action potential firing, however they varied stimulus duration between different models and therefore comparability of firing rates is lacking in this study.
\subsection*{Effects of \textit{KCNA1} Mutations}
Changes in delayed rectifier potassium currents, analogous to those seen in LOF \textit{KCNA1} mutations, change the underlying firing dynamics of the Hodgkin Huxley model result in reduced thresholds for repetitive firing and thus contribute to increased excitability \citep{hafez_altered_2020} \noteuh{Aber es kommt doch darauf an, welche Veränderungen. Wenn es zu einem GOF kommt, dann geht man ja eigentlich nicht von einer erhöhten Erregbarkeit aus. Oder gehst du hier nur von LOF Mutationen aus? Sollte dann evtl. noch mal klar gemacht werden, dass die analogen Mutationen in KCNA1 LOF Mutationen sind. } \notenk{Ja genau die KCNA1 mutationen are LOF, habe das im Text klargemacht}. Although the Hodgkin Huxley delayed rectifier lacks inactivation, the increases in excitability observed by \citet{hafez_altered_2020} are in line with our simulation-based predictions of the outcomes of \textit{KCNA1} mutations. LOF \textit{KCNA1} mutations generally increase neuronal excitability, however the varying susceptibility on rheobase and different effects on AUC of the fI-curve of KCNA1 mutations across models are indicative that a certain cell type specific complexity exists. Increased excitability is seen experimentally with \Kv null mice \citep{smart_deletion_1998, zhou_temperature-sensitive_1998}, with pharmacological \Kv block \citep{chi_manipulation_2007, morales-villagran_protection_1996} and by \citet{hafez_altered_2020} with simulation-based predictions of \textit{KCNA1} mutations. Contrary to these results, \citet{zhao_common_2020} predicted \textit{in silico} that the depolarizing shifts seen as a result of \textit{KCNA1} mutations broaden action potentials and interfere negatively with high frequency action potential firing. However, they varied stimulus duration between different models and therefore comparability of firing rates is lacking in this study.
In our simulations, different current properties alter the impact of KCNA1 mutations on firing in our simulations as evident in the differences seen in the impact of \(\textrm{I}_\textrm{A}\) and \IKv in the Cb stellate and STN model families on KCNA1 mutation firing. This highlights that knowledge of the biophysical properties of a current and its neuronal expression is vital for holistic understanding of the effects of a given ion channel mutation both at a single cell and network level.
In our simulations, different current properties alter the impact of \textit{KCNA1} mutations on firing as evident in the differences seen in the impact of \(\textrm{I}_\textrm{A}\) and \IKv in the Cb stellate and STN model families on \textit{KCNA1} mutation firing \noteuh{Dieser satz ist sehr verwirrend… }\notenk{removed second ``in our simulations'' to make it clearer}. This highlights that knowledge of the biophysical properties \textcolor{red}{\noteuh{Das sind ja die biophysical properties of a channel}} of a channel and its neuronal expression is vital for the holistic understanding of the effects of a given ion channel mutation both at the single cell and network level.
\subsection*{Loss or Gain of Function Characterizations Do Not Fully Capture Ion Channel Mutation Effects on Firing}
The effects of changes in current properties depend in part on the neuronal model in which they occur and can be seen in the variance of correlations (especially in AUC of the fI-curve) across models for a given current property change. Therefore, relative conductances and gating properties of currents in the ionic current environment in which an alteration in current properties occurs plays an important role in determining the outcome on firing. The use of loss of function (LOF) and gain of function (GOF) is useful at the level of ion channels and whether a mutation results in more or less ionic current, however the extension of this thinking onto whether mutations induce LOF or GOF at the level of neuronal firing based on the ionic current LOF/GOF is problematic due to the dependency of neuronal firing changes on the ionic current environment. Thus the direct leap from current level LOF/GOF characterizations to effects on firing without experimental or modelling-based evidence, although tempting, should be refrained from and viewed with caution when reported. This is especially relevant in the recent development of personalized medicine for channelopathies, where a patients specific channelopathy is identified and used to tailor treatments \citep{Weber2017, Ackerman2013, Helbig2020, Gnecchi2021, Musto2020, Brunklaus2022}. However, the effects of specific ion channel mutations are often characterized in expression systems and classified as LOF or GOF to aid in treatment decisions \citep{johannesen_genotype-phenotype_2021, Brunklaus2022, Musto2020}. Interestingly, both LOF and GOF \(\textrm{Na}_{\textrm{V}}\textrm{1.6}\) mutations can benefit from treatment with sodium channel blockers \citep{johannesen_genotype-phenotype_2021}, suggesting that the relationship between effects at the level of ion channels and effects at the level of firing and therapeutics is not linear or evident without further contextual information. Therefore, this approach should be used with caution and the cell type which expressed the mutant ion channel may provide valuable insight into the functional consequences of an ion channel mutation. Where experimental assessment of the effects of a patient's specific ion channel mutation \textit{in vivo} is not feasible at a large scale, modelling approaches investigating the effects of patient specific channelopathies provides an alternative bridge between characterization of changes in biophysical properties of ionic currents and the firing consequences of these effects. In both experimental and modelling investigation of firing level effects of channelopathies cell-type dependency should be considered.
The effects of changes in channel properties depend in part on the neuronal model in which they occur and can be seen in the variance of correlations (especially in AUC of the fI-curve) across models for a given current property change. Therefore, relative conductances and gating properties of currents in the ionic current environment in which an alteration in current properties \textcolor{red}{\noteuh{Möchtset du hier wirklich immer von den Current properties sprechen? Oder sollten wir eher channel properties schreiben, da ja eigentlich die Kanaleigenschaften und daher auch der Strom verändert ist? Vielleicht ist das „bei euch“ (;-)) so üblich, dann ist es natürlich in Ordnung }}\notenk{Koennen wir machen, da stimme ich zu das sind wirklich Kanaleigenschaften die as Stroemeigenschaft vorkommen} occurs plays an important role in determining the outcome on firing. The use of loss of function (LOF) and gain of function (GOF)\textcolor{red}{ \noteuh{Hatte ich glaube ich oben schon mal angemerkt, dass du prüfen solltest, ob die Abkürzungen eingeführt sind. Sollte auf jeden Fall weiter oben passieren und dann ist es hier nicht mehr nötig.}} \notenk{Geprueft - in jeden Abschnitt (e.g Einleitung, Methoden,usw) werden Abkuerzungen eingefuehrt das erste mal.} is useful at the level of ion channels to indicate whether a mutation results in more or less ionic current \noteuh{Was willst du damit sagen?}\notenk{``is useful at the level of ion channels and whether a mutation results in more or less ionic current'' to ``is useful at the level of ion channels to indicate whether a mutation results in more or less ionic current''}. However, the extension of this thinking onto whether mutations induce LOF or GOF at the level of neuronal firing based on the ionic current LOF/GOF is problematic due to the dependency of neuronal firing changes on the ionic channel environment. Thus, the direct leap from current level LOF/GOF characterizations to effects on firing without experimental or modelling-based evidence, although tempting, should be refrained from and viewed with caution when reported. This is especially relevant in the recent development of personalized medicine for channelopathies, where a patients specific channelopathy is identified and used to tailor treatments \citep{Weber2017, Ackerman2013, Helbig2020, Gnecchi2021, Musto2020, Brunklaus2022, Hedrich2021} \noteuh{Hier kannst du auch noch Hedrich, Lauxmann et al., 2021 ergänzen. Das ist die KCNA2 Arbeit, in der Patienten mit GOF und GOF+LOF Varianten mit 4-Aminopyridin behandelt werden. }\notenk{Gemacht}. However, the effects of specific ion channel mutations are often characterized in expression systems and classified as LOF or GOF to aid in treatment decisions \citep{johannesen_genotype-phenotype_2021, Brunklaus2022, Musto2020}. Interestingly, both LOF and GOF \(\textrm{Na}_{\textrm{V}}\textrm{1.6}\) mutations \textcolor{red}{\noteuh{Auf welcher Ebene? Kanal, also Strom oder Feuern?}}\notenk{Kanalebene} can benefit from treatment with sodium channel blockers \citep{johannesen_genotype-phenotype_2021} \textcolor{red}{\noteuh{Allerdings sprachen die GOF-carrier signifikant besser auf Na+ channel blocker an. Das solltest du auch bedenken!!!}}\notenk{Das stimmt natuerlich, aber das benachtraegt nicht die Uhrsache das mann beide (LOF unf GOF) mit das gleiche Medikament behandeln kann. Dies zeigt dass es nicht so einfach ist von Kanalebene LOF und GOF information eine effektive Behandlung zu finden}, suggesting that the relationship between effects at the level of ion channels and effects at the level of firing and therapeutics is not linear or evident without further contextual information. Therefore, this approach should be used with caution and the cell type which expresses the mutant ion channel may provide valuable insight into the functional consequences of an ion channel mutation. Where experimental assessment of the effects of a patient's specific ion channel mutation \textit{in vivo} is not feasible at a large scale, modelling approaches investigating the effects of patient specific channelopathies provides an alternative bridge between characterization of changes in biophysical properties of ionic currents and the firing consequences of these effects. In both experimental and modelling investigation into the effects of ion channel mutations on neuronal firing the specific cell-type dependency should be considered.
The effects of altered ion channel properties on firing is generally influenced by the other ionic currents in the cell. In channelopathies the effect of a given ion channel mutation on neuronal firing therefore depends on the cell type in which those changes occur \citep{Hedrich14874, makinson_scn1a_2016, Waxman2007, Rush2006}. Although certain complexities of neurons such as differences in cell-type sensitivities to current property changes, interactions between ionic currents, cell morphology and subcellular ion channel distribution are neglected here, it is likely that this increased complexity \textit{in vivo} would contribute to the cell-type dependent effects on neuronal firing. Cell-type dependent firing effects of channelopathies may underlie shortcomings in treatment approaches in patients with channelopathies and accounting for cell-type dependent firing effects may provide an opportunity to further the efficacy and precision in personalized medicine approaches.
The effects of altered ion channel properties on firing is generally influenced by the other ionic currents present in the cell. In channelopathies the effect of a given ion channel mutation on neuronal firing therefore depends on the cell type in which those changes occur \citep{Hedrich14874, makinson_scn1a_2016, Waxman2007, Rush2006}. Although certain complexities of neurons such as differences in cell-type sensitivities to current property changes, interactions between ionic currents, cell morphology and subcellular ion channel distribution are neglected here, it is likely that this increased complexity \textit{in vivo} would contribute to the cell-type dependent effects on neuronal firing. Cell-type dependent firing effects of channelopathies may underlie shortcomings in treatment approaches in patients with channelopathies and accounting for cell-type dependent firing effects may provide an opportunity to further the efficacy and precision in personalized medicine approaches.
\par\null

89
ref.bib
View File

@ -2104,4 +2104,93 @@ SIGNIFICANCE: Bromide is most effective and is a well-tolerated drug among DS pa
}
@Article{Browne1994,
author = {Browne, David L. and Gancher, Stephen T. and Nutt, John G. and Brunt, Ewout R. P. and Smith, Eric A. and Kramer, Patricia and Litt, Michael},
journal = {Nature Genetics},
title = {Episodic ataxia/myokymia syndrome is associated with point mutations in the human potassium channel gene, {KCNA1}},
year = {1994},
issn = {1546-1718},
month = oct,
number = {2},
pages = {136--140},
volume = {8},
abstract = {Episodic ataxia (EA) is a rare, familial disorder producing attacks of generalized ataxia, with normal or near-normal neurological function between attacks. One type of EA is characterized by brief episodes of ataxia with myokymia (rippling of muscles) evident between attacks. Linkage studies in four such families suggested localization of an EA/ myokymia gene near the voltage gated K+ channel gene, KCNA1 (Kv1.1), on chromosome 12p. Mutation analysis of the KCNA1 coding region in these families identified four different missense point mutations present in the heterozygous state, indicating that EA/myokymia can result from mutations in this gene.},
copyright = {1994 Nature Publishing Group},
doi = {10.1038/ng1094-136},
file = {Full Text PDF:C\:\\Users\\nilsk\\Zotero\\storage\\WKWMG5CL\\Browne et al. - 1994 - Episodic ataxiamyokymia syndrome is associated wi.pdf:application/pdf;Full Text PDF:C\:\\Users\\nilsk\\Zotero\\storage\\UZJSGF2J\\Browne et al. - 1994 - Episodic ataxiamyokymia syndrome is associated wi.pdf:application/pdf;Snapshot:C\:\\Users\\nilsk\\Zotero\\storage\\H7HS6X9W\\ng1094-136.html:text/html;Snapshot:C\:\\Users\\nilsk\\Zotero\\storage\\JUTGMKPM\\ng1094-136.html:text/html},
language = {en},
urldate = {2021-06-10},
}
@Article{Browne1995,
author = {Browne, D.L. and Brunt, E.R.P. and Griggs, R.C. and Nutt, J.G. and Gancher, S.T. and Smith, E.A. and Litt, M.},
journal = {Human Molecular Genetics},
title = {Identification of two new {KCNA1} mutations in episodic ataxia/myokymia families},
year = {1995},
issn = {0964-6906},
month = sep,
number = {9},
pages = {1671--1672},
volume = {4},
doi = {10.1093/hmg/4.9.1671},
file = {Full Text PDF:C\:\\Users\\nilsk\\Zotero\\storage\\X8R57337\\Browne et al. - 1995 - Identification of two new KCNA1 mutations in episo.pdf:application/pdf;Snapshot:C\:\\Users\\nilsk\\Zotero\\storage\\X8SUGSSL\\635268.html:text/html},
urldate = {2021-06-10},
}
@Article{Hedrich2021,
author = {Hedrich, Ulrike B. S. and Lauxmann, Stephan and Wolff, Markus and Synofzik, Matthis and Bast, Thomas and Binelli, Adrian and Serratosa, José M. and Martínez-Ulloa, Pedro and Allen, Nicholas M. and King, Mary D. and Gorman, Kathleen M. and Zeev, Bruria Ben and Tzadok, Michal and Wong-Kisiel, Lily and Marjanovic, Dragan and Rubboli, Guido and Sisodiya, Sanjay M. and Lutz, Florian and Ashraf, Harshad Pannikkaveettil and Torge, Kirsten and Yan, Pu and Bosselmann, Christian and Schwarz, Niklas and Fudali, Monika and Lerche, Holger},
journal = {Science Translational Medicine},
title = {4-{Aminopyridine} is a promising treatment option for patients with gain-of-function {KCNA2}-encephalopathy},
year = {2021},
month = sep,
number = {609},
pages = {eaaz4957},
volume = {13},
doi = {10.1126/scitranslmed.aaz4957},
file = {Full Text PDF:https\://www.science.org/doi/pdf/10.1126/scitranslmed.aaz4957:application/pdf},
publisher = {American Association for the Advancement of Science},
urldate = {2022-09-02},
}
@Article{Colasante2020,
author = {Colasante, Gaia and Lignani, Gabriele and Brusco, Simone and Di Berardino, Claudia and Carpenter, Jenna and Giannelli, Serena and Valassina, Nicholas and Bido, Simone and Ricci, Raffaele and Castoldi, Valerio and Marenna, Silvia and Church, Timothy and Massimino, Luca and Morabito, Giuseppe and Benfenati, Fabio and Schorge, Stephanie and Leocani, Letizia and Kullmann, Dimitri M. and Broccoli, Vania},
journal = {Molecular Therapy},
title = {{dCas9}-{Based} {Scn1a} {Gene} {Activation} {Restores} {Inhibitory} {Interneuron} {Excitability} and {Attenuates} {Seizures} in {Dravet} {Syndrome} {Mice}},
year = {2020},
issn = {1525-0016},
month = jan,
number = {1},
pages = {235--253},
volume = {28},
abstract = {Dravet syndrome (DS) is a severe epileptic encephalopathy caused mainly by heterozygous loss-of-function mutations of the SCN1A gene, indicating haploinsufficiency as the pathogenic mechanism. Here we tested whether catalytically dead Cas9 (dCas9)-mediated Scn1a gene activation can rescue Scn1a haploinsufficiency in a mouse DS model and restore physiological levels of its gene product, the Nav1.1 voltage-gated sodium channel. We screened single guide RNAs (sgRNAs) for their ability to stimulate Scn1a transcription in association with the dCas9 activation system. We identified a specific sgRNA that increases Scn1a gene expression levels in cell lines and primary neurons with high specificity. Nav1.1 protein levels were augmented, as was the ability of wild-type immature GABAergic interneurons to fire action potentials. A similar enhancement of Scn1a transcription was achieved in mature DS interneurons, rescuing their ability to fire. To test the therapeutic potential of this approach, we delivered the Scn1a-dCas9 activation system to DS pups using adeno-associated viruses. Parvalbumin interneurons recovered their firing ability, and febrile seizures were significantly attenuated. Our results pave the way for exploiting dCas9-based gene activation as an effective and targeted approach to DS and other disorders resulting from altered gene dosage.},
doi = {10.1016/j.ymthe.2019.08.018},
file = {:colasante_dcas9-based_2020 - DCas9 Based Scn1a Gene Activation Restores Inhibitory Interneuron Excitability and Attenuates Seizures in Dravet Syndrome Mice.html:URL},
keywords = {gene therapy, Dravet syndrome, epileptic encephalopathy, activatory CRISPR},
language = {en},
urldate = {2022-09-03},
}
@Article{Yu2006,
author = {Yu, Frank H. and Mantegazza, Massimo and Westenbroek, Ruth E. and Robbins, Carol A. and Kalume, Franck and Burton, Kimberly A. and Spain, William J. and McKnight, G. Stanley and Scheuer, Todd and Catterall, William A.},
journal = {Nature Neuroscience},
title = {Reduced sodium current in {GABAergic} interneurons in a mouse model of severe myoclonic epilepsy in infancy},
year = {2006},
issn = {1546-1726},
month = sep,
number = {9},
pages = {1142--1149},
volume = {9},
abstract = {Voltage-gated sodium channels (NaV) are critical for initiation of action potentials. Heterozygous loss-of-function mutations in NaV1.1 channels cause severe myoclonic epilepsy in infancy (SMEI). Homozygous null Scn1a/ mice developed ataxia and died on postnatal day (P) 15 but could be sustained to P17.5 with manual feeding. Heterozygous Scn1a+/ mice had spontaneous seizures and sporadic deaths beginning after P21, with a notable dependence on genetic background. Loss of NaV1.1 did not change voltage-dependent activation or inactivation of sodium channels in hippocampal neurons. The sodium current density was, however, substantially reduced in inhibitory interneurons of Scn1a+/ and Scn1a/ mice but not in their excitatory pyramidal neurons. An immunocytochemical survey also showed a specific upregulation of NaV1.3 channels in a subset of hippocampal interneurons. Our results indicate that reduced sodium currents in GABAergic inhibitory interneurons in Scn1a+/ heterozygotes may cause the hyperexcitability that leads to epilepsy in patients with SMEI.},
copyright = {2006 Nature Publishing Group},
doi = {10.1038/nn1754},
file = {:Yu2006 - Reduced Sodium Current in GABAergic Interneurons in a Mouse Model of Severe Myoclonic Epilepsy in Infancy.html:URL},
keywords = {Biomedicine, general, Neurosciences, Behavioral Sciences, Biological Techniques, Neurobiology, Animal Genetics and Genomics},
language = {en},
publisher = {Nature Publishing Group},
urldate = {2022-09-03},
}
@Comment{jabref-meta: databaseType:bibtex;}