Skip to content

Commit a0501f0

Browse files
committed
Add v2.Problem.model_dump
Convert a Problem to a dict.
1 parent 8614c02 commit a0501f0

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

petab/v2/problem.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,46 @@ def __iadd__(self, other):
10961096
)
10971097
return self
10981098

1099+
def model_dump(self, **kwargs) -> dict[str, Any]:
1100+
"""Convert this Problem to a dictionary.
1101+
1102+
See `pydantic.BaseModel.model_dump <https://docs.pydantic.dev/latest/api/base_model/#pydantic.BaseModel.model_dump>`__
1103+
for details.
1104+
1105+
:example:
1106+
1107+
>>> from pprint import pprint
1108+
>>> p = Problem()
1109+
>>> p += core.Parameter(id="par", lb=0, ub=1)
1110+
>>> pprint(p.model_dump())
1111+
{'conditions': [],
1112+
'config': {'extensions': [],
1113+
'format_version': '2.0.0',
1114+
'parameter_file': None,
1115+
'problems': []},
1116+
'experiments': [],
1117+
'mappings': [],
1118+
'measurements': [],
1119+
'observables': [],
1120+
'parameters': [{'estimate': 'true',
1121+
'id': 'par',
1122+
'lb': 0.0,
1123+
'nominal_value': None,
1124+
'scale': <ParameterScale.LIN: 'lin'>,
1125+
'ub': 1.0}]}
1126+
"""
1127+
res = {
1128+
"config": (self.config or ProblemConfig()).model_dump(**kwargs),
1129+
}
1130+
res |= self.mapping_table.model_dump(**kwargs)
1131+
res |= self.condition_table.model_dump(**kwargs)
1132+
res |= self.experiment_table.model_dump(**kwargs)
1133+
res |= self.observable_table.model_dump(**kwargs)
1134+
res |= self.measurement_table.model_dump(**kwargs)
1135+
res |= self.parameter_table.model_dump(**kwargs)
1136+
1137+
return res
1138+
10991139

11001140
class ModelFile(BaseModel):
11011141
"""A file in the PEtab problem configuration."""

0 commit comments

Comments
 (0)