import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.patches as patches
from matplotlib.patches import Rectangle


# read the csv file extracted from sedml file
data = pd.read_csv('Fig06.csv')

# define the x and y axis and match the units
X1 = data[data.keys()[4]]*1000
Y1 = data[data.keys()[2]]
Y2 = data[data.keys()[0]]
Y3 = data[data.keys()[3]]
Y4 = data[data.keys()[1]]
Y5 = data[data.keys()[7]]*1e6
Y6 = data[data.keys()[5]]*1e6
Y7 = data[data.keys()[8]]*1e6
Y8 = data[data.keys()[6]]*1e6
Y9 = data[data.keys()[11]]*1000/57
Y10 = data[data.keys()[9]]*1000/57
Y11 = data[data.keys()[12]]*1000/57
Y12 = data[data.keys()[10]]*1000/57





plt.figure(figsize=(16,14))
plt.subplot(2,2,1)

plt.plot(X1, Y1, 'navy',linestyle='-',  label = 'CTRL', linewidth= 3)
plt.plot(X1, Y2, 'red',linestyle='-',  label = 'Block 50%', linewidth= 3)
plt.plot(X1, Y3, 'green',linestyle='-',  label = 'Block 75%', linewidth= 3)
plt.plot(X1, Y4, 'purple',linestyle='-',  label = 'Block 90%', linewidth= 3)


plt.gca().add_patch(Rectangle((440,-65),695,30,linewidth=2,edgecolor='black', linestyle= '--',facecolor='none'))
plt.grid()
plt.xlim(0, 1800)
plt.ylim(-70,30)
plt.xticks(np.arange(0,1800, 500))

plt.tick_params(axis='both', labelsize=14)
plt.ylabel ('V$_m$ (mV)', fontsize=16)
plt.title('A',loc= 'left', y = 1.05, x= -0.06, fontsize='20')

plt.subplot(2,2,2)
plt.plot(X1, Y1, 'navy',linestyle='-',  label = 'CTRL', linewidth= 3)
plt.plot(X1, Y2, 'red',linestyle='-',  label = 'Block 50%', linewidth= 3)
plt.plot(X1, Y3, 'green',linestyle='-',  label = 'Block 75%', linewidth= 3)
plt.plot(X1, Y4, 'purple',linestyle='-',  label = 'Block 90%', linewidth= 3)



plt.grid()
plt.xlim(445, 1120)
plt.ylim(-63,-35)

plt.tick_params(axis='both', labelsize=14)
plt.ylabel ('V$_m$ (mV)', fontsize=16)
plt.title('B', loc= 'left', y = 1.05, x= -0.06, fontsize='20')


plt.subplot(2,2,3)
plt.plot(X1, Y5, 'navy',linestyle='-',  label = 'CTRL', linewidth= 3)
plt.plot(X1, Y6, 'red',linestyle='-',  label = 'Block 50%', linewidth= 3)
plt.plot(X1, Y7, 'green',linestyle='-',  label = 'Block 75%', linewidth= 3)
plt.plot(X1, Y8, 'purple',linestyle='-',  label = 'Block 90%', linewidth= 3)

plt.grid()
plt.xlim(0, 1800)
plt.xticks(np.arange(0,1800, 500))
plt.ylim(50,450)
plt.xlabel ('Time (ms)',fontsize=16)
plt.tick_params(axis='both', labelsize=14)
plt.ylabel ('[Ca$^{2+}]_i$ (nM)', fontsize=16)
plt.title('C', loc= 'left', y = 1.05, x= -0.06, fontsize='20')

plt.subplot(2,2,4)
plt.plot(X1, Y9, 'navy',linestyle='-',  label = 'CTRL', linewidth= 3)
plt.plot(X1, Y10, 'red',linestyle='-',  label = 'Block 50%', linewidth= 3)
plt.plot(X1, Y11, 'green',linestyle='-',  label = 'Block 75%', linewidth= 3)
plt.plot(X1, Y12, 'purple',linestyle='-',  label = 'Block 90%', linewidth= 3)

plt.grid()
plt.xlim(445, 1130)
plt.ylim(-0.16, 0.05)
plt.yticks(np.arange(-0.15,0.01, 0.05))
plt.xlabel ('Time (ms)',fontsize=16)
plt.tick_params(axis='both', labelsize=14)
plt.ylabel ('I$_{NaCa}$ (pA/pF)', fontsize=16)
plt.title('D', loc= 'left', y = 1.05, x= -0.06, fontsize='20')
plt.legend(bbox_to_anchor=(0., 0.85, 1, 0.1), loc='best',fontsize=14,
       ncol=10, mode="expand")


plt.tight_layout(pad=0.5, w_pad=3.5, h_pad=3)

plt.savefig('figure6.png')
plt.show()

