Skip to content

Commit 1c3b759

Browse files
authored
Fix serialization of priorParameters (#449)
Incorrectly expected strings instead of floats.
1 parent 6f0891e commit 1c3b759

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

petab/v2/core.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -977,8 +977,10 @@ def _serialize_prior_distribution(
977977
return str(prior_distribution)
978978

979979
@field_serializer("prior_parameters")
980-
def _serialize_prior_parameters(self, prior_parameters: list[str], _info):
981-
return C.PARAMETER_SEPARATOR.join(prior_parameters)
980+
def _serialize_prior_parameters(
981+
self, prior_parameters: list[float], _info
982+
) -> str:
983+
return C.PARAMETER_SEPARATOR.join(map(str, prior_parameters))
982984

983985
@model_validator(mode="after")
984986
def _validate(self) -> Self:

tests/v2/test_core.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,29 @@ def test_parameter():
266266
with pytest.raises(ValidationError, match="less than"):
267267
Parameter(id="k1", lb=2, ub=1)
268268

269+
assert Parameter(
270+
id="k1", estimate=True, lb=1, ub=2, prior_parameters=[1, 2]
271+
).model_dump() == {
272+
"id": "k1",
273+
"lb": 1.0,
274+
"ub": 2.0,
275+
"nominal_value": None,
276+
"estimate": "true",
277+
"prior_distribution": "",
278+
"prior_parameters": "1.0;2.0",
279+
}
280+
assert Parameter(
281+
id="k1", estimate=False, nominal_value="8"
282+
).model_dump() == {
283+
"id": "k1",
284+
"lb": None,
285+
"ub": None,
286+
"nominal_value": 8.0,
287+
"estimate": "false",
288+
"prior_distribution": "",
289+
"prior_parameters": "",
290+
}
291+
269292

270293
def test_experiment():
271294
Experiment(id="experiment1")

0 commit comments

Comments
 (0)