Location: Reproducibility of the computational model of induced pluripotent stem-cell derived cardiomyocytes @ 039d86eef7a8 / Fig11 / fig11-IK1.py

Author:
nima <nafs080@aucklanduni.ac.nz>
Date:
2021-10-20 17:20:29+13:00
Desc:
Updated documentation
Permanent Source URI:
https://models.cellml.org/workspace/702/rawfile/039d86eef7a89663b867710b506bd7a266fcdbeb/Fig11/fig11-IK1.py

import scipy.io as sio
import numpy as np
import os

# To reproduce Figure 11 in the associated Physiome paper,
# execute this script from the command line:
#
#   cd [PathToThisFile]
#   [PathToOpenCOR]/pythonshell fig11-IK1.py

import matplotlib

matplotlib.use('agg')

import matplotlib.pyplot as plt

import opencor as opencor


data = sio.loadmat('Param_Ik1')

# print(sorted(data.keys()))
# print(data['all_parameters'].shape)
xK1_spont= data['all_parameters_spont'][:,16:22]

all_params_XK1= data['all_parameters'][:,16:22]
variations= len(xK1_spont[:, 0])

cell2plot=8000
if (cell2plot>variations):
        cell2plot = variations
else:
        pass

# for i in range(0,3580):
#     print((xK1_spont[i, 0]))
root = "C:/Nima/ABI/Physiome Journal/pluripotent stem cell/src/cellml/I_K1/"


def load_sedml(filename):
    return opencor.open_simulation(os.path.join(root, filename))


def get_data(filename):
    data = filename.data()
    data.set_ending_point(1)
    data.set_point_interval(1)
    return data

# print(len(xK1_spont))
def run_sim(data, filename):

    ik1_list = np.zeros((251, 5000))
    vm_plot = np.arange(-150, 101, 1)
    file = load_sedml(filename)
    for v in vm_plot:

        file.reset(True)
        file.clear_results()
        data.constants()["main/protocol"] = 2
        data.constants()["main/v"] = v
        for i in range(5000):
            data.constants()["main/var_1"] = xK1_spont[i, 0]
            data.constants()["main/var_2"] = xK1_spont[i, 1]
            data.constants()["main/var_3"] = xK1_spont[i, 2]
            data.constants()["main/var_4"] = xK1_spont[i, 3]
            data.constants()["main/var_5"] = xK1_spont[i, 4]
            data.constants()["main/var_6"] = xK1_spont[i, 5]
            file.run()
            ds = file.results().data_store()
            ik1_list[v, i] = ds.voi_and_variables()["main/i_k1"].values()[-1]
            print(ik1_list[v, i])
#
    return ik1_list


#
if __name__ == '__main__':
    Ik1_file = "IK1.sedml"

    Ik1 = load_sedml(Ik1_file)

    data1 = get_data(Ik1)

    Ik1_list = run_sim(data1, Ik1_file)

    vm_plot = np.arange(-150, 101, 1)

    plt.figure(figsize=(12, 12))
    plt.plot(vm_plot, Ik1_list, color='orange', linewidth=4)

    plt.show()