From de4006ba39f20899d3b7d565153221c3b7a697d5 Mon Sep 17 00:00:00 2001 From: PaulJonasJost Date: Thu, 20 Jun 2024 12:07:46 +0200 Subject: [PATCH 1/2] Further distinction between initial value override based on parameter or value. --- .../roadrunner/petab_importer_roadrunner.py | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/pypesto/objective/roadrunner/petab_importer_roadrunner.py b/pypesto/objective/roadrunner/petab_importer_roadrunner.py index 88feed223..202b758dd 100644 --- a/pypesto/objective/roadrunner/petab_importer_roadrunner.py +++ b/pypesto/objective/roadrunner/petab_importer_roadrunner.py @@ -211,15 +211,41 @@ def create_parameter_mapping(self): preeq_id = condition.get(PREEQUILIBRATION_CONDITION_ID) sim_id = condition.get(SIMULATION_CONDITION_ID) if preeq_id: - mapping_per_condition[0][ - override - ] = self.petab_problem.condition_df.loc[preeq_id, override] - mapping_per_condition[2][override] = "lin" + parameter_id_or_value = ( + self.petab_problem.condition_df.loc[preeq_id, override] + ) + mapping_per_condition[0][override] = parameter_id_or_value + if isinstance(parameter_id_or_value, str): + mapping_per_condition[2][ + override + ] = self.petab_problem.parameter_df.loc[ + parameter_id_or_value, "parameterScale" + ] + elif isinstance(parameter_id_or_value, numbers.Number): + mapping_per_condition[2][override] = "lin" + else: + raise ValueError( + "The parameter value in the condition table " + "is not a number or a parameter_id." + ) if sim_id: - mapping_per_condition[1][ - override - ] = self.petab_problem.condition_df.loc[sim_id, override] - mapping_per_condition[3][override] = "lin" + parameter_id_or_value = ( + self.petab_problem.condition_df.loc[sim_id, override] + ) + mapping_per_condition[1][override] = parameter_id_or_value + if isinstance(parameter_id_or_value, str): + mapping_per_condition[3][ + override + ] = self.petab_problem.parameter_df.loc[ + parameter_id_or_value, "parameterScale" + ] + elif isinstance(parameter_id_or_value, numbers.Number): + mapping_per_condition[3][override] = "lin" + else: + raise ValueError( + "The parameter value in the condition table " + "is not a number or a parameter_id." + ) return mapping def create_objective( From 91cc859a0e745867e65af104e7792ff057da831c Mon Sep 17 00:00:00 2001 From: PaulJonasJost Date: Tue, 25 Jun 2024 14:38:52 +0200 Subject: [PATCH 2/2] Suggestions from PR --- .../roadrunner/petab_importer_roadrunner.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pypesto/objective/roadrunner/petab_importer_roadrunner.py b/pypesto/objective/roadrunner/petab_importer_roadrunner.py index 202b758dd..4d8b4d2ba 100644 --- a/pypesto/objective/roadrunner/petab_importer_roadrunner.py +++ b/pypesto/objective/roadrunner/petab_importer_roadrunner.py @@ -24,6 +24,8 @@ from petab.models.sbml_model import SbmlModel from petab.parameter_mapping import ParMappingDictQuadruple +import pypesto.C + from ...petab.importer import PetabStartpoints from ...problem import Problem from ...startpoint import StartpointMethod @@ -219,14 +221,14 @@ def create_parameter_mapping(self): mapping_per_condition[2][ override ] = self.petab_problem.parameter_df.loc[ - parameter_id_or_value, "parameterScale" + parameter_id_or_value, petab.PARAMETER_SCALE ] elif isinstance(parameter_id_or_value, numbers.Number): - mapping_per_condition[2][override] = "lin" + mapping_per_condition[2][override] = pypesto.C.LIN else: raise ValueError( "The parameter value in the condition table " - "is not a number or a parameter_id." + "is not a number or a parameter ID." ) if sim_id: parameter_id_or_value = ( @@ -237,14 +239,14 @@ def create_parameter_mapping(self): mapping_per_condition[3][ override ] = self.petab_problem.parameter_df.loc[ - parameter_id_or_value, "parameterScale" + parameter_id_or_value, petab.PARAMETER_SCALE ] elif isinstance(parameter_id_or_value, numbers.Number): - mapping_per_condition[3][override] = "lin" + mapping_per_condition[3][override] = pypesto.C.LIN else: raise ValueError( "The parameter value in the condition table " - "is not a number or a parameter_id." + "is not a number or a parameter ID." ) return mapping