Location: Computational analysis of the human sinus node action potential @ 4e662cb87f85 / Figure6.py

Author:
Alan Garny <agarny@hellix.com>
Date:
2021-06-11 09:51:39+12:00
Desc:
Removed CSV that can be regenerated. Figure1.csv and Figure2.csv can be generated by running Figure1.sedml and Figure2.sedml, respectively, and then exporting the simulation results to CSV. So, no need for those CSV files to be tracked.
Permanent Source URI:
https://staging.physiomeproject.org/workspace/648/rawfile/4e662cb87f8569d10d40251b876798d0d92f68f7/Figure6.py

# To reproduce the data needed for Figure 3 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 Figure6.py
#

import opencor as opencor
import numpy as np

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

# 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)

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()

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()


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