# Author: Leyla Noroozbabaee # Date: 12/12/2021 # To reproduce Figure 6 from original paper, the python file 'Fig8_sim.py' should be run. import matplotlib.pyplot as plt import pandas as pd from sklearn import preprocessing import numpy as np # Figure name prefilename = 'Fig8' # Set figure dimension (width, height) in inches. fw, fh = 15, 10 # Set subplots subpRow, subpCol = 3, 2 ax, lns = {}, {} # This gives list with the colors from the cycle, which you can use to iterate over. cycle = plt.rcParams [ 'axes.prop_cycle' ].by_key() [ 'color' ] # Set subplots lfontsize, labelfontsize = 10, 15 # legend, label fontsize fig, axs = plt.subplots(subpRow, subpCol, figsize=(fw, fh), facecolor='w', edgecolor='k') fig.subplots_adjust(hspace = .3, wspace=.3) axs = axs.ravel() ca_i = [ 0.000005,0.00001, 0.00005, 0.00008, 0.0001, 0.0005, 0.0008, 0.001, 0.005, 0.008, 0.01, 0.05, 0.1, 0.5, 0.8, 1.0, 5.0, 8, 10, 50, 80, 100] print(ca_i) xassz = [] xassvh = [] xabssz = [] xabssvh = [] iBk_tot = [] for j in range(len(ca_i)): varName = np.array(["Time", "xass_z", "xass_vh", "xatc", "xass", "iBKa","xa", "v", "xabss_z", "xabss_vh", "xabtc", "xabss", "iBKab","xab"]) filename = '%s_%s.csv' % (prefilename,j) data = pd.read_csv(filename) v_data = data [varName[7]] xassz_data = max(data [ varName [ 1 ] ]) xassz.append(xassz_data) xassvh_data = max(data [ varName [ 2 ] ]) xassvh.append(xassvh_data) xabssz_data = max(data [ varName [ 8 ] ]) xabssz.append(xabssz_data) xabssvh_data = max(data [ varName [ 9 ] ]) xabssvh.append(xabssvh_data) xass_data = data [varName[4]] xatc_data = data [varName[3]] axs [ 2 ].plot(v_data, xass_data, 'b') axs [ 4 ].semilogy(v_data, xatc_data, 'b') xabss_data = data[varName [11]] xabtc_data = data[varName [10]] xab_data = data [ varName [13 ] ] axs [ 3 ].plot(v_data, xabss_data, 'b') axs [ 4 ].semilogy(v_data, xabtc_data, 'b') if j == 1 or j == 6: iBka_data = (data [ varName [ 5 ] ]) iBkab_data = (data [ varName [ 12 ] ]) iBk = 0.7 * iBka_data + 0.3 * iBkab_data axs [ 5 ].plot(v_data, iBk, 'k') ca_i = np.array(ca_i)*1000 axs[0].semilogx(ca_i, xassvh, '--b', ca_i, xabssvh, '--b') axs[1].semilogx(ca_i, xassz, 'b', ca_i, xabssz, '--b') # Set ylable # tit = ['Steady state','Steady state','Time constant (ms)','Time constant (ms)','I (normalised)','I (normalised)'] # cycle = plt.rcParams [ 'axes.prop_cycle' ].by_key() [ 'color' ] # # To add the extracted data from original paper to your plot, modify the path to have access to the # # "Extracted_data" # I_V = [] # prefilename = 'Fig8_5' # # V =[-60] # # V =[50, 40, 30, 25, 20, 10, 0,-10,-20,-30,-40,-50,-60, -70,-80] # V = [-40,-30,-20,-10,0, 10 ] # #for i in range(5,10): # for i in range(len(V)): # filename5 = '%s_%s.csv' % (prefilename, 5) # data5 = pd.read_csv(filename5) # print('filename', filename5) # ik2_data5 = data5 ['ik2'] # max_ik2_data5 = max(abs(data5 ['ik2'])) # filename = '%s_%s.csv' % (prefilename, i) # data = pd.read_csv(filename) # print('filename', filename) # time = data ['Time'] # ik2_data = data ['ik2'] # max_ik2_data = max(data['ik2']) # print('max_ik2_data', max_ik2_data5) # # if 5 <= i < 11: # axs [ 4 ].plot(time / 1000, ik2_data/max_ik2_data5 , color=cycle [ i % 4 ]) # axs [ 5 ].plot(time / 1000, ik2_data / max_ik2_data5, color=cycle [ i % 4 ]) # axs [ 4 ].set_xlim([ 0, 10 ]) # axs [ 5 ].set_xlim([ 0, 0.5 ]) # #axs [4].plot( time, ik2_data, color=cycle [i % 4]) # MAX_I_V = (min(ik2_data / max_ik2_data5)) # I_V.append(MAX_I_V ) # # # # v_clamp =[50, 40, 30, 25, 20, 10, 0,-10,-20,-30,-40,-50,-60, -70,-80] # # print(I_V) # # axs[5].plot(V, I_V, '-b')# y_data = data [ var [ i ] # prefilename = 'Fig8' # # # for i in range(6): # # filename = '%s_%s.csv' % (prefilename, i+1) # # data = pd.read_csv(filename) # # data = pd.read_csv(filename) # # y_d = data [ 'Curve1' ] # # x_d = data [ 'x' ] # # axs [ i ].plot(x_d, y_d, 'k*') # # # axs [ i ].set_xlim([ -90, 60 ]) # # axs [ i ].set_xlabel('V (mV)', fontsize=labelfontsize) # # axs [ i ].set_ylabel('%s' % (tit [ i ]), fontsize=labelfontsize) # # if i == 0 or i == 3: # # y_d_2 = data [ 'Curve2' ] # # axs [ 0 ].plot(x_d, y_d_2, 'k*') # # #axs [ 3 ].plot(x_d, y_d_2, 'k*') # # elif i == 1: # # # y_d_2 = data [ 'Curve1' ] # # axs [ 1 ].semilogy(x_d, y_d, 'k*') # # elif i == 2: # # y_d_2 = data [ 'Curve2' ] # # axs [ i ].semilogy(x_d, y_d, 'k*', x_d, y_d_2, 'k*') # # # # elif i == 4 or i == 5 : # # y_d_2 = data [ 'Curve2' ] # # y_d_3 = data [ 'Curve3' ] # # y_d_4 = data [ 'Curve4' ] # # y_d_5 = data [ 'Curve5' ] # # axs [ 4 ].plot(x_d, y_d_2, '*', x_d, y_d_3, '*', x_d, y_d_4, '*', x_d, y_d_5, '*', color=cycle [ i % 4 ]) # # axs [ 5 ].plot(x_d, y_d_2, '*', x_d, y_d_3, '*', x_d, y_d_4, '*', x_d, y_d_5, '*', color=cycle [ i % 4 ]) # # # axs [ i ].set_xlim([ 0, 50 ]) # # axs [ i ].set_xlabel('Time (ms)', fontsize=labelfontsize) # # # axs [ i ].set_ylim([ -1, 0 ]) # # # # axs [i].set_xlabel('V (mV)', fontsize=labelfontsize) # # axs [i].set_ylabel('%s' % (tit[i]),fontsize=labelfontsize) # # # # # prefilename = 'Fig8_4' # prename = 'max_ik2' # # V =[-60] # # V =[50, 40, 30, 25, 20, 10, 0,-10,-20,-30,-40,-50,-60, -70,-80] # V_max = [ -30, -20, -10, 0, 10,20,30,40,-30, -20, -10, 0, 10,20,30,40] # V = [ -30, -20, -10, 0, 10,20,30,40] # I_max = [] # for j in range(2): # # name = '%s_%s' % (prename, j) # name = [] # for i in range(len(V)): # filename = '%s_%s_%s.csv' % (prefilename, j,i)# % (prefilename, 0) # print('filename', filename) # data = pd.read_csv(filename) # # print('filename', filename5) # ik2_data = data ['v'] # max_ik2_data1 = max((data ['ik2'])) # # print(I_max) # # filename = '%s_%s_%s.csv' % (prefilename, j,i) # # data = pd.read_csv(filename) # # print('filename', filename) # # time = data ['Time'] # # ik2_data = data ['ik2'] # # v_data = data [ 'v' ] # v_max = np.reshape(V_max, (1,-1)) # if max_ik2_data1 < 0: # MAX_I_V = abs((max(data ['ik2']))) # else: # MAX_I_V =abs((max(data ['ik2']))) # I_max.append(MAX_I_V ) # # print(max_ik2_data) # axs [ 3 ].plot(V_max, np.array(I_max), '*k') # # figfiles = '%s.png' % (prefilename) # plt.savefig(figfiles) plt.show() ##axs[1].semilogy( v_data, htc_data, 'b', v_data, mtc_data, 'r')