def create_assigment_rule(sbml_model: libsbml.Model, assignee_id: str, formula: str, rule_id: str = None, rule_name: str = None) -> libsbml.AssignmentRule: """Create SBML AssignmentRule Arguments: sbml_model: Model to add output to assignee_id: Target of assignment formula: Formula string for model output rule_id: SBML id for created rule rule_name: SBML name for created rule Returns: The created ``AssignmentRule`` """ warn("This function will be removed in future releases.", DeprecationWarning) if rule_id is None: rule_id = assignee_id if rule_name is None: rule_name = rule_id rule = sbml_model.createAssignmentRule() rule.setId(rule_id) rule.setName(rule_name) rule.setVariable(assignee_id) rule.setFormula(formula) return rule
def create_assigment_rule(sbml_model: libsbml.Model, assignee_id: str, formula: str, rule_id: str = None, rule_name: str = None): """Create SBML AssignmentRule Arguments: sbml_model: Model to add output to assignee_id: Target of assignment formula: Formula string for model output rule_id: SBML id for created rule rule_name: SBML name for created rule """ if rule_id is None: rule_id = assignee_id if rule_name is None: rule_name = rule_id rule = sbml_model.createAssignmentRule() rule.setId(rule_id) rule.setName(rule_name) rule.setVariable(assignee_id) rule.setFormula(formula) return rule
def add_interpolator_to_model(interpolator: "Interpolator", model: libsbml.Model) -> None: """Add interpolator to model. The parameters, formulas and rules have to be added to the SBML model. :param interpolator: :param model: Model :return: """ # create parameter pid = interpolator.yid # if parameter exists remove it if model.getParameter(pid): logger.warning( "Model contains parameter: {}. Parameter is removed.".format( pid)) model.removeParameter(pid) # if assignment rule exists remove it for rule in model.getListOfRules(): if rule.isAssignment(): if rule.getVariable() == pid: model.removeRule(rule) break p = model.createParameter() p.setId(pid) p.setName(pid) p.setConstant(False) # create rule rule = model.createAssignmentRule() rule.setVariable(pid) formula = interpolator.formula() ast_node = libsbml.parseL3FormulaWithModel(formula, model) if ast_node is None: logger.warning(libsbml.getLastParseL3Error()) else: rule.setMath(ast_node)
def _create_time(model: sbml.Model, time_var: str): """ Creates the time variable, add assignment to 'time' Arguments: model: the SBML model to which the species will be added. time_var: str, the time variable Returns: Raises: """ time_parameter = model.createParameter() time_parameter.setId(time_var) time_parameter.setName(time_var) time_parameter.setConstant(False) time_assignment = model.createAssignmentRule() time_assignment.setVariable(time_var) time_assignment.setMath(sbml.parseL3Formula('time'))
def _create_assignment(model: sbml.Model, assignment_id: str, formula: str): """ Creates an assignment rule, that assigns id to formula. Arguments: model: SBML model to which the assignment rule will be added. assignment_id: str, the id of the assignment rule formula: str: contains the equation for the assignment rule Returns: Raises: """ assignment_parameter = model.createParameter() assignment_parameter.setId(assignment_id) assignment_parameter.setName(assignment_id) assignment_parameter.setConstant(False) assignment_parameter.setUnits('dimensionless') assignment_rule = model.createAssignmentRule() assignment_rule.setVariable(assignment_id) assignment_rule.setMath(sbml.parseL3Formula(formula))