Skip to content

Commit 4468248

Browse files
dilpathdweindl
andauthored
Helper method to scale or unscale problem parameters (#78)
Co-authored-by: Daniel Weindl <[email protected]>
1 parent 1bf7e0f commit 4468248

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

petab/problem.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,54 @@ def sample_parameter_startpoints(self, n_starts: int = 100):
727727
return sampling.sample_parameter_startpoints(
728728
self.parameter_df, n_starts=n_starts)
729729

730+
def unscale_parameters(
731+
self,
732+
x_dict: Dict[str, float],
733+
) -> Dict[str, float]:
734+
"""Unscale parameter values.
735+
736+
Parameters
737+
----------
738+
x_dict:
739+
Keys are parameter IDs in the PEtab problem, values are scaled
740+
parameter values.
741+
742+
Returns
743+
-------
744+
The unscaled parameter values.
745+
"""
746+
return {
747+
parameter_id: parameters.unscale(
748+
parameter_value,
749+
self.parameter_df[PARAMETER_SCALE][parameter_id],
750+
)
751+
for parameter_id, parameter_value in x_dict.items()
752+
}
753+
754+
def scale_parameters(
755+
self,
756+
x_dict: Dict[str, float],
757+
) -> Dict[str, float]:
758+
"""Scale parameter values.
759+
760+
Parameters
761+
----------
762+
x_dict:
763+
Keys are parameter IDs in the PEtab problem, values are unscaled
764+
parameter values.
765+
766+
Returns
767+
-------
768+
The scaled parameter values.
769+
"""
770+
return {
771+
parameter_id: parameters.scale(
772+
parameter_value,
773+
self.parameter_df[PARAMETER_SCALE][parameter_id],
774+
)
775+
for parameter_id, parameter_value in x_dict.items()
776+
}
777+
730778

731779
def get_default_condition_file_name(model_name: str, folder: str = ''):
732780
"""Get file name according to proposed convention"""

0 commit comments

Comments
 (0)