Skip to content

Commit

Permalink
Fix and test parameter normalization
Browse files Browse the repository at this point in the history
  • Loading branch information
bgyori committed Jul 11, 2023
1 parent f43fc83 commit ad2732e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
6 changes: 3 additions & 3 deletions mira/metamodel/ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -453,10 +453,10 @@ def counts_to_dimensionless(tm: TemplateModel,
for p_name, p in tm.parameters.items():
if p.units:
(coeff, exponent) = \
p.units.expression = \
p.units.expression.args[0].as_coeff_exponent(counts_unit_symbol)
p.units.expression.args[0].as_coeff_exponent(counts_unit_symbol)
if exponent:
p.units /= (counts_unit_symbol ** exponent)
p.units.expression = \
p.units.expression.args[0] / (counts_unit_symbol ** exponent)
p.value /= (norm_factor ** exponent)

return tm
8 changes: 8 additions & 0 deletions tests/test_ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,11 @@ def test_counts_to_dimensionless():
tm.initials['susceptible_population'].value = 1e5-1
tm.initials['infected_population'].value = 1
tm.initials['immune_population'].value = 0

tm.parameters['beta'].units = \
Unit(expression=1/(sympy.Symbol('person')*sympy.Symbol('day')))
old_beta = tm.parameters['beta'].value

for initial in tm.initials.values():
initial.concept.units = Unit(expression=sympy.Symbol('person'))

Expand All @@ -341,6 +346,9 @@ def test_counts_to_dimensionless():
for concept in template.get_concepts():
assert concept.units.expression.equals(1), concept.units

assert tm.parameters['beta'].units.expression.equals(1/sympy.Symbol('day'))
assert tm.parameters['beta'].value == old_beta*1e5

assert tm.initials['susceptible_population'].value == (1e5-1)/1e5
assert tm.initials['infected_population'].value == 1/1e5
assert tm.initials['immune_population'].value == 0
Expand Down

0 comments on commit ad2732e

Please sign in to comment.