From d67befb25c6c11dfcc65fc0bbd044697b7ecc060 Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Tue, 14 Oct 2025 09:43:24 +0200 Subject: [PATCH] Fix serialization of priorParameters Incorrectly expected strings instead of floats. --- petab/v2/core.py | 6 ++++-- tests/v2/test_core.py | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/petab/v2/core.py b/petab/v2/core.py index 6d117f92..57916a8f 100644 --- a/petab/v2/core.py +++ b/petab/v2/core.py @@ -977,8 +977,10 @@ def _serialize_prior_distribution( return str(prior_distribution) @field_serializer("prior_parameters") - def _serialize_prior_parameters(self, prior_parameters: list[str], _info): - return C.PARAMETER_SEPARATOR.join(prior_parameters) + def _serialize_prior_parameters( + self, prior_parameters: list[float], _info + ) -> str: + return C.PARAMETER_SEPARATOR.join(map(str, prior_parameters)) @model_validator(mode="after") def _validate(self) -> Self: diff --git a/tests/v2/test_core.py b/tests/v2/test_core.py index e38f31f1..0a1fe915 100644 --- a/tests/v2/test_core.py +++ b/tests/v2/test_core.py @@ -266,6 +266,29 @@ def test_parameter(): with pytest.raises(ValidationError, match="less than"): Parameter(id="k1", lb=2, ub=1) + assert Parameter( + id="k1", estimate=True, lb=1, ub=2, prior_parameters=[1, 2] + ).model_dump() == { + "id": "k1", + "lb": 1.0, + "ub": 2.0, + "nominal_value": None, + "estimate": "true", + "prior_distribution": "", + "prior_parameters": "1.0;2.0", + } + assert Parameter( + id="k1", estimate=False, nominal_value="8" + ).model_dump() == { + "id": "k1", + "lb": None, + "ub": None, + "nominal_value": 8.0, + "estimate": "false", + "prior_distribution": "", + "prior_parameters": "", + } + def test_experiment(): Experiment(id="experiment1")