Location: Computational analysis of the human sinus node action potential @ cce2f4422134 / Figure06.py

Author:
nima <nafs080@aucklanduni.ac.nz>
Date:
2021-05-05 10:08:43+12:00
Desc:
Run the model for longer time and capture the results at different time in order to make sure the simulation gets to steady state.
Permanent Source URI:
https://staging.physiomeproject.org/workspace/648/rawfile/cce2f4422134edf6acdb765a9cdd9ff5e69b3006/Figure06.py

# To reproduce the data needed for Figure 4 in associated Physiome paper,
# execute this script in the Python console in OpenCOR. This can be done
# with the following commands at the prompt in the OpenCOR Python console:
#
#     In [1]: cd path/to/folder_this_file_is_in
#     In [2]: %run Figure04.py
#

import opencor as opencor
import numpy as np

#different values for gf to decrease the If
K_NaCa = [1.6715, 0.3343]

# Time = {}
# load the reference model
simulation = opencor.open_simulation("HumanSAN_Fabbri_Fantini_Wilders_Severi_2017.sedml")
data = simulation.data()
data.set_ending_point(1.8)
data.set_point_interval(0.001)

simulation.reset(True)
#
#
# simulation.run()
results = np.zeros((13, 1801))

for value in range(len(K_NaCa)):
    simulation.reset(True)
    simulation.clear_results()

    data.constants()["i_NaCa/K_NaCa"] = K_NaCa[value]

    for i in range (8):
        simulation.run()
        simulation.clear_results()

    simulation.run()

    ds = simulation.results().data_store()

    results[value] = ds.voi_and_variables()["Membrane/V"].values()
    # print(results)
simulation.reset(True)
simulation.clear_results()
data.constants()["i_NaCa/K_NaCa"] = 0.83575

for i in range(3):
    simulation.run()
    simulation.clear_results()

simulation.run()

ds = simulation.results().data_store()

results[3] = ds.voi_and_variables()["Membrane/V"].values()

simulation.reset(True)
simulation.clear_results()
data.constants()["i_NaCa/K_NaCa"] = 3.343

for i in range(42):
    simulation.run()
    simulation.clear_results()

simulation.run()

ds = simulation.results().data_store()

results[2] = ds.voi_and_variables()["Membrane/V"].values()


for i in range(0,1):
    for i in range (3):
        simulation.run()
        simulation.clear_results()
    simulation.run()

    ds = simulation.results().data_store()
    results[4] = ds.voi_and_variables()["environment/time"].values()

for value in range(len(K_NaCa)):
    simulation.reset(True)
    simulation.clear_results()

    data.constants()["i_NaCa/K_NaCa"] = K_NaCa[value]
    for i in range (8):
        simulation.run()
        simulation.clear_results()
    simulation.run()

    ds = simulation.results().data_store()

    results[value+5] = ds.voi_and_variables()["Ca_dynamics/Cai"].values()

simulation.reset(True)
simulation.clear_results()
data.constants()["i_NaCa/K_NaCa"] = 0.83575

for i in range(3):
    simulation.run()
    simulation.clear_results()

simulation.run()

ds = simulation.results().data_store()

results[8] = ds.voi_and_variables()["Ca_dynamics/Cai"].values()

simulation.reset(True)
simulation.clear_results()
data.constants()["i_NaCa/K_NaCa"] = 3.343

for i in range(42):
    simulation.run()
    simulation.clear_results()

simulation.run()

ds = simulation.results().data_store()

results[7] = ds.voi_and_variables()["Ca_dynamics/Cai"].values()

for value in range(len(K_NaCa)):
    simulation.reset(True)
    simulation.clear_results()

    data.constants()["i_NaCa/K_NaCa"] = K_NaCa[value]
    for i in range(8):
        simulation.run()
        simulation.clear_results()
    simulation.run()

    ds = simulation.results().data_store()

    results[value+9] = ds.voi_and_variables()["i_NaCa/i_NaCa"].values()


simulation.reset(True)
simulation.clear_results()
data.constants()["i_NaCa/K_NaCa"] = 0.83575

for i in range(3):
    simulation.run()
    simulation.clear_results()

simulation.run()

ds = simulation.results().data_store()

results[12] = ds.voi_and_variables()["i_NaCa/i_NaCa"].values()

simulation.reset(True)
simulation.clear_results()
data.constants()["i_NaCa/K_NaCa"] = 3.343

for i in range(42):
    simulation.run()
    simulation.clear_results()

simulation.run()

ds = simulation.results().data_store()

results[11] = ds.voi_and_variables()["i_NaCa/i_NaCa"].values()

# print(type(Time))
# print(type(V_m))


# print(V_m)

np.savetxt("Fig06.csv", results[:13].T, fmt='%.4e', delimiter=',')

#
# for k in K_NaCa:
#     # reset everything in case we are running interactively and have existing results
#     simulation.reset(True)
#     simulation.clear_results()
#
#     data.constants()["i_NaCa/K_NaCa"] = k
#     simulation.run()
#     ds = simulation.results().data_store()
#     # Time = ds.voi_and_variables()["environment/time"].values()
#     V_m[k] = ds.voi_and_variables()["Membrane/V"].values()
#
#     # print((V_m))
#     # for key, value in glucose_i.items():
#     #     print(key, value)
#
# 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()
#     print(Time)
#
# # print(type(Time))
# # print(type(V_m))
#
# V_m.update(Time)
# # print(V_m)
#
# Cai={}
# for k in K_NaCa:
#     # reset everything in case we are running interactively and have existing results
#     simulation.reset(True)
#     simulation.clear_results()
#
#     data.constants()["i_NaCa/K_NaCa"] = k
#     simulation.run()
#     ds = simulation.results().data_store()
#     # Time = ds.voi_and_variables()["environment/time"].values()
#     Cai[k] = ds.voi_and_variables()["Membrane/V"].values()
#
#     # print((V_m))
#     # for key, value in glucose_i.items():
#     #     print(key, value)
#
# simulation.reset(True)
# simulation.clear_results()
#
# # cache results for plotting
# outfile = open("Fig06.csv", 'w')
# cols = []
# for key, item in V_m.items():
#      outfile.write(str(key) + ",")
#      cols.append(item)
# outfile.write("\n")
#
#
# for i in range(0, len(cols[0])):
#     for j in range(0, len(cols)):
#         outfile.write(str(cols[j][i]) + ",")
#     outfile.write("\n")
# outfile.close()
#
#
#
#