From 275fb4062ab6f571500e227c3b85bc3a5508bab0 Mon Sep 17 00:00:00 2001 From: nkoch1 Date: Mon, 6 Mar 2023 14:22:34 -0500 Subject: [PATCH] changes from meeting 06.03.2023; changed cell-type to neuron-type throughout, K to Kd throughout (including Fig 3 and 4), added references --- .../Figures/AUC_correlation.pdf | Bin 61046 -> 61055 bytes .../Figures/AUC_correlation.py | 266 +++++++++---- .../Figures/rheobase_correlation.pdf | Bin 59113 -> 59121 bytes .../Figures/rheobase_correlation.py | 366 +++++++++--------- Frontiers_manuscript/Koch_frontiers.tex | 107 ++--- Frontiers_manuscript/g_table.tex | 2 +- Frontiers_manuscript/ref.bib | 87 +++++ 7 files changed, 509 insertions(+), 319 deletions(-) diff --git a/Frontiers_manuscript/Figures/AUC_correlation.pdf b/Frontiers_manuscript/Figures/AUC_correlation.pdf index 78af3e339bf103ed5aa5fb23eb7b7e8e0f24703c..8d0aed1016f0057aae1c80937dedce2e86dfae6b 100644 GIT binary patch delta 35634 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 ECthW;o&W#< delta 35695 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 q}_=EJ!6^M1iUzHpzq8Aao` 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 Qzc#N9u25aQdrwp0A1agl&j0`b diff --git a/Frontiers_manuscript/Figures/AUC_correlation.py b/Frontiers_manuscript/Figures/AUC_correlation.py index de09aa9..567e0ad 100644 --- a/Frontiers_manuscript/Figures/AUC_correlation.py +++ b/Frontiers_manuscript/Figures/AUC_correlation.py @@ -1,38 +1,48 @@ # -*- coding: utf-8 -*- """ -Created on Sat Jul 3 19:52:04 2021 +Script to plot AUC correlations - Figure 3 -@author: nils """ +__author__ = "Nils A. Koch" +__copyright__ = "Copyright 2022, Nils A. Koch" +__license__ = "MIT" + import pandas as pd import numpy as np +from numpy import ndarray import string import textwrap import json +import seaborn as sns import matplotlib +import matplotlib.pyplot as plt import matplotlib.lines as mlines +import matplotlib.transforms +import matplotlib.path +import matplotlib.colors from matplotlib import ticker from matplotlib.ticker import NullFormatter -from Figures.plotstyle import boxplot_style +from matplotlib.axes._axes import Axes +from matplotlib.markers import MarkerStyle +from matplotlib.collections import LineCollection +from Figures.plotstyle import corr_style + def cm2inch(*tupl): + ''' + convert cm to inch for plots size tuple + ''' inch = 2.54 if isinstance(tupl[0], tuple): return tuple(i/inch for i in tupl[0]) else: return tuple(i/inch for i in tupl) -#%% ##################### From https://stackoverflow.com/questions/52878845/swarmplot-with-hue-affecting-marker-beyond-color ## -# to change marker types in seaborn swarmplot - -import seaborn as sns -import matplotlib.pyplot as plt - -############## Begin hack ############## -from matplotlib.axes._axes import Axes -from matplotlib.markers import MarkerStyle -from numpy import ndarray +#%% Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license def GetColor2Marker(markers): + ''' + Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license + ''' colorslist = ['#40A787', # cyan'# '#F0D730', # yellow '#C02717', # red @@ -52,6 +62,9 @@ def GetColor2Marker(markers): return dict(zip(mkcolors,markers)) def fixlegend(ax,markers,markersize=3,**kwargs): + ''' + Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license + ''' # Fix Legend legtitle = ax.get_legend().get_title().get_text() _,l = ax.get_legend_handles_labels() @@ -79,6 +92,9 @@ def fixlegend(ax,markers,markersize=3,**kwargs): old_scatter = Axes.scatter def new_scatter(self, *args, **kwargs): + ''' + Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license + ''' colors = kwargs.get("c", None) co2mk = kwargs.pop("co2mk",None) FinalCollection = old_scatter(self, *args, **kwargs) @@ -92,16 +108,32 @@ def new_scatter(self, *args, **kwargs): FinalCollection.set_paths(paths) return FinalCollection 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 + ''' + add color gradient to axis + Parameters + ---------- + ax : matplotlib axis + axis to apply gradient to + start : tuple + start coordinates on axis + end : tuple + end coordinates on axis + cmap : colormap + colormap for gradient + n : int + number of segments in gradient + lw : float + width of axis line + + + Returns + ------- + ax : matplotlib axis + updated axis with gradient + ''' 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) @@ -110,15 +142,26 @@ def gradientaxis(ax, start, end, cmap, n=100,lw=1): 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): + +def corr_with_markers(ax,max_width, alteration='shift', msize=3): + ''' + Plot Model Correlation as markers + + Parameters + ---------- + ax : matplotlib axis + axis to plot on + max_width : + maximum width of label text + alteration : string + 'shift', 'slope' or 'g' + msize : float + marker size + ''' hlinewidth = 0.5 - model_names = ['RS pyramidal','RS inhibitory','FS', - 'RS pyramidal +$K_V1.1$','RS inhibitory +$K_V1.1$', - 'FS +$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$'] + model_names = ['RS pyramidal','RS inhibitory','FS', 'RS pyramidal +$K_V1.1$','RS inhibitory +$K_V1.1$', + 'FS +$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$'] colorslist = ['#007030', # dark green '#F0D730', # yellow @@ -135,11 +178,12 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=3): ] - import matplotlib.colors colors = [matplotlib.colors.to_rgb(c) for c in colorslist] clr_dict = {} for m in range(len(model_names)): clr_dict[model_names[m]] = colors[m] + print(colors) + print(clr_dict) Markers = ["o", "o", "o", "^", "^", "^", "D", "D", "D", "s", "s", "s"] if alteration=='shift': i = 2 # Kd act @@ -155,7 +199,7 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=3): ax.plot([lim[0], lim[1]], [1, 1], ':k',linewidth=hlinewidth) ax.plot([lim[0], lim[1]], [-1, -1], ':k',linewidth=hlinewidth) ax.set_title("Shift ($\Delta V_{1/2}$)", y=1.05) - ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'K \nactivation', '$K_V1.1$ \nactivation', + ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'Kd \nactivation', '$K_V1.1$ \nactivation', '$K_V1.1$ \ninactivation', 'A \nactivation', 'A \ninactivation']) elif alteration=='slope': i = 3 # Kv1.1 act @@ -173,7 +217,7 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=3): ax.plot([lim[0], lim[1]], [1, 1], ':k',linewidth=hlinewidth) ax.plot([lim[0], lim[1]], [-1, -1], ':k',linewidth=hlinewidth) ax.set_title("Slope (k)", y=1.05) - ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'K \nactivation', '$K_V1.1$ \nactivation', + ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'Kd \nactivation', '$K_V1.1$ \nactivation', '$K_V1.1$ \ninactivation', 'A \nactivation', 'A \ninactivation']) elif alteration=='g': i = 1 # Kd @@ -192,7 +236,8 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=3): ax.plot([lim[0], lim[1]], [-1, -1], ':k',linewidth=hlinewidth) # Tweak the visual presentation ax.set_title("Conductance (g)", y=1.05) - ax.set_xticklabels(textwrap.fill(x.get_text(), max_width) for x in ax.get_xticklabels()) + # ax.set_xticklabels(textwrap.fill(x.get_text(), max_width) for x in ax.get_xticklabels()) + ax.set_xticklabels(['Na', 'Kd', '$K_V1.1$', 'A', 'Leak']) else: print('Please chose "shift", "slope" or "g"') ax.get_legend().remove() @@ -202,19 +247,34 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=3): def model_legend(ax, marker_s_leg, pos, ncol): - colorslist = [ '#40A787', # cyan'# - '#F0D730', # yellow - '#C02717', # red - '#007030', # dark green - '#AAB71B', # lightgreen - '#008797', # light blue - '#F78017', # orange - '#478010', # green - '#53379B', # purple - '#2060A7', # blue - '#873770', # magenta - '#D03050' # pink - ] + ''' + plot model legend on axis + Parameters + ---------- + ax : matplotlib axis + axis to plot legend on + marker_s_leg : int + marker size in legend + pos : tuple + position in axis + ncol : int + number of columns in legend + + ''' + colorslist = ['#007030', # dark green + '#F0D730', # yellow + '#C02717', # red + '#478010', # green + '#AAB71B', # lightgreen + '#F78017', # orange + '#40A787', # cyan'# + '#008797', # light blue + '#2060A7', # blue + '#D03050', # pink + '#53379B', # purple + '#873770', # magenta + ] + import matplotlib.colors colors = [matplotlib.colors.to_rgb(c) for c in colorslist] model_pos = {'Cb stellate':0, 'RS Inhibitory':1, 'FS':2, 'RS Pyramidal':3, @@ -224,38 +284,44 @@ def model_legend(ax, marker_s_leg, pos, ncol): 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':9, 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':10, 'STN':11} Markers = ["o", "o", "o", "^", "^", "^", "D", "D", "D", "s", "s", "s"] - RS_p = mlines.Line2D([], [], color=colors[model_pos['RS Pyramidal']], marker=Markers[model_pos['RS Pyramidal']], markersize=marker_s_leg, linestyle='None', - label='RS pyramidal') - RS_i = mlines.Line2D([], [], color=colors[model_pos['RS Inhibitory']], marker=Markers[model_pos['RS Inhibitory']], markersize=marker_s_leg, linestyle='None', - label='RS inhibitory') - FS = mlines.Line2D([], [], color=colors[model_pos['FS']], marker=Markers[model_pos['FS']], markersize=marker_s_leg, linestyle='None', label='FS') - RS_p_Kv = mlines.Line2D([], [], color=colors[model_pos['RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - RS_i_Kv = mlines.Line2D([], [], color=colors[model_pos['RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - FS_Kv = mlines.Line2D([], [], color=colors[model_pos['Cb stellate']], marker=Markers[model_pos['Cb stellate']], markersize=marker_s_leg, linestyle='None', label='FS +$K_V1.1$') - Cb = mlines.Line2D([], [], color=colors[8], marker=Markers[8], markersize=marker_s_leg, linestyle='None', - label='Cb stellate') - Cb_pl = mlines.Line2D([], [], color=colors[model_pos['Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - Cb_sw = mlines.Line2D([], [], color=colors[model_pos['Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - STN = mlines.Line2D([], [], color=colors[model_pos['STN']], marker=Markers[model_pos['STN']], markersize=marker_s_leg, linestyle='None', label='STN') - STN_pl = mlines.Line2D([], [], color=colors[model_pos['STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - STN_sw = mlines.Line2D([], [], color=colors[model_pos['STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - ax.legend(handles=[RS_p, RS_i, FS, RS_p_Kv, RS_i_Kv, FS_Kv, Cb, Cb_pl, Cb_sw, STN, STN_pl, STN_sw], loc='center', - bbox_to_anchor=pos, ncol=ncol, frameon=False) - -def plot_AUC_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration='shift'): + + RS_p = mlines.Line2D([], [], color='#007030', marker="^", markersize=marker_s_leg, linestyle='None', label='Model D') + RS_i = mlines.Line2D([], [], color='#F0D730', marker="o", markersize=marker_s_leg, linestyle='None', label='Model B') + FS = mlines.Line2D([], [], color='#C02717', marker="o", markersize=marker_s_leg, linestyle='None', label='Model C') + RS_p_Kv = mlines.Line2D([], [], color='#478010', marker="D", markersize=marker_s_leg, linestyle='None', label='Model H') + RS_i_Kv = mlines.Line2D([], [], color='#AAB71B', marker="^", markersize=marker_s_leg, linestyle='None', label='Model E') + FS_Kv = mlines.Line2D([], [], color='#F78017', marker="D", markersize=marker_s_leg, linestyle='None', label='Model G') + Cb = mlines.Line2D([], [], color='#40A787', marker="o", markersize=marker_s_leg, linestyle='None', label='Model A') + Cb_pl = mlines.Line2D([], [], color='#008797', marker="^", markersize=marker_s_leg, linestyle='None', label='Model F') + Cb_sw = mlines.Line2D([], [], color='#2060A7', marker="s", markersize=marker_s_leg, linestyle='None', label='Model J') + STN = mlines.Line2D([], [], color='#D03050', marker="s", markersize=marker_s_leg, linestyle='None', label='Model L') + STN_pl = mlines.Line2D([], [], color='#53379B', marker="D", markersize=marker_s_leg, linestyle='None', label='Model I') + STN_sw = mlines.Line2D([], [], color='#873770', marker="s", markersize=marker_s_leg, linestyle='None', label='Model K') + ax.legend(handles=[Cb, RS_i, FS, RS_p, RS_i_Kv, Cb_pl, FS_Kv, RS_p_Kv, STN_pl, Cb_sw, STN_sw, STN], loc='center', + bbox_to_anchor=pos, ncol=ncol, frameon=False) + +def plot_AUC_alt(ax, model='FS', alteration='shift'): + ''' + plot the AUC across an alteration for all models with one emphasized + Parameters + ---------- + ax : matplotlib axis + axis to plot on + model : string + model to emphasize with thicker line + alteration : string + 'shift', 'slope' or 'g' + + Returns + ------- + ax : matplotlib axis + updated axis with plot data + ''' ax.spines["right"].set_visible(False) ax.spines["top"].set_visible(False) - model_names = ['RS Pyramidal','RS Inhibitory','FS', - 'RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$', - 'FS +$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$'] + model_names = ['RS Pyramidal','RS Inhibitory','FS', 'RS Pyramidal +$K_V1.1$','RS Inhibitory +$K_V1.1$', + 'FS +$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$'] model_name_dict = {'RS Pyramidal': 'RS Pyramidal', 'RS Inhibitory': 'RS Inhibitory', @@ -337,6 +403,29 @@ def plot_AUC_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration=' return ax def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color2='dodgerblue'): + ''' + plot fI curves for a model across an alteration in current parameters + Parameters + ---------- + ax : matplotlib axis + axis to plot on + model : string + model to plot + type : string + type of alteration: 'shift', 'slope', or 'g' + alt : string + model parameter that is altered + color1 : string + color at start of gradient + color2 : string + color at end of gradient + + Returns + ------- + ax : matplotlib axis + updated axis with plot data + + ''' model_save_name = {'RS Pyramidal': 'RS_pyr_posp', 'RS Inhibitory': 'RS_inhib_posp', 'FS': 'FS_posp', @@ -366,7 +455,12 @@ def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color c += 1 ax.set_ylabel('Frequency [Hz]') ax.set_xlabel('Current [nA]') - ax.set_title(model, x=0.2, y=1.0) + if model == 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': + ax.set_title("Model G", x=0.2, y=1.0) + elif model == 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': + ax.set_title("Model I", x=0.2, y=1.0) + else: + ax.set_title("", x=0.2, y=1.0) ax.spines["right"].set_visible(False) ax.spines["top"].set_visible(False) L = ax.get_ylim() @@ -375,7 +469,7 @@ def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color #%% -boxplot_style() +corr_style() color_dict = {'Cb stellate': '#40A787', # cyan'# 'RS Inhibitory': '#F0D730', # yellow 'FS': '#C02717', # red @@ -443,19 +537,19 @@ rec = ax2_fI.add_patch(rec) rec.set_clip_on(False) # plot boxplots -boxplot_with_markers(ax0,max_width, alteration='shift') -boxplot_with_markers(ax1,max_width, alteration='slope') -boxplot_with_markers(ax2,max_width, alteration='g') +corr_with_markers(ax0,max_width, alteration='shift') +corr_with_markers(ax1,max_width, alteration='slope') +corr_with_markers(ax2,max_width, alteration='g') # plot legend pos = (0.225, -0.9) -ncol = 5 +ncol = 6 model_legend(ax2, marker_s_leg, pos, ncol) # plot examples -plot_AUC_alt(ax0_ex,model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', color1='lightgrey', color2='k', alteration='shift') -plot_AUC_alt(ax1_ex,model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', color1='lightgrey', color2='k',alteration='slope') -plot_AUC_alt(ax2_ex, model='STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', color1='lightgrey', color2='k', alteration='g') +plot_AUC_alt(ax0_ex,model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', alteration='shift') +plot_AUC_alt(ax1_ex,model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', alteration='slope') +plot_AUC_alt(ax2_ex, model='STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', alteration='g') # label subplots with letters ax0_fI.text(-0.875, 1.35, string.ascii_uppercase[0], transform=ax0_fI.transAxes, size=10, weight='bold') @@ -472,6 +566,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.pdf', dpi=fig.dpi) #pdf #eps -# fig.savefig('./Figures/AUC_correlation.png', dpi=fig.dpi) #pdf #eps +fig.savefig('./Figures/AUC_correlation.pdf', dpi=fig.dpi) +# fig.savefig('./Figures/AUC_correlation.png', dpi=fig.dpi) #png plt.show() diff --git a/Frontiers_manuscript/Figures/rheobase_correlation.pdf b/Frontiers_manuscript/Figures/rheobase_correlation.pdf index 173de7e96f44a3ab4281193d6c9591ac2550e68b..8030615a43c470cb249d7b26b39bac577e7ee99c 100644 GIT binary patch delta 32393 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 Z2q=sPDiEEvB7?=tkNxP8wBj@D{{t*1+>-zR diff --git a/Frontiers_manuscript/Figures/rheobase_correlation.py b/Frontiers_manuscript/Figures/rheobase_correlation.py index 0f69e6d..9b9f97f 100644 --- a/Frontiers_manuscript/Figures/rheobase_correlation.py +++ b/Frontiers_manuscript/Figures/rheobase_correlation.py @@ -1,22 +1,37 @@ # -*- coding: utf-8 -*- """ -Created on Sat Jul 3 19:52:04 2021 +Script to plot rheobase correlations - Figure 4 -@author: nils """ +__author__ = "Nils A. Koch" +__copyright__ = "Copyright 2022, Nils A. Koch" +__license__ = "MIT" + import pandas as pd import numpy as np +from numpy import ndarray import string import textwrap import json +import seaborn as sns import matplotlib +import matplotlib.pyplot as plt import matplotlib.lines as mlines +import matplotlib.transforms +import matplotlib.path +import matplotlib.colors from matplotlib import ticker from matplotlib.ticker import NullFormatter -from Figures.plotstyle import boxplot_style +from matplotlib.axes._axes import Axes +from matplotlib.markers import MarkerStyle +from matplotlib.collections import LineCollection +from Figures.plotstyle import corr_style def cm2inch(*tupl): + ''' + convert cm to inch for plots size tuple + ''' inch = 2.54 if isinstance(tupl[0], tuple): return tuple(i/inch for i in tupl[0]) @@ -24,16 +39,10 @@ def cm2inch(*tupl): return tuple(i/inch for i in tupl) #%% ##################### From https://stackoverflow.com/questions/52878845/swarmplot-with-hue-affecting-marker-beyond-color ## # to change marker types in seaborn swarmplot - -import seaborn as sns -import matplotlib.pyplot as plt - -############## Begin hack ############## -from matplotlib.axes._axes import Axes -from matplotlib.markers import MarkerStyle -from numpy import ndarray - def GetColor2Marker(markers): + ''' + Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license + ''' colorslist = ['#40A787', # cyan'# '#F0D730', # yellow '#C02717', # red @@ -53,6 +62,9 @@ def GetColor2Marker(markers): return dict(zip(mkcolors,markers)) def fixlegend(ax,markers,markersize=3,**kwargs): + ''' + Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license + ''' # Fix Legend legtitle = ax.get_legend().get_title().get_text() _,l = ax.get_legend_handles_labels() @@ -80,6 +92,9 @@ def fixlegend(ax,markers,markersize=3,**kwargs): old_scatter = Axes.scatter def new_scatter(self, *args, **kwargs): + ''' + Modified from https://stackoverflow.com/a/52935294 (ImportanceOfBeingErnest and Miguel) under CC BY-SA 4.0 license + ''' colors = kwargs.get("c", None) co2mk = kwargs.pop("co2mk",None) FinalCollection = old_scatter(self, *args, **kwargs) @@ -93,33 +108,32 @@ def new_scatter(self, *args, **kwargs): FinalCollection.set_paths(paths) return FinalCollection 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): + ''' + add color gradient to axis + Parameters + ---------- + ax : matplotlib axis + axis to apply gradient to + start : tuple + start coordinates on axis + end : tuple + end coordinates on axis + cmap : colormap + colormap for gradient + n : int + number of segments in gradient + lw : float + width of axis line + + + Returns + ------- + ax : matplotlib axis + updated axis with gradient + ''' # Arrow shaft: LineCollection x = np.linspace(start[0],end[0],n) y = np.linspace(start[1],end[1],n) @@ -129,8 +143,22 @@ def gradientaxis(ax, start, end, cmap, n=100,lw=1): 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): + +def corr_with_markers(ax,max_width, alteration='shift', msize=2.2): + ''' + Plot Model Correlation as markers + + Parameters + ---------- + ax : matplotlib axis + axis to plot on + max_width : + maximum width of label text + alteration : string + 'shift', 'slope' or 'g' + msize : float + marker size + ''' hlinewidth = 0.5 model_names = ['RS pyramidal','RS inhibitory','FS', 'RS pyramidal +$K_V1.1$','RS inhibitory +$K_V1.1$', @@ -157,8 +185,6 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=2.2): clr_dict = {} for m in range(len(model_names)): clr_dict[model_names[m]] = colors[m] - print(colors) - print(clr_dict) Markers = ["o", "o", "o", "^", "^", "^", "D", "D", "D", "s", "s", "s"] if alteration=='shift': i = 3 # Kv1.1 act @@ -174,7 +200,7 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=2.2): ax.plot([lim[0], lim[1]], [1, 1], ':k',linewidth=hlinewidth) ax.plot([lim[0], lim[1]], [-1, -1], ':k',linewidth=hlinewidth) ax.set_title("Shift ($\Delta V_{1/2}$)", y=1.05) - ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'K \nactivation', '$K_V1.1$ \nactivation', + ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'Kd \nactivation', '$K_V1.1$ \nactivation', '$K_V1.1$ \ninactivation', 'A \nactivation', 'A \ninactivation']) elif alteration=='slope': i = 4 # Kv1.1 inact @@ -192,7 +218,7 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=2.2): ax.plot([lim[0], lim[1]], [1, 1], ':k',linewidth=hlinewidth) ax.plot([lim[0], lim[1]], [-1, -1], ':k',linewidth=hlinewidth) ax.set_title("Slope (k)", y=1.05) - ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'K \nactivation', '$K_V1.1$ \nactivation', + ax.set_xticklabels(['Na \nactivation', 'Na \ninactivation', 'Kd \nactivation', '$K_V1.1$ \nactivation', '$K_V1.1$ \ninactivation', 'A \nactivation', 'A \ninactivation']) elif alteration=='g': i = 4 # Leak @@ -209,7 +235,8 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=2.2): ax.plot([lim[0], lim[1]], [1, 1], ':k',linewidth=hlinewidth) ax.plot([lim[0], lim[1]], [-1, -1], ':k',linewidth=hlinewidth) ax.set_title("Conductance (g)", y=1.05) - ax.set_xticklabels(textwrap.fill(x.get_text(), max_width) for x in ax.get_xticklabels()) + # ax.set_xticklabels(textwrap.fill(x.get_text(), max_width) for x in ax.get_xticklabels()) + ax.set_xticklabels(['Na', 'Kd', '$K_V1.1$', 'A', 'Leak']) else: print('Please chose "shift", "slope" or "g"') ax.get_legend().remove() @@ -219,78 +246,88 @@ def boxplot_with_markers(ax,max_width, alteration='shift', msize=2.2): def model_legend(ax, marker_s_leg, pos, ncol): - # colorslist = [ '#40A787', # cyan'# - # '#F0D730', # yellow - # '#C02717', # red - # '#007030', # dark green - # '#AAB71B', # lightgreen - # '#008797', # light blue - # '#F78017', # orange - # '#478010', # green - # '#53379B', # purple - # '#2060A7', # blue - # '#873770', # magenta - # '#D03050' # pink - # ] - # import matplotlib.colors - # colors = [matplotlib.colors.to_rgb(c) for c in colorslist] - model_pos = {'Cb stellate':0, 'RS Inhibitory':1, 'FS':2, 'RS Pyramidal':3, - 'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':4, - 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':5, 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':6, - 'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':7, 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':8, - 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':9, - 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':10, 'STN':11} - - # model_pos = {'Cb stellate': 0, 'RS Inhibitory': 1, 'FS': 2, 'RS Pyramidal': 3, - # 'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 4, - # 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 5, - # 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 6, - # 'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 7, - # 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 8, - # 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 9, - # 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': 10, 'STN': 11} - colorslist = ['#007030', # dark green - '#F0D730', # yellow - '#C02717', # red - '#478010', # green - '#AAB71B', # lightgreen - '#F78017', # orange - '#40A787', # cyan'# - '#008797', # light blue - '#2060A7', # blue - '#D03050', # pink - '#53379B', # purple - '#873770', # magenta - ] + ''' + plot model legend on axis + Parameters + ---------- + ax : matplotlib axis + axis to plot legend on + marker_s_leg : int + marker size in legend + pos : tuple + position in axis + ncol : int + number of columns in legend + + ''' + colorslist = [ '#40A787', # cyan'# + '#F0D730', # yellow + '#C02717', # red + '#007030', # dark green + '#AAB71B', # lightgreen + '#008797', # light blue + '#F78017', # orange + '#478010', # green + '#53379B', # purple + '#2060A7', # blue + '#873770', # magenta + '#D03050' # pink + ] + model_names = ['RS pyramidal', 'RS inhibitory', 'FS', + 'RS pyramidal +$K_V1.1$', 'RS inhibitory +$K_V1.1$', + 'FS +$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$'] + + + import matplotlib.colors + colors = [matplotlib.colors.to_rgb(c) for c in colorslist] + clr_dict = {} + for m in range(len(model_names)): + clr_dict[model_names[m]] = colors[m] import matplotlib.colors colors = [matplotlib.colors.to_rgb(c) for c in colorslist] Markers = ["o", "o", "o", "^", "^", "^", "D", "D", "D", "s", "s", "s"] - RS_p = mlines.Line2D([], [], color=colors[model_pos['RS Pyramidal']], marker=Markers[model_pos['RS Pyramidal']], markersize=marker_s_leg, linestyle='None', - label='RS pyramidal') - RS_i = mlines.Line2D([], [], color=colors[model_pos['RS Inhibitory']], marker=Markers[model_pos['RS Inhibitory']], markersize=marker_s_leg, linestyle='None', - label='RS inhibitory') - FS = mlines.Line2D([], [], color=colors[model_pos['FS']], marker=Markers[model_pos['FS']], markersize=marker_s_leg, linestyle='None', label='FS') - RS_p_Kv = mlines.Line2D([], [], color=colors[model_pos['RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - RS_i_Kv = mlines.Line2D([], [], color=colors[model_pos['RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - FS_Kv = mlines.Line2D([], [], color=colors[model_pos['Cb stellate']], marker=Markers[model_pos['Cb stellate']], markersize=marker_s_leg, linestyle='None', label='FS +$K_V1.1$') - Cb = mlines.Line2D([], [], color=colors[8], marker=Markers[8], markersize=marker_s_leg, linestyle='None', - label='Cb stellate') - Cb_pl = mlines.Line2D([], [], color=colors[model_pos['Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - Cb_sw = mlines.Line2D([], [], color=colors[model_pos['Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - STN = mlines.Line2D([], [], color=colors[model_pos['STN']], marker=Markers[model_pos['STN']], markersize=marker_s_leg, linestyle='None', label='STN') - STN_pl = mlines.Line2D([], [], color=colors[model_pos['STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - STN_sw = mlines.Line2D([], [], color=colors[model_pos['STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], marker=Markers[model_pos['STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$']], markersize=marker_s_leg, linestyle='None', - label='STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$') - ax.legend(handles=[RS_p, RS_i, FS, RS_p_Kv, RS_i_Kv, FS_Kv, Cb, Cb_pl, Cb_sw, STN, STN_pl, STN_sw], loc='center', + + model_pos = {'RS Pyramidal':0, 'RS Inhibitory':1, 'FS':2, + 'RS Pyramidal +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':3, 'RS Inhibitory +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':4, + 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':5, 'Cb stellate':6, 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':7, + 'Cb stellate $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':8, 'STN':9, 'STN +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':10, + 'STN $\Delta$$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$':11} + + RS_p = mlines.Line2D([], [], color='#007030', marker="^", markersize=marker_s_leg, linestyle='None', label='Model D') + RS_i = mlines.Line2D([], [], color='#F0D730', marker="o", markersize=marker_s_leg, linestyle='None', label='Model B') + FS = mlines.Line2D([], [], color='#C02717', marker="o", markersize=marker_s_leg, linestyle='None', label='Model C') + RS_p_Kv = mlines.Line2D([], [], color='#478010', marker="D", markersize=marker_s_leg, linestyle='None', label='Model H') + RS_i_Kv = mlines.Line2D([], [], color='#AAB71B', marker="^", markersize=marker_s_leg, linestyle='None', label='Model E') + FS_Kv = mlines.Line2D([], [], color='#F78017', marker="D", markersize=marker_s_leg, linestyle='None', label='Model G') + Cb = mlines.Line2D([], [], color='#40A787', marker="o", markersize=marker_s_leg, linestyle='None', label='Model A') + Cb_pl = mlines.Line2D([], [], color='#008797', marker="^", markersize=marker_s_leg, linestyle='None', label='Model F') + Cb_sw = mlines.Line2D([], [], color='#2060A7', marker="s", markersize=marker_s_leg, linestyle='None', label='Model J') + STN = mlines.Line2D([], [], color='#D03050', marker="s", markersize=marker_s_leg, linestyle='None', label='Model L') + STN_pl = mlines.Line2D([], [], color='#53379B', marker="D", markersize=marker_s_leg, linestyle='None', label='Model I') + STN_sw = mlines.Line2D([], [], color='#873770', marker="s", markersize=marker_s_leg, linestyle='None', label='Model K') + ax.legend(handles=[Cb, RS_i, FS, RS_p, RS_i_Kv, Cb_pl, FS_Kv, RS_p_Kv, STN_pl, Cb_sw, STN_sw, STN], loc='center', bbox_to_anchor=pos, ncol=ncol, frameon=False) -def plot_rheo_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration='shift'): +def plot_rheo_alt(ax, model='FS', alteration='shift'): + ''' + plot the rheobase across an alteration for all models with one emphasized + Parameters + ---------- + ax : matplotlib axis + axis to plot on + model : string + model to emphasize with thicker line + alteration : string + 'shift', 'slope' or 'g' + + Returns + ------- + ax : matplotlib axis + updated axis with plot data + ''' ax.spines["right"].set_visible(False) ax.spines["top"].set_visible(False) model_names = ['RS Pyramidal','RS Inhibitory','FS', @@ -373,15 +410,32 @@ def plot_rheo_alt(ax, model='FS', color1='red', color2='dodgerblue', alteration= end = (xend, ystart*1.0) ax = gradientaxis(ax, start, end, cmap, n=200,lw=4) 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'): + ''' + plot fI curves for a model across an alteration in current parameters + Parameters + ---------- + ax : matplotlib axis + axis to plot on + model : string + model to plot + type : string + type of alteration: 'shift', 'slope', or 'g' + alt : string + model parameter that is altered + color1 : string + color at start of gradient + color2 : string + color at end of gradient + + Returns + ------- + ax : matplotlib axis + updated axis with plot data + + ''' model_save_name = {'RS Pyramidal': 'RS_pyr_posp', 'RS Inhibitory': 'RS_inhib_posp', 'FS': 'FS_posp', @@ -409,30 +463,16 @@ 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) + if model == 'FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': + ax.set_title("Model G", x=0.2, y=1.0) + elif model == 'Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$': + ax.set_title("Model F", x=0.2, y=1.0) + elif model == 'Cb stellate': + ax.set_title("Model A", x=0.2, y=1.0) + else: + ax.set_title("", x=0.2, y=1.0) ax.spines["right"].set_visible(False) ax.spines["top"].set_visible(False) L = ax.get_ylim() @@ -441,7 +481,7 @@ def plot_fI(ax, model='RS Pyramidal', type='shift', alt='m', color1='red', color #%% -boxplot_style() +corr_style() color_dict = {'Cb stellate': '#40A787', # cyan'# 'RS Inhibitory': '#F0D730', # yellow 'FS': '#C02717', # red @@ -495,19 +535,19 @@ rec.set_clip_on(False) # plot boxplots -boxplot_with_markers(ax0,max_width, alteration='shift') -boxplot_with_markers(ax1,max_width, alteration='slope') -boxplot_with_markers(ax2,max_width, alteration='g') +corr_with_markers(ax0,max_width, alteration='shift') +corr_with_markers(ax1,max_width, alteration='slope') +corr_with_markers(ax2,max_width, alteration='g') # plot legend pos = (0.225, -0.9) -ncol = 5 +ncol = 6 model_legend(ax2, marker_s_leg, pos, ncol) # plot rheo across model for example alteration -plot_rheo_alt(ax0_ex,model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', color1='lightgrey', color2='k', alteration='shift') -plot_rheo_alt(ax1_ex,model='Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', color1='lightgrey', color2='k',alteration='slope') -plot_rheo_alt(ax2_ex, model='Cb stellate', color1='lightgrey', color2='k', alteration='g') +plot_rheo_alt(ax0_ex,model='FS +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', alteration='shift') +plot_rheo_alt(ax1_ex,model='Cb stellate +$\mathrm{K}_{\mathrm{V}}\mathrm{1.1}$', alteration='slope') +plot_rheo_alt(ax2_ex, model='Cb stellate', alteration='g') # label subplots with letters ax0_fI.text(-0.875, 1.35, string.ascii_uppercase[0], transform=ax0_fI.transAxes, size=10, weight='bold') @@ -525,40 +565,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/rheobase_correlation.pdf', dpi=fig.dpi) -# fig.savefig('./Figures/rheobase_correlation.png', dpi=fig.dpi) #bbox_inches='tight', dpi=fig.dpi # eps # pdf +# fig.savefig('./Figures/rheobase_correlation.png', dpi=fig.dpi) 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() diff --git a/Frontiers_manuscript/Koch_frontiers.tex b/Frontiers_manuscript/Koch_frontiers.tex index 6ba8ab7..18d4980 100644 --- a/Frontiers_manuscript/Koch_frontiers.tex +++ b/Frontiers_manuscript/Koch_frontiers.tex @@ -59,11 +59,11 @@ \def\Authors{Nils A. Koch\,$^{1,2}$, Lukas Sonnenberg\,$^{1,2}$, Ulrike B.S. Hedrich\,$^{3}$, Stephan Lauxmann\,$^{1,3}$ and Jan Benda\,$^{1,2,*}$} % Affiliations should be keyed to the author's name with superscript numbers and be listed as follows: Laboratory, Institute, Department, Organization, City, State abbreviation (USA, Canada, Australia), and Country (without detailed address information such as city zip codes or street names). % If one of the authors has a change of address, list the new address below the correspondence details using a superscript symbol and use the same symbol to indicate the author in the author list. -\def\Address{$^{1}$Laboratory X, Institute X, Department X, Organization X, City X , State XX (only USA, Canada and Australia), Country X \\ -$^{2}$Laboratory X, Institute X, Department X, Organization X, City X , State XX (only USA, Canada and Australia), Country X } -\def\Address{$^{1}$Institute for Neurobiology, University of Tuebingen, 72072 Tuebingen, Germany \\ -$^{2}$Bernstein Center for Computational Neuroscience Tuebingen, 72076 Tuebingen, Germany \\ -$^{3}$Department of Neurology and Epileptology, Hertie Institute for Clinical Brain Research, University of Tuebingen, 72076 Tuebingen, Germany} +%\def\Address{$^{1}$Laboratory X, Institute X, Department X, Organization X, City X , State XX (only USA, Canada and Australia), Country X \\ +%$^{2}$Laboratory X, Institute X, Department X, Organization X, City X , State XX (only USA, Canada and Australia), Country X } +\def\Address{$^{1}$Institute for Neurobiology, University of T{\"u}bingen, 72072 T{\"u}bingen, Germany \\ +$^{2}$Bernstein Center for Computational Neuroscience T{\"u}bingen, 72076 T{\"u}bingen, Germany \\ +$^{3}$Department of Neurology and Epileptology, Hertie Institute for Clinical Brain Research, University of T{\"u}bingen, 72076 T{\"u}bingen, Germany} % The Corresponding Author should be marked with an asterisk % Provide the exact contact address (this time including street name and city zip code) and email of the corresponding author @@ -77,7 +77,7 @@ $^{3}$Department of Neurology and Epileptology, Hertie Institute for Clinical Br \onecolumn \firstpage{1} -\title {Loss or Gain of Function? Effects of Ion Channel Mutations on Neuronal Firing Depend on the Cell Type} +\title {Loss or Gain of Function? Effects of Ion Channel Mutations on Neuronal Firing Depend on the Neuron Type} \author[\firstAuthorLast ]{\Authors} %This field will be automatically populated \address{} %This field will be automatically populated @@ -97,7 +97,8 @@ $^{3}$Department of Neurology and Epileptology, Hertie Institute for Clinical Br %For full guidelines regarding your manuscript please refer to \href{https://www.frontiersin.org/guidelines/author-guidelines}{Author Guidelines}. % %As a primary goal, the abstract should render the general significance and conceptual advance of the work clearly accessible to a broad readership. References should not be cited in the abstract. Leave the Abstract empty if your article does not require one, please see the Article Types on every Frontiers journal page for full details -Clinically relevant mutations to voltage-gated ion channels, called channelopathies, alter ion channel function, properties of ionic current and neuronal firing. The effects of ion channel mutations are routinely assessed and characterized as loss of function (LOF) or gain of function (GOF) at the level of ionic currents. Emerging personalized medicine approaches based on LOF/GOF characterization have limited therapeutic success. Potential reasons are that the translation from this binary characterization to neuronal firing especially when considering different neuronal cell types is currently not well understood. Here we investigate the impact of neuronal cell type on the firing outcome of ion channel mutations with simulations of a diverse collection of neuron models. We systematically analyzed the effects of changes in ion current properties on firing in different neuronal types. Additionally, we simulated the effects of mutations in the \textit{KCNA1} gene encoding the \Kv potassium channel subtype associated with episodic ataxia type~1 (EA1). These simulations revealed that the outcome of a given change in ion channel properties on neuronal excitability is cell-type dependent. As a result, cell-type specific effects are vital to a full understanding of the effects of channelopathies on neuronal excitability and present an opportunity to further the efficacy and precision of personalized medicine approaches. +Clinically relevant mutations to voltage-gated ion channels, called channelopathies, alter ion channel function, properties of ionic current and neuronal firing. The effects of ion channel mutations are routinely assessed and characterized as loss of function (LOF) or gain of function (GOF) at the level of ionic currents. Emerging personalized medicine approaches based on LOF/GOF characterization have limited therapeutic success. Potential reasons are that the translation from this binary characterization to neuronal firing especially when considering different neuronal cell types is currently not well understood. Here we investigate the impact of neuronal cell type on the firing outcome of ion channel mutations with simulations of a diverse collection of neuron models. We systematically analyzed the effects of changes in ion current properties on firing in different neuronal types. Additionally, we simulated the effects of mutations in the \textit{KCNA1} gene encoding the \Kv potassium channel subtype associated with episodic ataxia type~1 (EA1). These simulations revealed that the outcome of a given change in ion channel properties on neuronal excitability is neuron-type dependent. Consequently, neuron-type specific effects are vital to a full understanding of the effects of channelopathies on neuronal excitability and are an important step towards improving the efficacy and precision of personalized medicine approaches. +% present an opportunity to further the efficacy and precision of personalized medicine approaches. @@ -112,11 +113,11 @@ Clinically relevant mutations to voltage-gated ion channels, called channelopat The properties and combinations of voltage-gated ion channels are vital in determining neuronal excitability \citep{bernard_channelopathies_2008, carbone_ion_2020, rutecki_neuronal_1992, pospischil_minimal_2008}. However, ion channel function can be disturbed, for instance through genetic alterations, resulting in altered neuronal firing behavior \citep{carbone_ion_2020}. In recent years, next generation sequencing has led to an increase in the discovery of clinically relevant ion channel mutations and has provided the basis for pathophysiological studies of genetic epilepsies, pain disorders, dyskinesias, intellectual disabilities, myotonias, and periodic paralyses \citep{bernard_channelopathies_2008, carbone_ion_2020}. Ongoing efforts of many research groups have contributed to the current understanding of underlying disease mechanism in channelopathies, however a complex pathophysiological landscape has emerged for many channelopathies and is likely a reason for limited therapeutic success with standard care. -Ion channel variants are frequently classified in heterologous expression systems as either a loss of function (LOF) or a gain of function (GOF) in the respective ionic current \citep{Musto2020, Kullmann2002, Waxman2011, Kim2021}. This LOF/GOF classification is often directly used to predict the effects on neuronal firing \citep{Niday2018, Wei2017, Wolff2017,Masnada2017}, which in turn is important for understanding the pathophysiology of these disorders and for identification of potential therapeutic targets \citep{Orsini2018, Yang2018, Colasante2020, Yu2006}. Experimentally, the effects of channelopathies on neuronal firing are assessed using primary neuronal cultures \citep{Scalmani2006, Smith2018, Liu2019} or \textit{in vitro} recordings from slices of transgenic mouse lines \citep{Mantegazza2019, Xie2010,Lory2020, Habib2015, Hedrich14874} but are restricted to limited number of neuronal types. 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. Expression level of an affected gene \citep{Layer2021} and relative amplitudes of ionic currents \citep{rutecki_neuronal_1992, pospischil_minimal_2008,Kispersky2012, golowasch_failure_2002, barreiro_-current_2012} indeed dramatically influence the firing behavior and dynamics of neurons. Mutations in different sodium channel genes have been experimentally shown to affect firing in a cell-type specific manner based on differences in expression levels of the affected gene \citep{Layer2021}, but also on other cell-type specific mechanisms \citep{Hedrich14874, makinson_scn1a_2016}. +Ion channel variants are frequently classified in heterologous expression systems as either a loss of function (LOF) or a gain of function (GOF) in the respective ionic current \citep{Musto2020, Kullmann2002, Waxman2011, Kim2021}. This LOF/GOF classification is often directly used to predict the effects on neuronal firing \citep{Niday2018, Wei2017, Wolff2017,Masnada2017}, which in turn is important for understanding the pathophysiology of these disorders and for identification of potential therapeutic targets \citep{Orsini2018, Yang2018, Colasante2020, Yu2006}. Experimentally, the effects of channelopathies on neuronal firing are assessed using primary neuronal cultures \citep{Scalmani2006, Smith2018, Liu2019} or \textit{in vitro} recordings from slices of transgenic mouse lines \citep{Mantegazza2019, Xie2010,Lory2020, Habib2015, Hedrich14874} but are restricted to limited number of neuronal types. 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. Expression level of an affected gene \citep{Layer2021} and relative amplitudes of ionic currents \citep{rutecki_neuronal_1992, pospischil_minimal_2008,Kispersky2012, golowasch_failure_2002, barreiro_-current_2012} indeed dramatically influence the firing behavior and dynamics of neurons. Mutations in different sodium channel genes have been experimentally shown to affect firing in a neuron-type specific manner based on differences in expression levels of the affected gene \citep{Layer2021}, but also on other neuron-type specific mechanisms \citep{Hedrich14874, makinson_scn1a_2016}. -Cell-type specificity is likely vital for successful precision medicine treatment approaches. For example, Dravet syndrome was identified as the consquence of LOF mutations in \textit{SCN1A} \citep{Claes2001,Fujiwara2003,Ohmori2002}, however limited success in the treatment of Dravet syndrome persisted \citep{Claes2001,Oguni2001} in part due to lack of understanding that inhibitory interneurons and not pyramidal neurons had altered excitability as a result of LOF \textit{SCN1A} mutations \citep{Yu2006, Colasante2020}. +Neuron-type specificity is likely vital for successful precision medicine treatment approaches. For example, Dravet syndrome was identified as the consquence of LOF mutations in \textit{SCN1A} \citep{Claes2001,Fujiwara2003,Ohmori2002}, however limited success in the treatment of Dravet syndrome persisted \citep{Claes2001,Oguni2001} in part due to lack of understanding that inhibitory interneurons and not pyramidal neurons had altered excitability as a result of LOF \textit{SCN1A} mutations \citep{Yu2006, Colasante2020}. -Taken together, these examples demonstrate the need to study the effects of ion channel mutations in many different cell types --- a daunting if not impossible experimental challenge. In the context of this diversity, simulations of conductance-based neuronal models are a powerful tool bridging the gap between altered ionic currents and firing in a systematic and efficient way. Furthermore, simlutions allow to predict the potential effects of drugs needed to alleviate the pathophysiology of the respective mutation \citep{johannesen_genotype-phenotype_2021, lauxmann_therapeutic_2021, Bayraktar}. +Taken together, these examples demonstrate the need to study the effects of ion channel mutations in many different neuron types --- a daunting if not impossible experimental challenge. In the context of this diversity, simulations of conductance-based neuronal models are a powerful tool bridging the gap between altered ionic currents and firing in a systematic and efficient way. Furthermore, simlutions allow to predict the potential effects of drugs needed to alleviate the pathophysiology of the respective mutation \citep{johannesen_genotype-phenotype_2021, lauxmann_therapeutic_2021, Bayraktar}. In this study, we therefore investigated how the outcome of ionic current kinetic changes on firing depend on neuronal cell type by (1) characterizing firing responses with two measures, (2) simulating the response of a repertoire of different neuronal models to changes in single current parameters as well as (3) to more complex changes in this case as they were observed for specific \textit{KCNA1} mutations that are associated with episodic ataxia type~1 \citep{Browne1994, Browne1995, lauxmann_therapeutic_2021}. @@ -125,15 +126,15 @@ In this study, we therefore investigated how the outcome of ionic current kineti All modelling and simulation was done in parallel with custom written Python 3.8 (Python Programming Language; RRID:SCR\_008394) software, run on a Cent-OS 7 server with an Intel(R) Xeon (R) E5-2630 v2 CPU. % @ 2.60 GHz Linux 3.10.0-123.e17.x86_64. -\subsection{Different Cell Models} +\subsection{Different Neuron Models} -A group of neuronal models representing the major classes of cortical and thalamic neurons including regular spiking pyramidal (RS pyramidal; model D), regular spiking inhibitory (RS inhibitory; model B), and fast spiking (FS; model C) 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; model H, RS inhibitory +\Kv; model E, and FS +\Kv; model G respectively). A cerebellar stellate cell model from \citet{alexander_cerebellar_2019} is used (Cb stellate; model A) 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; model F) or by replacing the A-type potassium current (Cb stellate \(\Delta\)\Kv; model J). A subthalamic nucleus (STN; model L) neuron model as described by \citet{otsuka_conductance-based_2004} was also used. The STN cell model (model L) was additionally extended by a \Kv current \citep{ranjan_kinetic_2019}, either in addition to the A-type potassium current (STN +\Kv; model I) or by replacing the A-type potassium current (STN \(\Delta\)\Kv; model K). Model letter naming corresponds to panel lettering in Figure \ref{fig:diversity_in_firing}. The properties and maximal conductances of each model are detailed in Table \ref{tab:g} and the gating properties are unaltered from the original Cb stellate (model A) and STN (model L) models \citep{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 +A group of neuronal models representing the major classes of cortical and thalamic neurons including regular spiking pyramidal (RS pyramidal; model D), regular spiking inhibitory (RS inhibitory; model B), and fast spiking (FS; model C) neurons 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; model H, RS inhibitory +\Kv; model E, and FS +\Kv; model G respectively). A cerebellar stellate cell model from \citet{alexander_cerebellar_2019} is used (Cb stellate; model A) in this study. This neuron model was also extended by a \Kv current \citep{ranjan_kinetic_2019}, either in addition to the A-type potassium current (Cb stellate +\Kv; model F) or by replacing the A-type potassium current (Cb stellate \(\Delta\)\Kv; model J). A subthalamic nucleus (STN; model L) neuron model as described by \citet{otsuka_conductance-based_2004} was also used. The STN neuron model (model L) was additionally extended by a \Kv current \citep{ranjan_kinetic_2019}, either in addition to the A-type potassium current (STN +\Kv; model I) or by replacing the A-type potassium current (STN \(\Delta\)\Kv; model K). Model letter naming corresponds to panel lettering in Figure \ref{fig:diversity_in_firing}. The properties and maximal conductances of each model are detailed in Table \ref{tab:g} and the gating properties are unaltered from the original Cb stellate (model A) and STN (model L) models \citep{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 (model D), RS inhibitory (model B) and FS (model C) 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}. \textcolor{red}{The fitted gating parameters are detailed in Table \ref{tab:gating}}. Each of the original single-compartment models used here can reproduce physiological firing behavior of the neurons they represent (Figure \ref{fig:diversity_in_firing}; \citealt{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 (model D), RS inhibitory (model B) and FS (model C) 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}. The fitted gating parameters are detailed in Table \ref{tab:gating}. Each of the original single-compartment models used here can reproduce physiological firing behavior of the neurons they represent (Figure \ref{fig:diversity_in_firing}; \citealt{pospischil_minimal_2008, alexander_cerebellar_2019, otsuka_conductance-based_2004}) and capture key aspects of the dynamics of these neuron types. \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 (step size 5\,pA) for all models except for the RS inhibitory neuron models where a range of 0 to 0.35\,nA (step size 1.75\,pA) 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. @@ -151,7 +152,7 @@ All models exhibited tonic steady-state firing with default parameters. In limit \subsection{Sensitivity Analysis and Comparison of Models} -Properties of ionic currents common to all models (\(\text{I}_{\text{Na}}\), \(\text{I}_{\text{K}}\), \(\text{I}_{\text{A}}\)/\IKv, and \(\text{I}_{\text{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}. +Properties of ionic currents common to all models (\(\text{I}_{\text{Na}}\), \(\text{I}_{\text{Kd}}\), \(\text{I}_{\text{A}}\)/\IKv, and \(\text{I}_{\text{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) 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}\)) @@ -167,18 +168,20 @@ The Kendall's \(\tau\) coefficient, a non-parametric rank correlation, is used t \subsection{Code Accessibility} %The code/software described in the paper is freely available online at [URL redacted for double-blind review]. The code is available as \Cref{code_zip}. -The code/software described in the paper is freely available online at \newline \href{https://github.com/nkoch1/LOFGOF2023}{https://github.com/nkoch1/LOFGOF2023}. %The code is available as \ref{code_zip}. +The simulation and analysis code including full specification of the models is freely available online at \newline \href{https://github.com/nkoch1/LOFGOF2023}{https://github.com/nkoch1/LOFGOF2023}. %The code is available as \ref{code_zip}. \section{Results} -To examine the role of cell-type specific ionic current environments on the impact of altered ion currents properties on firing behavior: +To examine the role of neuron-type specific ionic current environments on the impact of altered ion currents properties on firing behavior: (1) firing responses were characterized with rheobase and \(\Delta\)AUC, (2) a set of neuronal models was used and properties of channels common across models were altered systematically one at a time, and (3) 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. \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 (Figure \ref{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). Models are qualitatively sorted based on their firing curves and labeled model A through L accordingly. Some models, such as models A and B, display type I firing, whereas others such as models J and L 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; \citealt{ermentrout_type_1996, Rinzel_1998}). 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 models I, J, and K have large hysteresis (Figure \ref{fig:diversity_in_firing} and Supplementary Figure S1). Different types of underlying current dynamics are known to generate these different firing types and hysteresis \cite{ERMENTROUT2002, ermentrout_type_1996, Izhikevich2006}. % \textcolor{red}{ (Figure \ref{fig:diversity_in_firing} and Supplementary Figure \ref{ramp_firing})} +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 (Figure \ref{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). Models are qualitatively sorted based on their firing curves and labeled model A through L accordingly. Some models, such as models A and B, display type I firing, whereas others such as models J and L 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; \citealt{ermentrout_type_1996, Rinzel_1998}). 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 models I, J, and K have large hysteresis (Figure \ref{fig:diversity_in_firing} and Supplementary Figure S1). Different types of underlying current dynamics are known to generate these different firing types and hysteresis \cite{ERMENTROUT2002, ermentrout_type_1996, Izhikevich2006}. This broad range of single-compartmental models represents the distinct dynamics of various neuron types across diverse brain regions. + +% \textcolor{red}{ (Figure \ref{fig:diversity_in_firing} and Supplementary Figure \ref{ramp_firing})} \subsection{Characterization of Neuronal Firing Properties} -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 (Figure \ref{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. +Neuronal firing is a complex phenomenon, and a quantification of firing properties is required for comparisons across neuron types and between different conditions. Here we focus on two aspects of firing that are routinely measured in clinical settings \citep{Bryson_2020}: rheobase, the smallest injected current at which the neuron 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 (Figure \ref{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 quantified 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 (Figure \ref{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. @@ -190,54 +193,54 @@ For example, when shifting the half activation voltage \(V_{1/2}\) of the delaye Changes in gating half activation potential \(V_{1/2}\) and slope factor \(k\) as well as the maximum conductance \(g\) affected the AUC (Figure \ref{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\)), but with different slopes (Figure \ref{fig:AUC_correlation}~D,E,F). Similar consistent positive correlations could 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\)). -Qualitative differences could be found, for example, when increasing the maximal conductance of the delayed rectifier (Figure \ref{fig:AUC_correlation}~G,H,I). In some model neurons this increased AUC (\( \text{Kendall} \ \tau \approx +1\)), whereas in others AUC was decreased (\( \text{Kendall} \ \tau \approx -1\)). In model I, AUC depended in a non-linear way on the maximal conductance of the delayed rectifier, resulting in a \( \text{Kendall} \ \tau \) close to zero. Even more dramatic qualitative differences between models resulted from shifts of the activation curve of the delayed rectifier, as discussed already above (Figure \ref{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. Many model neurons showed strongly negative correlations, and a few displayed positive correlations with shifting the activation curve of the delayed rectifier. +Qualitative differences could be found, for example, when increasing the maximal conductance of the delayed rectifier (Figure \ref{fig:AUC_correlation}~G,H,I). In some model neurons this increased AUC (\( \text{Kendall} \ \tau \approx +1\)), whereas in others AUC was decreased (\( \text{Kendall} \ \tau \approx -1\)). In model I, AUC depended in a non-linear way on the maximal conductance of the delayed rectifier, resulting in a \( \text{Kendall} \ \tau \) close to zero. Even more dramatic qualitative differences between models resulted from shifts of the activation curve of the delayed rectifier, as discussed already above (Figure \ref{fig:AUC_correlation}~A,B,C). Some model neurons did almost not depend on changes in Kd-current half activation \(V_{1/2}\) or showed strong non-linear dependencies, both resulting in \( \text{Kendall} \ \tau\) close to zero. Many model neurons showed strongly negative correlations, and a few displayed positive correlations with shifting the activation curve of the delayed rectifier. -Changes in gating half activation potential \(V_{1/2}\) and slope factor \(k\) as well as the maximum conductance \(g\) affected rheobase (Figure \ref{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 model A increased the rheobase (Figure \ref{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 Figure \ref{fig:rheobase_correlation}~H). This monotonically increasing relationship was evident in all models (\( \text{Kendall} \ \tau \approx +1\)), but with different slopes (thin lines in Figure \ref{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\); Figure \ref{fig:rheobase_correlation}~I), i.e. rheobase 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 (Figure \ref{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 model A increased the rheobase (Figure \ref{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 Figure \ref{fig:rheobase_correlation}~H). This monotonically increasing relationship was evident in all models (\( \text{Kendall} \ \tau \approx +1\)), but with different slopes (thin lines in Figure \ref{fig:rheobase_correlation}~H). Similarly, positive correlations were consistently found across models for maximal conductances of delayed rectifier Kd, \Kv, and A type currents, whereas the maximal conductance of the sodium current was consistently associated with negative correlations (\( \text{Kendall} \ \tau \approx -1\); Figure \ref{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 correlated with rheobase similarly across models there were some exceptions. Rheobase was affected with both with positive and negative correlations in different models as a result of changing slope factor of Na\(^+\)-current inactivation (positive: models A--H and J; negative: models I, K and L), \Kv-current inactivation (positive: models I and K; negative: models E--G, J, H), and A-current activation (positive: models A, F and L; negative: model I; Figure \ref{fig:rheobase_correlation}~F). Departures from monotonic relationships also occurred in some models as a result of K\(^+\)-current activation \(V_{1/2}\) (e.g. model J) and slope factor \(k\) (models F and G), \Kv-current inactivation slope factor \(k\) (model K), and A-current activation slope factor \(k\) (model L). 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 models there were some exceptions. Rheobase was affected with both with positive and negative correlations in different models as a result of changing slope factor of Na\(^+\)-current inactivation (positive: models A--H and J; negative: models I, K and L), \Kv-current inactivation (positive: models I and K; negative: models E--G, J, H), and A-current activation (positive: models A, F and L; negative: model I; Figure \ref{fig:rheobase_correlation}~F). Departures from monotonic relationships also occurred in some models as a result of Kd-current activation \(V_{1/2}\) (e.g. model J) and slope factor \(k\) (models F and G), \Kv-current inactivation slope factor \(k\) (model K), and A-current activation slope factor \(k\) (model L). 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. \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 test case 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 (Figure \ref{fig:simulation_model_comparision}A--I). Pairwise non-parametric Kendall \(\tau\) rank correlations between the simulated effects of these \Kv mutations on rheobase were highly correlated across models (Figure \ref{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 (Figure \ref{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. +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 test case 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 (Figure \ref{fig:simulation_model_comparision}A--I). Pairwise non-parametric Kendall \(\tau\) rank correlations between the simulated effects of these \Kv mutations on rheobase were highly correlated across models (Figure \ref{fig:simulation_model_comparision}J) indicating that EA1 associated \textit{KCNA1} mutations generally decrease rheobase across diverse neuron-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 (Figure \ref{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. \section{Discussion} -To compare the effects of ion channel mutations on neuronal firing of different neuron types, a diverse set of conductance-based models was used and the effect of changes in individual channel properties across conductance-based neuronal models. Additionally, the effects of episodic ataxia type~1 associated (EA1) \textit{KCNA1} mutations were simulated. Changes to single ionic current properties, as well as known EA1 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. +To compare the effects of ion channel mutations on neuronal firing of different neuron types, a diverse set of conductance-based models was used and the effect of changes in individual channel properties across conductance-based neuronal models. Additionally, the effects of episodic ataxia type~1 associated (EA1) \textit{KCNA1} mutations were simulated. Changes to single ionic current properties, as well as known EA1 associated \textit{KCNA1} mutations showed consistent effects on the rheobase across neuron types, whereas the effects on AUC of the steady-state fI-curve depended on the neuron 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 neuron and are therefore depend on the channel ensemble of a specific neuron type. \subsection{Firing Frequency Analysis} -Although, firing differences can be characterized by an area under the curve of the fI curve for fixed current steps this approach characterizes firing as a mixture of key features: rheobase and the initial slope of the fI curve. By probing rheobase directly and using an AUC relative to rheobase, we disambiguate these features and enable insights into the effects on rheobase and initial fI curve steepness. This increases the specificity of our understanding of how ion channel mutations alter firing across cells types and enable classification as described in Figure \ref{fig:firing_characterization}. Importantly, in cases when ion channel mutations alter rheobase and initial fI curve steepness in ways that oppose effects on firing (upper left and bottom right quadrants of Figure \ref{fig:firing_characterization}~B) this disamgibuation is important for understanding the outcome of the mutation. In these cases, the regime the neuron is operating in is vital in determining the cell's firing outcome. If it is in its excitable regime and only occasionally generates an action potential, then the effect on the rheobase is more important. If it is firing periodically with high rates, then the change in AUC might be more relevant. +Although, firing differences can be characterized by an area under the curve of the fI curve for fixed current steps this approach characterizes firing as a mixture of key features: rheobase and the initial slope of the fI curve. By probing rheobase directly and using an AUC relative to rheobase, we disambiguate these features and enable insights into the effects on rheobase and initial fI curve steepness. This increases the specificity of our understanding of how ion channel mutations alter firing across neuron types and enable classification as described in Figure \ref{fig:firing_characterization}. Importantly, in cases when ion channel mutations alter rheobase and initial fI curve steepness in ways that oppose effects on firing (upper left and bottom right quadrants of Figure \ref{fig:firing_characterization}~B) this disamgibuation is important for understanding the outcome of the mutation. In these cases, the regime the neuron is operating in is vital in determining the neuron's firing outcome. If it is in its excitable regime and only occasionally generates an action potential, then the effect on the rheobase is more important. If it is firing periodically with high rates, then the change in AUC might be more relevant. \subsection{Modelling Limitations} -The models used here are simple and while they all capture key aspects of the firing dynamics for their respective cell, they fall short of capturing the complex physiology and biophysics of real cells. However, for the purpose of understanding how different cell-types, or current environments, contribute to diversity in firing outcomes of ion channel mutations, the fidelity of the models to the physiological cells they represent is of a minor concern. For exploring possible cell-type specific effects, variety in currents and dynamics across models is of utmost importance. With this context in mind, the collection of models used here are labelled as models A-L to highlight that the physiological cells they represent is not of chief concern, but rather that the collection of models with different attributes respond heterogeneously to the same perturbation. Additionally, the development of more realistic models is a high priority and will enable cell-type specific predictions that may aid in precision medicine approaches. Thus, weight should not be put on any single predicted firing outcome here in a specific model, but rather on the differences in outcomes that occur across the cell-type spectrum the models used here represent. +The models used here are simple and they all capture key aspects of the firing dynamics for their respective neuron. The simple models fall short of capturing the complex physiology, biophysics and heterogeneity of real neurons, nor do they take into account subunit stoichiometry, auxillary subunits, membrane composition which influence the biophysics of ionic currents \citep{Al-Sabi_2013, Oliver_2004, Pongs_2009, Rettig1994}. However, for the purpose of understanding how different neuron-types, or current environments, contribute to diversity in firing outcomes of ion channel mutations, the fidelity of the models to the physiological neurons they represent is of a minor concern. For exploring possible neuron-type specific effects, variety in currents and dynamics across models is of utmost importance. With this context in mind, the collection of models used here are labelled as models A-L to highlight that the physiological neurons they represent is not of chief concern, but rather that the collection of models with different attributes respond heterogeneously to the same perturbation. Additionally, the development of more realistic models is a high priority and will enable neuron-type specific predictions that may aid precision medicine approaches. Thus, weight should not be put on any single predicted firing outcome here in a specific model, but rather on the differences in outcomes that occur across the neuron-type spectrum the models used here represent. % Menchaca_2012, \subsection{Neuronal Diversity} 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 in the cortex and retina \citep{Huang2019, Laturnus2020}, 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 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. +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 neuron types express but heterogeneity also exists in ion channel expression levels within neuron 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 R1648H mutation in \textit{SCN1A} does not alter the excitability of cortical pyramidal neurons, but causes hypoexcitability of adjacent inhibitory GABAergic neurons \citep{Hedrich14874}. In the CA3 region of the hippocampus, the equivalent mutation in \textit{SCN8A}, R1627H, increases the excitability of pyramidal neurons and decreases the excitability of parvalbumin positive interneurons \cite{makinson_scn1a_2016}. Additionally, the L858H mutation in \(\text{Na}_\text{V}\text{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 \(\text{Na}_\text{V}\text{1.7}\) on firing is dependent on the presence or absence of another sodium channel, namely the \(\text{Na}_\text{V}\text{1.8}\) subunit \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 neuron type affect the outcome of ion channel mutations have been reported. However, comparisons between the effects of such mutations between certain neuron types were described. For instance, the R1648H mutation in \textit{SCN1A} does not alter the excitability of cortical pyramidal neurons, but causes hypoexcitability of adjacent inhibitory GABAergic neurons \citep{Hedrich14874}. In the CA3 region of the hippocampus, the equivalent mutation in \textit{SCN8A}, R1627H, increases the excitability of pyramidal neurons and decreases the excitability of parvalbumin positive interneurons \cite{makinson_scn1a_2016}. Additionally, the L858H mutation in \(\text{Na}_\text{V}\text{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 \(\text{Na}_\text{V}\text{1.7}\) on firing is dependent on the presence or absence of another sodium channel, namely the \(\text{Na}_\text{V}\text{1.8}\) subunit \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,OLeary2016}. 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}. +Neuron type specific differences in ionic current properties are important in the effects of ion channel mutations. However, within a neuron 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,OLeary2016}. 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 \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}. 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 \textit{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. +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}. 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 \textit{KCNA1} mutations across models are indicative that a certain neuron 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 \textit{KCNA1} mutations on firing as evident in the differences seen in the impact of \(\text{I}_\text{A}\) and \IKv in the Cb stellate and STN model families on \textit{KCNA1} mutation firing. This highlights that not only knowledge of the biophysical properties of a channel but also its neuronal expression and other neuronal channels present 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 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 occurs plays an important role in determining the outcome on firing. The use of LOF and GOF 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 patient's specific channelopathy is identified and used to tailor treatments \citep{Weber2017, Ackerman2013, Helbig2020, Gnecchi2021, Musto2020, Brunklaus2022, Hedrich2021}. However, in these cases the effects of specific ion channel mutations are often characterized based on ionic currents in expression systems and classified as LOF or GOF to aid in treatment decisions \citep{johannesen_genotype-phenotype_2021, Brunklaus2022, Musto2020}. Although positive treatment outcomes occur with sodium channel blockers in patients with GOF \(\text{Na}_{\text{V}}\text{1.6}\) mutations, patients with both LOF and GOF \(\text{Na}_{\text{V}}\text{1.6}\) mutations can benefit from treatment with sodium channel blockers \citep{johannesen_genotype-phenotype_2021}. This example suggests 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, the transferring of LOF or GOF from the current to the firing level should be used with caution; the cell type in which the mutant ion channel is expressed may provide valuable insight into the functional consequences of an ion channel mutation. Experimental assessment of the effects of a patient's specific ion channel mutation \textit{in vivo} is not generally feasible at a large scale. Therefore, modelling approaches investigating the effects of patient specific channelopathies provide 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. +Therefore, the transferring of LOF or GOF from the current to the firing level should be used with caution; the neuron type in which the mutant ion channel is expressed may provide valuable insight into the functional consequences of an ion channel mutation. Experimental assessment of the effects of a patient's specific ion channel mutation \textit{in vivo} is not generally feasible at a large scale. Therefore, modelling approaches investigating the effects of patient specific channelopathies provide 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 neuron-type dependency should be considered. -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. The complexity and nuances of the nervous system, including cell-type dependent firing effects of channelopathies explored here, likely underlie shortcomings in treatment approaches in patients with channelopathies. Accounting for cell-type dependent firing effects provides 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 neuron. In channelopathies the effect of a given ion channel mutation on neuronal firing therefore depends on the neuron type in which those changes occur \citep{Hedrich14874, makinson_scn1a_2016, Waxman2007, Rush2006}. Although certain complexities of neurons such as differences in neuron-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 neuron-type dependent effects on neuronal firing. The complexity and nuances of the nervous system, including neuron-type dependent firing effects of channelopathies explored here, likely underlie shortcomings in treatment approaches in patients with channelopathies. Accounting for neuron-type dependent firing effects provides an opportunity to improve the efficacy and precision in personalized medicine approaches. -With this study we suggest that cell-type specific effects are vital to a full understanding of the effects of channelopathies at the level of neuronal firing. Furthermore, we highlight the use of modelling approaches to enable relatively fast and efficient insight into channelopathies. +With this study we suggest that neuron-type specific effects are vital to a full understanding of the effects of channelopathies at the level of neuronal firing. Furthermore, we highlight the use of modelling approaches to enable relatively fast and efficient insight into channelopathies. %\section{Article types} % @@ -279,19 +282,19 @@ With this study we suggest that cell-type specific effects are vital to a full u %Tables should be inserted at the end of the manuscript. Please build your table directly in LaTeX.Tables provided as jpeg/tiff files will not be accepted. Please note that very large tables (covering several pages) cannot be included in the final PDF for reasons of space. These tables will be published as \href{https://www.frontiersin.org/guidelines/author-guidelines#supplementary-material}{Supplementary Material} on the online article page at the time of acceptance. The author will be notified during the typesetting of the final article if this is the case. % - -\subsection{Resource Identification Initiative} -To take part in the Resource Identification Initiative, please use the corresponding catalog number and RRID in your current manuscript. For more information about the project and for steps on how to search for an RRID, please click \href{http://www.frontiersin.org/files/pdf/letter_to_author.pdf}{here}. -\notenk{did this for Python in the methods} -\subsection{Life Science Identifiers} -Life Science Identifiers (LSIDs) for ZOOBANK registered names or nomenclatural acts should be listed in the manuscript before the keywords. For more information on LSIDs please see the \href{https://www.frontiersin.org/guidelines/author-guidelines#nomenclature}{Nomenclature} section of the guidelines. -\notenk{Not sure if we need to do this, or what to do?} - -\section{Additional Requirements} - -For additional requirements for specific article types and further information please refer to the individual Frontiers journal pages - -\notenk{Original Research articles are peer-reviewed, have a maximum word count of 12,000 and may contain no more than 15 Figures/Tables. Authors are required to pay a fee (A-type article) to publish an Original Research article. Original Research articles should have the following format: 1) Abstract, 2) Introduction, 3) Materials and Methods, 4) Results, 5) Discussion. All article types require a minimum of five and a maximum of eight keywords.} +% +%\subsection{Resource Identification Initiative} +%To take part in the Resource Identification Initiative, please use the corresponding catalog number and RRID in your current manuscript. For more information about the project and for steps on how to search for an RRID, please click \href{http://www.frontiersin.org/files/pdf/letter_to_author.pdf}{here}. +%\notenk{did this for Python in the methods} +%\subsection{Life Science Identifiers} +%Life Science Identifiers (LSIDs) for ZOOBANK registered names or nomenclatural acts should be listed in the manuscript before the keywords. For more information on LSIDs please see the \href{https://www.frontiersin.org/guidelines/author-guidelines#nomenclature}{Nomenclature} section of the guidelines. +%\notenk{Not sure if we need to do this, or what to do?} +% +%\section{Additional Requirements} +% +%For additional requirements for specific article types and further information please refer to the individual Frontiers journal pages +% +%\notenk{Original Research articles are peer-reviewed, have a maximum word count of 12,000 and may contain no more than 15 Figures/Tables. Authors are required to pay a fee (A-type article) to publish an Original Research article. Original Research articles should have the following format: 1) Abstract, 2) Introduction, 3) Materials and Methods, 4) Results, 5) Discussion. All article types require a minimum of five and a maximum of eight keywords.} \subsection*{\textcolor{red}{Contribution to the field}} \notenk{Contribution to the field. Ahead of submission, you should prepare a statement summarizing in 200 words your manuscript’s contribution to, and position in, the existing literature of your field. This should be written avoiding any technical language or non-standard acronyms. The aim should be to convey the meaning and importance of this research to a non-expert. (Note that you will NOT be able to provide a traditional cover letter.)} @@ -300,13 +303,13 @@ For additional requirements for specific article types and further information p Although the genetic nature of ion channel mutations as well as their effects on the biophysical properties of an ion channel are routinely assessed experimentally in the context of neurological disorders such as epilepsy and ataxia, determination of their role in altering neuronal firing is more difficult. - However, cell-type dependency of ion channel mutations on firing has been observed experimentally. Here we demonstrate 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 should not be blindly extend to classification at the level of neuronal firing nor used to directly inform therapeutic approaches. The knowledge of whether a mutation increases or decreases neuronal excitability is vital in the context of state-of-the-art personalized medicine approaches in this area where treatments are mainly based on biophysical properties only. As such taking cell-type dependence of the firing effects of ion channel mutations provides a promising direction to increase efficacy in personalized medicine approaches. + However, neuron-type dependency of ion channel mutations on firing has been observed experimentally. Here we demonstrate that the neuron 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 should not be blindly extend to classification at the level of neuronal firing nor used to directly inform therapeutic approaches. The knowledge of whether a mutation increases or decreases neuronal excitability is vital in the context of state-of-the-art personalized medicine approaches in this area where treatments are mainly based on biophysical properties only. As such taking neuron-type dependence of the firing effects of ion channel mutations provides a promising direction to increase efficacy in personalized medicine approaches. Taken together, our findings highlight that neuronal type and the respective ionic current composition is of vital importance and must be considered when assessing the effects of mutations on neuronal firing and for determining therapeutic strategies for ion channal mutations. -\textit{Significance statement from eNeuro}\\ -\textit{Although the genetic nature of ion channel mutations as well as their effects on the biophysical properties of an ion channel are routinely assessed experimentally, determination of their role in altering neuronal firing is more difficult. In particular, cell-type dependency of ion channel mutations on firing has been observed experimentally, and should be accounted for. In this context, 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 should not be blindly extend to classification at the level of neuronal firing.} +%\textit{Significance statement from eNeuro}\\ +%\textit{Although the genetic nature of ion channel mutations as well as their effects on the biophysical properties of an ion channel are routinely assessed experimentally, determination of their role in altering neuronal firing is more difficult. In particular, cell-type dependency of ion channel mutations on firing has been observed experimentally, and should be accounted for. In this context, 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 should not be blindly extend to classification at the level of neuronal firing.} %\textit{Cover letter from eNeuro}\\ %\textit{Dear Editors, @@ -340,9 +343,9 @@ This work was supported by the German Research Foundation in the Frame of the Re \section*{Acknowledgments} %This is a short text to acknowledge the contributions of specific colleagues, institutions, or agencies that aided the efforts of the authors. -\section*{Supplemental Data} - \href{https://www.frontiersin.org/guidelines/author-guidelines#supplementary-material}{Supplementary Material} should be uploaded separately on submission, if there are Supplementary Figures, please include the caption in the same file as the figure. LaTeX Supplementary Material templates can be found in the Frontiers LaTeX folder. - \notenk{See ./Koch\_SupplementaryMaterial.tex} +%\section*{Supplemental Data} +% \href{https://www.frontiersin.org/guidelines/author-guidelines#supplementary-material}{Supplementary Material} should be uploaded separately on submission, if there are Supplementary Figures, please include the caption in the same file as the figure. LaTeX Supplementary Material templates can be found in the Frontiers LaTeX folder. +% \notenk{See ./Koch\_SupplementaryMaterial.tex} \section*{Data Availability Statement} @@ -392,7 +395,7 @@ Changes in firing as characterized by \(\Delta\)AUC and \(\Delta\)rheobase occup \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 model G delayed rectifier K half activation \(V_{1/2}\) \textbf{(A)}, changes \Kv activation slope factor \(k\) in model G \textbf{(D)}, and changes in maximal conductance of delayed rectifier K current in the model I \textbf{(G)} are shown. The fI curves from the smallest (grey) to the largest (black) alterations are seen for \textbf{(A,D,} and \textbf{G}) in accordance to the greyscale of the x-axis in B, E, and H. The \ndAUC of fI curves is plotted against delayed rectifier K half activation potential (\(\Delta V_{1/2}\); \textbf{B}), \Kv activation slope factor \(k\) (k/\(\text{k}_{\text{WT}}\); \textbf{E}) and maximal conductance \(g\) of the delayed rectifier K current (g/\(\text{g}_{\text{WT}}\); \textbf{H}) for all models (thin lines) with relationships from the fI curve examples ( \textbf{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 \textbf{(C)}, slope factor k and \ndAUC \textbf{(F)} as well as maximal current conductances and \ndAUC \textbf{(I)} for each model and current property is computed. The relationships between \(\Delta V_{1/2}\), k/\(\text{k}_{\text{WT}}\), and g/\(\text{g}_{\text{WT}}\) and \ndAUC for the Kendall rank correlations highlighted in the black boxes are depicted in \textbf{(B)}, \textbf{(E)} and \textbf{(H)} respectively. } + \caption[]{Effects of altered channel kinetics on AUC in various neuron models. The fI curves corresponding to shifts in model G delayed rectifier Kd half activation \(V_{1/2}\) \textbf{(A)}, changes \Kv activation slope factor \(k\) in model G \textbf{(D)}, and changes in maximal conductance of delayed rectifier K current in the model I \textbf{(G)} are shown. The fI curves from the smallest (grey) to the largest (black) alterations are seen for \textbf{(A,D,} and \textbf{G}) in accordance to the greyscale of the x-axis in B, E, and H. The \ndAUC of fI curves is plotted against delayed rectifier K half activation potential (\(\Delta V_{1/2}\); \textbf{B}), \Kv activation slope factor \(k\) (k/\(\text{k}_{\text{WT}}\); \textbf{E}) and maximal conductance \(g\) of the delayed rectifier Kd current (g/\(\text{g}_{\text{WT}}\); \textbf{H}) for all models (thin lines) with relationships from the fI curve examples ( \textbf{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 \textbf{(C)}, slope factor k and \ndAUC \textbf{(F)} as well as maximal current conductances and \ndAUC \textbf{(I)} for each model and current property is computed. The relationships between \(\Delta V_{1/2}\), k/\(\text{k}_{\text{WT}}\), and g/\(\text{g}_{\text{WT}}\) and \ndAUC for the Kendall rank correlations highlighted in the black boxes are depicted in \textbf{(B)}, \textbf{(E)} and \textbf{(H)} respectively. } \label{fig:AUC_correlation} \end{figure} diff --git a/Frontiers_manuscript/g_table.tex b/Frontiers_manuscript/g_table.tex index 833dd8e..02b2d9a 100644 --- a/Frontiers_manuscript/g_table.tex +++ b/Frontiers_manuscript/g_table.tex @@ -14,7 +14,7 @@ Model & D (H) & B (E) & C (G) & A & F & J & L & I & K \\ \Xhline{1\arrayrulewidth} \(g_{Na}\) & \(56\) & \(10\) & \(58\) & \(3.4\) & \(3.4\) & \(3.4\) & \(49\) & \(49\) & \(49\) \\ - \(g_{K}\) & \(6\) (\(5.4\)) & 2.1 (\(1.89\)) & 3.9 (\(3.51\)) & \(9.0556\) & \(8.15\) &\(9.0556\) & \(57\) & \(56.43\) & \(57\) \\ + \(g_{Kd}\) & \(6\) (\(5.4\)) & 2.1 (\(1.89\)) & 3.9 (\(3.51\)) & \(9.0556\) & \(8.15\) &\(9.0556\) & \(57\) & \(56.43\) & \(57\) \\ \(g_{K_V1.1}\) & --- (\(0.6\)) & --- (\(0.21\)) & --- (\(0.39\)) & --- & \(0.90556\) & \(1.50159\) & --- & \(0.57\) & \(0.5\) \\ \(g_{A}\) & --- & --- & --- & \(15.0159\) & \(15.0159\) & --- & \(5\) & \(5\) & --- \\ \(g_{M}\) & \(0.075\) & \(0.0098\) &\(0.075\) & --- & --- & --- & --- & --- & --- \\ diff --git a/Frontiers_manuscript/ref.bib b/Frontiers_manuscript/ref.bib index ac95472..66e9414 100644 --- a/Frontiers_manuscript/ref.bib +++ b/Frontiers_manuscript/ref.bib @@ -1,4 +1,91 @@ + @article{Pongs_2009, +author = {Pongs, Olaf and Schwarz, J\"{u}rgen R.}, +title = {Ancillary Subunits Associated With Voltage-Dependent {K}+ Channels}, +journal = {Physiological Reviews}, +volume = {90}, +number = {2}, +pages = {755-796}, +year = {2010}, +doi = {10.1152/physrev.00020.2009}, + note ={PMID: 20393197}, + abstract = { Since the first discovery of Kvβ-subunits more than 15 years ago, many more ancillary Kv channel subunits were characterized, for example, KChIPs, KCNEs, and BKβ-subunits. The ancillary subunits are often integral parts of native Kv channels, which, therefore, are mostly multiprotein complexes composed of voltage-sensing and pore-forming Kvα-subunits and of ancillary or β-subunits. Apparently, Kv channels need the ancillary subunits to fulfill their many different cell physiological roles. This is reflected by the large structural diversity observed with ancillary subunit structures. They range from proteins with transmembrane segments and extracellular domains to purely cytoplasmic proteins. Ancillary subunits modulate Kv channel gating but can also have a great impact on channel assembly, on channel trafficking to and from the cellular surface, and on targeting Kv channels to different cellular compartments. The importance of the role of accessory subunits is further emphasized by the number of mutations that are associated in both humans and animals with diseases like hypertension, epilepsy, arrhythmogenesis, periodic paralysis, and hypothyroidism. Interestingly, several ancillary subunits have in vitro enzymatic activity; for example, Kvβ-subunits are oxidoreductases, or modulate enzymatic activity, i.e., KChIP3 modulates presenilin activity. Thus different modes of β-subunit association and of functional impact on Kv channels can be delineated, making it difficult to extract common principles underlying Kvα- and β-subunit interactions. We critically review present knowledge on the physiological role of ancillary Kv channel subunits and their effects on Kv channel properties. } +} + + + + +@Article{Rettig1994, + author = {Rettig, Jens and Heinemann, Stefan H. and Wunder, Frank and Lorra, Christoph and Parcej, David N. and Oliver Dolly, J. and Pongs, Olaf}, + journal = {Nature}, + title = {Inactivation properties of voltage-gated {K}+ channels altered by presence of β-subunit}, + year = {1994}, + issn = {1476-4687}, + month = may, + number = {6478}, + pages = {289--294}, + volume = {369}, + abstract = {Structural and functional diversity of voltage-gated Kv1-type potassium channels in rat brain is enhanced by the association of two different types of subunits, the membrane-bound, pore-forming α-subunits and a peripheral β-subunit. We have cloned a β-subunit (Kvβ1) that is specifically expressed in the rat nervous system. Association of Kvβ1 with α-subunits confers rapid A-type inactivation on non-inactivating Kv1 channels (delayed rectifiers) in expression systems in vitro. This effect is mediated by an inactivating ball domain in the Kvβ1 amino terminus.}, + copyright = {1994 Nature Publishing Group}, + doi = {10.1038/369289a0}, + keywords = {Science, Humanities and Social Sciences, multidisciplinary, Science, multidisciplinary}, + publisher = {Nature Publishing Group} +} + + + @article{Oliver_2004, +author = {Dominik Oliver and Cheng-Chang Lien and Malle Soom and Thomas Baukrowitz and Peter Jonas and Bernd Fakler }, +title = {Functional Conversion Between A-Type and Delayed Rectifier K+ Channels by Membrane Lipids}, +journal = {Science}, +volume = {304}, +number = {5668}, +pages = {265-270}, +year = {2004}, +doi = {10.1126/science.1094113}, +abstract = {Voltage-gated potassium (Kv) channels control action potential repolarization, interspike membrane potential, and action potential frequency in excitable cells. It is thought that the combinatorial association between distinct α and β subunits determines whether Kv channels function as non-inactivating delayed rectifiers or as rapidly inactivating A-type channels. We show that membrane lipids can convert A-type channels into delayed rectifiers and vice versa. Phosphoinositides remove N-type inactivation from A-type channels by immobilizing the inactivation domains. Conversely, arachidonic acid and its amide anandamide endow delayed rectifiers with rapid voltage-dependent inactivation. The bidirectional control of Kv channel gating by lipids may provide a mechanism for the dynamic regulation of electrical signaling in the nervous system.}} + + + + + @ARTICLE{Menchaca_2012, +AUTHOR={Rodríguez Menchaca, Aldo and Adney, Scott and Zhou, Lei and Logothetis, Diomedes}, +TITLE={Dual Regulation of Voltage-Sensitive Ion Channels by PIP2}, +JOURNAL={Frontiers in Pharmacology}, +VOLUME={3}, +YEAR={2012}, +DOI={10.3389/fphar.2012.00170}, +ISSN={1663-9812}, + +ABSTRACT={Over the past 16 years, there has been an impressive number of ion channels shown to be sensitive to the major phosphoinositide in the plasma membrane, phosphatidylinositol 4,5-bisphosphate (PIP2). Among them are voltage-gated channels, which are crucial for both neuronal and cardiac excitability. Voltage-gated calcium (Cav) channels were shown to be regulated bidirectionally by PIP2. On one hand, PIP2 stabilized their activity by reducing current rundown but on the other hand it produced a voltage-dependent inhibition by shifting the activation curve to more positive voltages. For voltage-gated potassium (Kv) channels PIP2 was first shown to prevent N-type inactivation regardless of whether the fast inactivation gate was part of the pore-forming α subunit or of an accessory β subunit. Careful examination of the effects of PIP2 on the activation mechanism of Kv1.2 has shown a similar bidirectional regulation as in the Cav channels. The two effects could be distinguished kinetically, in terms of their sensitivities to PIP2 and by distinct molecular determinants. The rightward shift of the Kv1.2 voltage dependence implicated basic residues in the S4–S5 linker and was consistent with stabilization of the inactive state of the voltage sensor. A third type of a voltage-gated ion channel modulated by PIP2 is the hyperpolarization-activated cyclic nucleotide-gated (HCN) channel. PIP2 has been shown to enhance the opening of HCN channels by shifting their voltage-dependent activation toward depolarized potentials. The sea urchin HCN channel, SpIH, showed again a PIP2-mediated bidirectional effect but in reverse order than the depolarization-activated Cav and Kv channels: a voltage-dependent potentiation, like the mammalian HCN channels, but also an inhibition of the cGMP-induced current activation. Just like the Kv1.2 channels, distinct molecular determinants underlied the PIP2 dual effects on SpIH, with the proximal C-terminus implicated in the inhibitory effect. The dual regulation of these very different ion channels, all of which are voltage-dependent, points to conserved mechanisms of regulation of these channels by PIP2.} +} + + + + @article{Al-Sabi_2013, + author = {Al-Sabi, Ahmed and Kaza, Seshu Kumar and Dolly, J. Oliver and Wang, Jiafu}, + title = "{Pharmacological characteristics of Kv1.1- and Kv1.2-containing channels are influenced by the stoichiometry and positioning of their α subunits}", + journal = {Biochemical Journal}, + volume = {454}, + number = {1}, + pages = {101-108}, + year = {2013}, + month = {07}, + abstract = "{Voltage-sensitive neuronal Kv1 channels composed of four α subunits and four associated auxiliary β subunits control neuronal excitability and neurotransmission. Limited information exists on the combinations of α subunit isoforms (i.e. Kv1.1–1.6) or their positions in the oligomers, and how these affect sensitivity to blockers. It is known that TEA (tetraethylammonium) inhibits Kv1.1 channels largely due to binding a critical tyrosine (Tyr379) in the pore, whereas Val381 at the equivalent location in Kv1.2 makes it insensitive. With the eventual aim of developing blockers for therapeutic purposes, Kv1.1 and 1.2 α subunit genes were concatenated to form combinations representing those in central neurons, followed by surface expression in HEK (human embryonic kidney)-293 cells as single-chain functional proteins. Patch-clamp recordings demonstrated the influences of the ratios and positioning of these α subunits on the biophysical and pharmacological properties of oligomeric K+ channels. Raising the ratio of Kv1.1 to Kv1.2 in Kv1.2-1.2-1.1-1.2 led to the resultant channels being more sensitive to TEA and also affected their biophysical parameters. Moreover, mutagenesis of one or more residues in the first Kv1.2 to resemble those in Kv1.1 increased TEA sensitivity only when it is adjacent to a Kv1.1 subunit, whereas placing a non-interactive subunit between these two diminished susceptibility. The findings of the present study support the possibility of α subunits being precisely arranged in Kv1 channels, rather than being randomly assembled. This is important in designing drugs with abilities to inhibit particular oligomeric Kv1 subtypes, with the goal of elevating neuronal excitability and improving neurotransmission in certain diseases.}", + issn = {0264-6021}, + doi = {10.1042/BJ20130297}, +} + +@Article{Bryson_2020, + author = {Alexander Bryson and Robert John Hatch and Bas-Jan Zandt and Christian Rossert and Samuel F. Berkovic and Christopher A. Reid and David B. Grayden and Sean L. Hill and Steven Petrou}, + journal = {Proceedings of the National Academy of Sciences}, + title = {GABA-mediated tonic inhibition differentially modulates gain in functional subtypes of cortical interneurons}, + year = {2020}, + number = {6}, + pages = {3192-3202}, + volume = {117}, + abstract = {The binding of GABA (γ-aminobutyric acid) to extrasynaptic GABAA receptors generates tonic inhibition that acts as a powerful modulator of cortical network activity. Despite GABA being present throughout the extracellular space of the brain, previous work has shown that GABA may differentially modulate the excitability of neuron subtypes according to variation in chloride gradient. Here, using biophysically detailed neuron models, we predict that tonic inhibition can differentially modulate the excitability of neuron subtypes according to variation in electrophysiological properties. Surprisingly, tonic inhibition increased the responsiveness (or gain) in models with features typical for somatostatin interneurons but decreased gain in models with features typical for parvalbumin interneurons. Patch-clamp recordings from cortical interneurons supported these predictions, and further in silico analysis was then performed to seek a putative mechanism underlying gain modulation. We found that gain modulation in models was dependent upon the magnitude of tonic current generated at depolarized membrane potential—a property associated with outward rectifying GABAA receptors. Furthermore, tonic inhibition produced two biophysical changes in models of relevance to neuronal excitability: 1) enhanced action potential repolarization via increased current flow into the dendritic compartment, and 2) reduced activation of voltage-dependent potassium channels. Finally, we show theoretically that reduced potassium channel activation selectively increases gain in models possessing action potential dynamics typical for somatostatin interneurons. Potassium channels in parvalbumin-type models deactivate rapidly and are unavailable for further modulation. These findings show that GABA can differentially modulate interneuron excitability and suggest a mechanism through which this occurs in silico via differences of intrinsic electrophysiological properties.}, + doi = {10.1073/pnas.1906369117}, +} @article{Bayraktar,