@@ -739,3 +739,77 @@ def make_yaml(id_line: str) -> str:
739739 f .write (make_yaml ("" ))
740740 problem = Problem .from_yaml (filepath )
741741 assert problem .id is None
742+
743+
744+ def test_parameter_accessors (): # pylint: disable=W0621
745+ """
746+ Test the petab.Problem functions to get parameter values.
747+ """
748+ petab_problem = Problem ()
749+ petab_problem += Parameter (
750+ id = "par1" , lb = 0 , ub = 100 , nominal_value = 7 , estimate = True
751+ )
752+ petab_problem += Parameter (
753+ id = "par2" , lb = 0.1 , ub = 100 , nominal_value = 8 , estimate = True
754+ )
755+ petab_problem += Parameter (
756+ id = "par3" , lb = 0.1 , ub = 200 , nominal_value = 9 , estimate = False
757+ )
758+
759+ assert petab_problem .x_ids == ["par1" , "par2" , "par3" ]
760+ assert petab_problem .x_free_ids == ["par1" , "par2" ]
761+ assert petab_problem .x_fixed_ids == ["par3" ]
762+ assert petab_problem .lb == [0 , 0.1 , 0.1 ]
763+ assert petab_problem .ub == [100 , 100 , 200 ]
764+ assert petab_problem .x_nominal == [7 , 8 , 9 ]
765+ assert petab_problem .x_nominal_free == [7 , 8 ]
766+ assert petab_problem .x_nominal_fixed == [9 ]
767+
768+ assert (
769+ petab_problem .get_x_nominal_dict ()
770+ == petab_problem .get_x_nominal_dict (free = True , fixed = True )
771+ == {
772+ "par1" : 7 ,
773+ "par2" : 8 ,
774+ "par3" : 9 ,
775+ }
776+ )
777+ assert petab_problem .get_x_nominal_dict (free = True , fixed = False ) == {
778+ "par1" : 7 ,
779+ "par2" : 8 ,
780+ }
781+ assert petab_problem .get_x_nominal_dict (free = False , fixed = True ) == {
782+ "par3" : 9 ,
783+ }
784+
785+
786+ def test_get_output_parameters ():
787+ """Test Problem.get_output_parameters"""
788+ petab_problem = Problem ()
789+ assert petab_problem .get_output_parameters () == []
790+
791+ petab_problem += Parameter (id = "p1" , lb = 0 , ub = 100 , estimate = True )
792+ petab_problem .models .append (SbmlModel .from_antimony ("p2 = 1" ))
793+ assert petab_problem .get_output_parameters () == []
794+
795+ petab_problem += Observable (
796+ id = "obs1" , formula = "p1 + p2" , noise_formula = "p1 * p2"
797+ )
798+ assert petab_problem .get_output_parameters () == ["p1" ]
799+
800+ petab_problem += Observable (
801+ id = "obs1" ,
802+ formula = "p3 + p4" ,
803+ noise_formula = "p3 * p5" ,
804+ )
805+ assert (
806+ petab_problem .get_output_parameters ()
807+ == petab_problem .get_output_parameters (observables = True , noise = True )
808+ == ["p1" , "p3" , "p4" , "p5" ]
809+ )
810+ assert petab_problem .get_output_parameters (
811+ observables = True , noise = False
812+ ) == ["p1" , "p3" , "p4" ]
813+ assert petab_problem .get_output_parameters (
814+ observables = False , noise = True
815+ ) == ["p1" , "p3" , "p5" ]
0 commit comments