import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


# read the csv file extracted from sedml file
data = pd.read_csv('Figure2.csv')


# define the x and y axis and match the units
X = data[data.keys()[0]]*1000
Y1 = data[data.keys()[18]]
Y2 = data[data.keys()[17]]*1000/57
Y3 = data[data.keys()[6]]
Y4 = data[data.keys()[7]]*1000/57
Y5 = data[data.keys()[10]]*1000/57
Y6 = data[data.keys()[5]]
Y7 = data[data.keys()[9]]*1000/57
Y8 = data[data.keys()[11]]*1000/57
Y9 = data[data.keys()[13]]*1000/57
Y10 = data[data.keys()[8]]*1000/57
Y11 = data[data.keys()[3]]*1000
Y12 = data[data.keys()[14]]*1000/57
Y13 = data[data.keys()[15]]*1000/57
Y14 = data[data.keys()[4]]*1e6
Y15 = data[data.keys()[12]]*1000/57
Y16 = data[data.keys()[16]]*1000/57
Y17 = data[data.keys()[1]]
Y18 = data[data.keys()[2]]

plt.figure(figsize=(14,16))

plt.subplot(6,2,1)
plt.plot(X, Y1, 'navy' ,linestyle='-',  label = '',linewidth=3)


plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.ylim(-70, 30)
plt.yticks(np.arange(-60, 30, 20))
plt.ylabel ('V$_m$ (mV)',fontsize=12)
# plt.xlabel ('Time(ms)',fontsize=12)
plt.title('A', loc= 'left', y = 1.05, x= -0.06 ,fontsize=20)
plt.grid()


plt.subplot(6,2,2)
plt.plot(X, Y1, 'navy' ,linestyle='-',  label = '',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.ylim(-70, 30)
plt.yticks(np.arange(-60, 30, 20))
plt.ylabel ('V$_m$ (mV)',fontsize=12)
plt.grid()


plt.subplot(6,2,3)
plt.plot(X, Y2, 'navy' ,linestyle='-',  label = '',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.ylim(-8,3)
plt.yticks(np.arange(-8, 4,2))
plt.ylabel ('I$_{tot}$ (pA/pF)',fontsize=12)
plt.title('B', loc= 'left', y = 1.05, x= -0.06 ,fontsize=20)
plt.grid()


plt.subplot(6,2,4)
plt.plot(X, Y3, 'navy' ,linestyle='-',  label = '',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.yticks(np.arange(0, 310, 100))
plt.ylabel ('J$_{rel}$ (mM/s)',fontsize=12)

plt.title('G', loc= 'left', y = 1.05, x= -0.06 ,fontsize=20)
plt.grid()

plt.subplot(6,2,5)
plt.plot(X, Y4, 'navy' ,linestyle='-',  label = 'I$_{CaL}$',linewidth=3)
plt.plot(X, Y5, 'red' ,linestyle='-',  label = 'I$_{Kr}$',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.ylim(-8,3)
plt.yticks(np.arange(-8, 3, 2))
plt.ylabel ('(pA/pF)',fontsize=12)

plt.title('C', loc= 'left' , y = 1.05, x= -0.06,fontsize=20)
plt.grid()

plt.legend()

plt.subplot(6,2,6)
plt.plot(X, Y6, 'navy' ,linestyle='-',  label = 'I$_{CaL}$',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.yticks(np.arange(0, 1, 0.2))
plt.ylabel ('J$_{up}$ (mM/s)',fontsize=12)

plt.title('H', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()


plt.subplot(6,2,7)
plt.plot(X, Y7, 'navy' ,linestyle='-',  label = 'I$_{f}$',linewidth=3)
plt.plot(X, Y8, 'red' ,linestyle='-',  label = 'I$_{Ks}$',linewidth=3)
plt.plot(X, Y9, 'green' ,linestyle='-',  label = 'I$_{Na}$',linewidth=3)
plt.plot(X, Y10, 'purple' ,linestyle='-',  label = 'I$_{CaT}$',linewidth=3)


plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.ylim(-0.1,0.051)
plt.yticks(np.arange(-0.1, 0.051, 0.05))
plt.ylabel ('(pA/pF)',fontsize=12)
plt.title('D', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()

plt.legend()

plt.subplot(6,2,8)
plt.plot(X, Y11, 'navy' ,linestyle='-',  label = 'I$_{CaL}$',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.yticks(np.arange(0, 3.1, 1))
plt.ylabel ('Ca$_{sub}$ (\u03BCM)',fontsize=12)
plt.title('I', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()


plt.subplot(6,2,9)
plt.plot(X, Y12, 'navy' ,linestyle='-',  label = 'I$_{NaCa}$',linewidth=3)
plt.plot(X, Y13, 'red' ,linestyle='-',  label = 'I$_{NaK}$',linewidth=3)



plt.xlim(0, 1600, 1000)
plt.xticks(np.arange(0,1700, 500))
plt.yticks(np.arange(-2, 1, 0.5))
plt.ylabel ('(pA/pF)',fontsize=12)
plt.title('E', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()

plt.legend()

plt.subplot(6,2,10)
plt.plot(X, Y14, 'navy' ,linestyle='-',  label = 'I$_{CaL}$',linewidth=3)

plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.yticks(np.arange(50, 250, 50))
plt.ylabel ('Ca$_i$ (nM)',fontsize=12)
plt.title('J', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()
plt.subplots_adjust(bottom=0.5, right=0.8, top=1)


plt.subplot(6,2,11)
plt.plot(X, Y15, 'navy' ,linestyle='-',  label = '$I_{Kur}$',linewidth=3)
plt.plot(X, Y16, 'red' ,linestyle='-',  label = '$I_{to}$',linewidth=3)


plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.yticks(np.arange(0, 0.5, 0.1))
plt.ylabel ('(pA/pF)',fontsize=12)
plt.xlabel ('Time (ms)',fontsize=12)
plt.title('F', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()
plt.subplots_adjust(bottom=0.5, right=0.8, top=1)

plt.legend()

plt.subplot(6,2,12)
plt.plot(X, Y17, 'navy' ,linestyle='-',  label = '$Ca_{jSR}$',linewidth=3)
plt.plot(X, Y18, 'red' ,linestyle='-',  label = '$Ca_{nSR}$',linewidth=3)


plt.xlim(0, 1600)
plt.xticks(np.arange(0,1600, 500))
plt.yticks(np.arange(0.1, 0.6, 0.1))
plt.ylabel ('(mM)',fontsize=12)
plt.xlabel ('Time (ms)',fontsize=12)
plt.title('K', loc= 'left', y = 1.05, x= -0.06,fontsize=20)
plt.grid()
plt.subplots_adjust(bottom=0.5, right=0.8, top=1)

plt.legend()
plt.tight_layout(pad=0.5, w_pad=3, h_pad=3)

plt.savefig('figure2.png')
plt.show()


