I am working with an inhouse kinetic model (SBML format) at ITQB NOVA, and while I can run simulations on MEWpy <= 0.1.28, latter versions of the package do not seem to work. After retesting, I can't get it to work on the older version too, as such I suspect its caused by an updated dependency, unfortunately I dont have the original environment saved.
{
IndexError Traceback (most recent call last)
Cell In[8], line 2
1 sim = KineticSimulation(model,timeout=0)
----> 2 res = sim.simulate(t_points=range(0,800,50))
3 res.find()
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\simulation\\kinetic.py:347, in KineticSimulation.simulate(self, parameters, initcon, factors, t_points)
345 warnings.warn(str(e))
346 else:
--> 347 status, sstateRates, sstateConc, t, y = kinetic_solve(self.model,
348 initConcentrations,
349 time_steps,
350 params,
351 _factors)
353 return KineticSimulationResult(self.model, status, factors=_factors, rates=sstateRates,
354 concentrations=sstateConc, t=t, y=y)
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\simulation\\kinetic.py:67, in kinetic_solve(model, y0, time_steps, parameters, factors)
50 \"\"\"Kinetic solve method that invokes an available ODE solver.
51
52 :param model: The kinetic model
(...)
63 :rtype: _type_
64 \"\"\"
66 rates = OrderedDict()
---> 67 f = model.get_ode(r_dict=rates, params=parameters, factors=factors)
68 solver = ode_solver_instance(f, KineticConfigurations.SOLVER_METHOD)
70 try:
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\model\\kinetic.py:740, in ODEModel.get_ode(self, r_dict, params, factors)
737 r = r_dict if r_dict is not None else dict()
739 np.seterr(divide='ignore', invalid='ignore')
--> 740 exec(self.build_ode(factors), globals())
741 ode_func = eval('ode_func')
743 return lambda t, y: ode_func(t, y, r, p, v)
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\model\\kinetic.py:696, in ODEModel.build_ode(self, factors, local)
693 v = {p_id: f\"v['{p_id}']\" for p_id in self.variable_params}
694 rmap = OrderedDict({**m, **c, **p, **v})
--> 696 parsed_rates = {r_id: ratelaw.parse_law(rmap, local=local)
697 for r_id, ratelaw in self.ratelaws.items()}
699 r = {r_id: f\"({parsed_rates[r_id]})\" for r_id in self.ratelaws.keys()}
701 rmap.update(r)
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\model\\kinetic.py:696, in <dictcomp>(.0)
693 v = {p_id: f\"v['{p_id}']\" for p_id in self.variable_params}
694 rmap = OrderedDict({**m, **c, **p, **v})
--> 696 parsed_rates = {r_id: ratelaw.parse_law(rmap, local=local)
697 for r_id, ratelaw in self.ratelaws.items()}
699 r = {r_id: f\"({parsed_rates[r_id]})\" for r_id in self.ratelaws.keys()}
701 rmap.update(r)
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\model\\kinetic.py:295, in KineticReaction.parse_law(self, map, local)
292 r_map = map.copy()
293 r_map.update(m)
--> 295 return self.replace(r_map, local=local)
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\model\\kinetic.py:195, in Rule.replace(self, parameters, local, infix, latex)
193 if local:
194 param.update(self.parameters)
--> 195 t = self.tree.replace(param)
196 if latex:
197 return Latex(t.to_latex()[0])
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\model\\kinetic.py:150, in Rule.tree(self)
144 \"\"\"Parsing tree of the law.
145
146 Returns:
147 Node: Root node of the parsing tree.
148 \"\"\"
149 if not self._tree:
--> 150 self._tree = build_tree(self.law, Arithmetic)
151 return self._tree
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\util\\parsing.py:742, in build_tree(exp, rules)
739 t = Node(f[0], Node(EMPTY_LEAF), build_tree(f[1], rules), 1)
740 elif len(f) == 3:
741 t = Node(
--> 742 f[0], build_tree(f[1], rules), build_tree(f[2], rules), 2
743 )
744 else:
745 t = Node(token)
File c:\\Code_Projects\\Master Thesis\\kinetic_modeling\\.venv\\lib\\site-packages\\mewpy\\util\\parsing.py:769, in build_tree(exp, rules)
767 t = Node(popped_item)
768 t1 = tree_stack.pop()
--> 769 t2 = tree_stack.pop()
770 t.right = t1
771 t.left = t2
IndexError: pop from empty list"
}
Hello,
I am working with an inhouse kinetic model (SBML format) at ITQB NOVA, and while I can run simulations on MEWpy <= 0.1.28, latter versions of the package do not seem to work. After retesting, I can't get it to work on the older version too, as such I suspect its caused by an updated dependency, unfortunately I dont have the original environment saved.
Running the following code:
Results in the following error:
Any idea what could be the problem?