From ad2732e6b822b1fe17792c4dc0100e6ee36db652 Mon Sep 17 00:00:00 2001 From: Ben Gyori Date: Mon, 10 Jul 2023 05:42:20 -0400 Subject: [PATCH] Fix and test parameter normalization --- mira/metamodel/ops.py | 6 +++--- tests/test_ops.py | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mira/metamodel/ops.py b/mira/metamodel/ops.py index d7d0d5b24..640de95e5 100644 --- a/mira/metamodel/ops.py +++ b/mira/metamodel/ops.py @@ -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 diff --git a/tests/test_ops.py b/tests/test_ops.py index a04ceab3e..7666cd100 100644 --- a/tests/test_ops.py +++ b/tests/test_ops.py @@ -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')) @@ -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