from Delta_Vrs_data import axonal_stimulation, somatic_stimulation
"""Select whether you wish to plot axonal stimulation or somatic stimulation data:
"""
data = axonal_stimulation
# data = somatic_stimulation
"""
Or import some data from a dictionary that was created using database_to_dictionary.py:
"""
# from data_dict_2024_02_09__23_22_26 import data
from sorcery import print_args
import numpy as np
import sqlite3
import pandas as pd
pd.set_option('display.max_colwidth', None)
from pylatex import NoEscape
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import rc
xlim = ylim = (None, None); show_legend=True #<---default (don't touch)
label_size = 20
legend_size = 17
line_width = 3
# matplotlib.rcParams['figure.titlesize'] = label_size
# matplotlib.rcParams['axes.titlesize'] = label_size
matplotlib.rcParams['xtick.labelsize'] = label_size
matplotlib.rcParams['ytick.labelsize'] = label_size
matplotlib.rcParams['axes.labelsize'] = label_size*1.3
matplotlib.rcParams['legend.fontsize'] = legend_size
matplotlib.rcParams['legend.title_fontsize'] = legend_size
matplotlib.rcParams['lines.linewidth'] = line_width
############################################################################
###matplotlib LaTeX settings################################################
rc('text', usetex=True) ; latex_preamble = r''
latex_preamble += r'\usepackage{stix}'
latex_preamble += r'\usepackage{amsmath}'
rc('text.latex', preamble=latex_preamble) ;
rc('font', **{'family': 'STIXGeneral', 'serif': ['Times']})
############################################################################
# plotly_colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']
plotly_colors = ['#636EFA', '#EF553B', '#00CC96', '#AB63FA', '#FFA15A', '#19D3F3', '#FF6692', '#B6E880', '#FF97FF', '#FECB52']
plotly_symbols = ['o', 's', 'D', 'P', 'X', '^', 'v', '*']
fig = plt.figure(figsize=(6.8,7))
ax = fig.add_subplot(1, 1, 1)
ax.tick_params(left=True, right=True)
################################################################################################
###Build the figure#############################################################################
################################################################################################ = 'Qthresh' ###'vpeak_SDtips', 'Qthresh'
ylabel = r'${I_{BP} \ \ [nA]}$'
xlabel = r'${ \Delta V_{RS}} \ \ [mV]$'
### Customize figure settings for axonal versus somatic stimulation data
if data == axonal_stimulation:
xlim = (-2.0, 2.0)
ylim = (-0.2, 10.0)
show_legend=False
filename=r'VRSaxonal_BackpropThresh'
pass
elif data == somatic_stimulation:
xlim = (-5.2, 5.2)
ylim = (None, None)
show_legend=True
filename=r'VRSsomatic_BackpropThresh'
pass
else:
filename=r'Vrs_new'
###Settings specific to "Reference Curve" (the curve where all gating properties are right-shifted)
ref_curve_width=5.5/2
ref_curve_markerSize=27.0/2
###Width of other curves in the plot
standard_curve_width=0.63*ref_curve_width
standard_curve_markerSize=0.63*ref_curve_markerSize
###Count the plots
index=0
###Load, sort and plot the data
for j in range(len(data['stimLoc'])):
stimLoc = data['stimLoc'][j]
CrossOverPosition = data['CrossOverPosition'][j]
activate_DeltaVrs_minf2__inAIS = data['activate_DeltaVrs_minf2__inAIS'][j]
activate_DeltaVrs_mtau2__inAIS = data['activate_DeltaVrs_mtau2__inAIS'][j]
activate_DeltaVrs_hinf2__inAIS = data['activate_DeltaVrs_hinf2__inAIS'][j]
activate_DeltaVrs_htau2__inAIS = data['activate_DeltaVrs_htau2__inAIS'][j]
print('-----------------------------------')
print_args(CrossOverPosition)
print_args(activate_DeltaVrs_minf2__inAIS)
print_args(activate_DeltaVrs_mtau2__inAIS)
print_args(activate_DeltaVrs_hinf2__inAIS)
print_args(activate_DeltaVrs_htau2__inAIS)
print('-----------------------------------')
###Get the data for this curve
ydata = np.array(data['Qthresh'][j], dtype=float)
vRS = np.array(data['DeltaVrs'][j], dtype=float)
Nav_text = r'\text{Na\textsubscript{V}1.2}'
m_inf = False
m_tau = False
h_inf = False
h_tau = False
title = 'Stimulation Site: '+str(stimLoc)
addOn_text = r' \huge${'
width=standard_curve_width
marker_size=standard_curve_markerSize
check_ref_curve=0
if activate_DeltaVrs_minf2__inAIS:
addOn_text+= r' m^{^{'+Nav_text+r'}}_{\infty},'#\cdot'
check_ref_curve+=1
m_inf = True
if activate_DeltaVrs_mtau2__inAIS:
addOn_text+= r' \tau^{^{'+Nav_text+r'}}_{m},'#\cdot'
check_ref_curve+=1
m_tau = True
if activate_DeltaVrs_hinf2__inAIS:
addOn_text+= r' h^{^{'+Nav_text+r'}}_{\infty},'#\cdot'
check_ref_curve+=1
h_inf = True
if activate_DeltaVrs_htau2__inAIS:
addOn_text+= r' \tau^{^{'+Nav_text+r'}}_{h},'#\cdot'
check_ref_curve+=1
h_tau = True
if addOn_text[-1] == r',':
addOn_text = addOn_text[:-1]
# if addOn_text[-5:] == r'\cdot':
# addOn_text = addOn_text[:-5]
addOn_text+= r'\qquad }$'
if check_ref_curve==4:
width=ref_curve_width
marker_size = ref_curve_markerSize
addOn_text = 'Reference Curve'
###Select range of x-values to be plottted
if (xlim[0] is not None) and (xlim[1] is not None):
data_range = np.where( ((vRS >= xlim[0]) & (vRS <= xlim[1])))
vRS_plot = vRS[data_range]
ydata_plot = ydata[data_range]
else:
vRS_plot = vRS
ydata_plot = ydata
###Plot the data
plt.plot(vRS_plot, ydata_plot, color=plotly_colors[index], marker=plotly_symbols[index], markersize=marker_size, linewidth=width, label=addOn_text)#label=r'Separation: $x$')#, label=NoEscape(addOn_text))
index+=1
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.xlim(xlim)
plt.ylim(ylim)
if show_legend:
plt.legend()
plt.savefig(filename+'.pdf')
plt.show()