- Author:
- nima <nafs080@aucklanduni.ac.nz>
- Date:
- 2021-09-14 11:51:06+12:00
- Desc:
- matplotlib.use('agg') is added
- Permanent Source URI:
- https://models.physiomeproject.org/workspace/648/rawfile/2408209b761288e46e32e5ad86d7ee30ae110579/Figure4.py
# To reproduce Figure 4 in the associated Physiome paper,
# execute this script from the command line:
#
# cd [PathToThisFile]
# [PathToOpenCOR]/pythonshell Figure4.py
import matplotlib
matplotlib.use('agg')
import numpy as np
import matplotlib.pyplot as plt
import opencor as opencor
# different values for gf to decrease the If
g_f_1 = [0.00427, 0.002989, 0.001281, 0.000427, 0]
t = ["time"]
V_m = {}
# load the reference model
simulation = opencor.open_simulation("Figure4.sedml")
data = simulation.data()
data.set_ending_point(1.9)
data.set_point_interval(0.001)
for gf in g_f_1:
# reset everything in case we are running interactively and have existing results
simulation.reset(True)
simulation.clear_results()
data.constants()["i_f/g_f_1"] = gf
simulation.run()
ds = simulation.results().data_store()
V_m[gf] = ds.voi_and_variables()["Membrane/V"].values()
simulation.reset(True)
simulation.clear_results()
Time = {}
for i in range(0, 1):
simulation.run()
ds = simulation.results().data_store()
Time[t[0]] = ds.voi_and_variables()["environment/time"].values()
V_m.update(Time)
# define the x and y axis and match the units
X = V_m['time'] * 1000
Y1 = V_m[g_f_1[0]]
Y2 = V_m[g_f_1[1]]
Y3 = V_m[g_f_1[2]]
Y4 = V_m[g_f_1[3]]
Y5 = V_m[g_f_1[4]]
plt.figure(figsize=(14, 12))
plt.plot(X, Y1, 'navy', linestyle='-', label='Control', linewidth=3)
plt.plot(X, Y2, 'red', linestyle='-', label='Block 30%', linewidth=3)
plt.plot(X, Y3, 'green', linestyle='-', label='Block 70%', linewidth=3)
plt.plot(X, Y4, 'purple', linestyle='-', label='Block 90%', linewidth=3)
plt.plot(X, Y5, 'black', linestyle='-', label='Block 100%', linewidth=3)
plt.xlim(0, 1900)
plt.ylim(-60, 30)
plt.xticks(np.arange(0, 1900, 200))
plt.yticks(np.arange(-60, 35, 10))
plt.xlabel('Time (ms)', fontsize=24)
plt.ylabel('V$_m$ (mV)', fontsize=24)
plt.tick_params(axis='x', labelsize=24)
plt.tick_params(axis='y', labelsize=24)
plt.legend(bbox_to_anchor=(0.3, 0.9, 0.25, 0.09), loc='best', fontsize=22,
ncol=1, mode="expand", borderaxespad=0.)
plt.tight_layout(pad=0.5, w_pad=3, h_pad=3)
plt.savefig('Figure4.png')