Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
mid = var.getModelReference()
selection = SEDMLCodeFactory.selectionFromVariable(var, mid)
expr = selection.id
if selection.type == 'concentration':
expr = "init([{}])".format(selection.id)
elif selection.type == 'amount':
expr = "init({})".format(selection.id)
# create variable
lines.append("__value__{} = {}['{}']".format(vid, mid, expr))
# variable for replacement
variables[vid] = "__value__{}".format(vid)
# value is calculated with the current state of model
lines.append(SEDMLCodeFactory.targetToPython(xpath=setValue.getTarget(),
value=evaluableMathML(setValue.getMath(), variables=variables),
modelId=setValue.getModelReference())
)
# handle result variable
resultVariable = "{}[0]".format(task.getId())
# -------------------------------------------------------------------------
#
# -------------------------------------------------------------------------
if simType == libsedml.SEDML_SIMULATION_UNIFORMTIMECOURSE:
lines.append("{}.timeCourseSelections = {}".format(mid, list(selections)))
initialTime = simulation.getInitialTime()
outputStartTime = simulation.getOutputStartTime()
outputEndTime = simulation.getOutputEndTime()
numberOfPoints = simulation.getNumberOfPoints()
variables = {}
for par in change.getListOfParameters():
variables[par.getId()] = par.getValue()
for var in change.getListOfVariables():
vid = var.getId()
selection = SEDMLCodeFactory.selectionFromVariable(var, mid)
expr = selection.id
if selection.type == "concentration":
expr = "init([{}])".format(selection.id)
elif selection.type == "amount":
expr = "init({})".format(selection.id)
lines.append("__var__{} = {}['{}']".format(vid, mid, expr))
variables[vid] = "__var__{}".format(vid)
# value is calculated with the current state of model
value = evaluableMathML(change.getMath(), variables=variables)
lines.append(SEDMLCodeFactory.targetToPython(xpath, value, modelId=mid))
elif change.getTypeCode() in [libsedml.SEDML_CHANGE_REMOVEXML,
libsedml.SEDML_CHANGE_ADDXML,
libsedml.SEDML_CHANGE_CHANGEXML]:
lines.append("# Unsupported change: {}".format(change.getElementName()))
warnings.warn("Unsupported change: {}".format(change.getElementName()))
else:
lines.append("# Unsupported change: {}".format(change.getElementName()))
warnings.warn("Unsupported change: {}".format(change.getElementName()))
return lines
lines.append("__var__{} = np.transpose(np.array([sim['{}'] for sim in {}]))".format(varId, sid, taskId))
lines.append("__var__{} = np.concatenate(np.transpose(__var__{}))".format(varId, varId))
lines.append("if len(__var__{}.shape) == 1:".format(varId))
lines.append(" __var__{}.shape += (1,)".format(varId))
# check for data sources
else:
target = var.getTarget()
if target.startswith('#'):
sid = target[1:]
lines.append("__var__{} = {}".format(varId, sid))
else:
warnings.warn("Unknown target in variable, no reference to SId: {}".format(target))
# calculate data generator
value = evaluableMathML(mathml, variables=variables, array=True)
lines.append("{} = {}".format(gid, value))
return "\n".join(lines)
variables[key] = "__value__{}".format(key)
# parameters
for par in r.getListOfParameters():
variables[par.getId()] = par.getValue()
for var in r.getListOfVariables():
vid = var.getId()
mid = var.getModelReference()
selection = SEDMLCodeFactory.selectionFromVariable(var, mid)
expr = selection.id
if selection.type == 'concentration':
expr = "[{}]".format(selection.id)
lines.append("__value__{} = {}['{}']".format(vid, mid, expr))
variables[vid] = "__value__{}".format(vid)
# value is calculated with the current state of model
value = evaluableMathML(r.getMath(), variables=variables)
forLines.append("__value__{} = {}".format(r.getId(), value))
#
# models to reset via task tree below node
mids = set([])
for child in node:
t = child.task
if t.getTypeCode() == libsedml.SEDML_TASK:
mids.add(t.getModelReference())
# reset models referenced in tree below task
for mid in mids:
if task.getResetModel():
# reset before every iteration
forLines.append("{}.reset()".format(mid))
else:
# reset before first iteration