Skip to content

Commit

Permalink
- fix an issue where expressions retrieved were wrong
Browse files Browse the repository at this point in the history
get_xxx functions now pass along the model parameter, so that the correct model elements can be found.
  • Loading branch information
fbergmann committed Mar 14, 2024
1 parent 1282b47 commit 606924a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
12 changes: 6 additions & 6 deletions basico/model_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,8 +370,8 @@ def get_species(name=None, exact=False, **kwargs):
'unit': unit,
'initial_concentration': metab.getInitialConcentration(),
'initial_particle_number': metab.getInitialValue(),
'initial_expression': _replace_cns_with_names(metab.getInitialExpression()),
'expression': _replace_cns_with_names(metab.getExpression()),
'initial_expression': _replace_cns_with_names(metab.getInitialExpression(), model=dm),
'expression': _replace_cns_with_names(metab.getExpression(), model=dm),
'concentration': metab.getConcentration(),
'particle_number': metab.getValue(),
'rate': metab.getConcentrationRate(),
Expand Down Expand Up @@ -2206,9 +2206,9 @@ def get_compartments(name=None, exact=False, **kwargs):
'type': __status_to_string(compartment.getStatus()),
'unit': unit,
'initial_size': compartment.getInitialValue(),
'initial_expression': _replace_cns_with_names(compartment.getInitialExpression()),
'initial_expression': _replace_cns_with_names(compartment.getInitialExpression(), model=dm),
'dimensionality': compartment.getDimensionality(),
'expression': _replace_cns_with_names(compartment.getExpression()),
'expression': _replace_cns_with_names(compartment.getExpression(), model=dm),
'size': compartment.getValue(),
'rate': compartment.getRate(),
'key': compartment.getKey(),
Expand Down Expand Up @@ -2281,8 +2281,8 @@ def get_parameters(name=None, exact=False, **kwargs):
'type': __status_to_string(param.getStatus()),
'unit': unit,
'initial_value': param.getInitialValue(),
'initial_expression': _replace_cns_with_names(param.getInitialExpression()),
'expression': _replace_cns_with_names(param.getExpression()),
'initial_expression': _replace_cns_with_names(param.getInitialExpression(), model=dm),
'expression': _replace_cns_with_names(param.getExpression(), model=dm),
'value': param.getValue(),
'rate': param.getRate(),
'key': param.getKey(),
Expand Down
13 changes: 13 additions & 0 deletions tests/test_basico_info.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
from math import exp
import sys
import unittest
import basico
Expand Down Expand Up @@ -518,6 +519,18 @@ def test_parameter_sets(self):

basico.remove_datamodel(dm)

def test_retrieval_from_multiple_models(self):
dm1 = basico.load_example('bruss')
basico.add_parameter('xy_sum', expression='[X] + [Y]', type='assignment')
basico.add_parameter('xy_initial_half', expression='Values[xy_sum].InitialValue / 2', type='assignment')
param1 = basico.as_dict(basico.get_parameters())
dm2 = basico.new_model(name='empty')
param2 = basico.as_dict(basico.get_parameters(model=dm1))
self.assertEqual(len(param1), len(param2))
self.assertEqual(param1[0]['expression'], param2[0]['expression'])
self.assertEqual(param1[1]['expression'], param2[1]['expression'])
basico.remove_datamodel(dm1)
basico.remove_datamodel(dm2)

if __name__ == "__main__":
unittest.main()

0 comments on commit 606924a

Please sign in to comment.