Source code for cardioemulator._transform_emulator

import json
from scipy import interpolate
import copy
from ._emulator import Emulator

[docs]def transform_ES_elastance(emulator_data, factor): """ Transform an emulator by applying a multiplicative factor to end systolic elastance. Parameters ---------- emulator_data : str, dict or Emulator Emulator to be transformed. factor : float Multiplicative factor for end systolic elastance. Returns ------- emulator : Emulator Transformed emulator. """ if isinstance(emulator_data, str): with open(emulator_data) as json_file: emulator_data = json.load(json_file) if isinstance(emulator_data, Emulator): emulator_data = emulator_data.data emulator_data_new = copy.deepcopy(emulator_data) emulator_data_new['ESPV']['E'] *= factor return Emulator(emulator_data_new)
[docs]def transform_time_shift(emulator_data, time_lag): """ Transform an emulator by shifting in time the activation pattern. Parameters ---------- emulator_data : str, dict or Emulator Emulator to be transformed. time_lag : float [s] Time lag. Returns ------- emulator : Emulator Transformed emulator. """ if isinstance(emulator_data, str): with open(emulator_data) as json_file: emulator_data = json.load(json_file) if isinstance(emulator_data, Emulator): emulator_data = emulator_data.data activation_base = interpolate.interp1d(emulator_data['activation']['t'], emulator_data['activation']['v']) activation = lambda t: activation_base(t % emulator_data['period']) emulator_data_new = copy.deepcopy(emulator_data) emulator_data_new['activation']['v'] = activation(emulator_data['activation']['t'] - time_lag) return Emulator(emulator_data_new)