diff --git a/pypesto/objective/base.py b/pypesto/objective/base.py index 0f9cc982a..e5212b31c 100644 --- a/pypesto/objective/base.py +++ b/pypesto/objective/base.py @@ -56,13 +56,6 @@ def __init__( self.pre_post_processor = PrePostProcessor() self.history = NoHistory() - def __deepcopy__(self, memodict=None) -> "ObjectiveBase": - """Create deepcopy of objective object.""" - other = type(self)() # maintain type for derived classes - for attr, val in self.__dict__.items(): - other.__dict__[attr] = copy.deepcopy(val) - return other - # The following has_ properties can be used to find out what values # the objective supports. @property diff --git a/test/base/test_roadrunner.py b/test/base/test_roadrunner.py index 43fd3cd16..bbff88ff7 100644 --- a/test/base/test_roadrunner.py +++ b/test/base/test_roadrunner.py @@ -1,7 +1,9 @@ """Test the roadrunner interface.""" - +import copy import logging +import os +import benchmark_models_petab as models import petab import petabtests import pytest @@ -104,3 +106,33 @@ def _execute_case_rr(case, model_type, version): ) logger.info(f"Case {version}/{model_type}/{case} passed.") + + +def test_deepcopy(): + """Test that deepcopy works as intended""" + model_name = "Boehm_JProteomeRes2014" + petab_problem = petab.Problem.from_yaml( + os.path.join(models.MODELS_DIR, model_name, model_name + ".yaml") + ) + petab_problem.model_name = model_name + importer = objective_rr.PetabImporterRR(petab_problem) + problem_parameters = petab_problem.x_nominal_free_scaled + + problem = importer.create_problem() + obj = problem.objective + + problem_copied = copy.deepcopy(problem) + copied_objective = problem_copied.objective + + assert obj(problem_parameters) == copied_objective(problem_parameters) + + # !!not adviced, only done here for testing purposes!! + obj.roadrunner_instance.removeParameter( + "pSTAT5A_rel", forceRegenerate=False + ) + obj.roadrunner_instance.addParameter("pSTAT5A_rel", 0.0, False) + obj.roadrunner_instance.addAssignmentRule( + "pSTAT5A_rel", "(100 * pApB + 200 * pApA * specC17)" + ) + + assert obj(problem_parameters) != copied_objective(problem_parameters)