@@ -68,10 +68,10 @@ def petab_problem():
6868
6969 observable_df = pd .DataFrame (
7070 data = {
71- OBSERVABLE_ID : ["observable_1 " ],
71+ OBSERVABLE_ID : ["obs1 " ],
7272 OBSERVABLE_NAME : ["julius" ],
73- OBSERVABLE_FORMULA : ["observable_1" ],
74- NOISE_FORMULA : [1 ],
73+ OBSERVABLE_FORMULA : ["observable_1 * observableParameter1_obs1 " ],
74+ NOISE_FORMULA : ["0.1 * observable_1 * observableParameter1_obs1" ],
7575 }
7676 ).set_index (OBSERVABLE_ID )
7777
@@ -653,7 +653,7 @@ def test_concat_condition_df():
653653
654654def test_get_observable_ids (petab_problem ): # pylint: disable=W0621
655655 """Test if observable ids functions returns correct value."""
656- assert set (petab_problem .get_observable_ids ()) == {"observable_1 " }
656+ assert set (petab_problem .get_observable_ids ()) == {"obs1 " }
657657
658658
659659def test_parameter_properties (petab_problem ): # pylint: disable=W0621
@@ -823,3 +823,35 @@ def test_problem_from_yaml_v1_multiple_files():
823823 assert petab_problem .measurement_df .shape [0 ] == 2
824824 assert petab_problem .observable_df .shape [0 ] == 2
825825 assert petab_problem .condition_df .shape [0 ] == 2
826+
827+
828+ def test_get_required_parameters_for_parameter_table (petab_problem ):
829+ """Test identification of required parameter table parameters.
830+
831+ NB: currently, this test only checks that observable parameter placeholders
832+ in noise formulae are correctly identified as not required in the parameter
833+ table.
834+ """
835+ noise_placeholders = petab .observables .get_output_parameters (
836+ petab_problem .observable_df ,
837+ petab_problem .model ,
838+ observables = False ,
839+ noise = True ,
840+ )
841+ # The observable parameter (scaling) appears in the noise formula,
842+ # as part of the proportional error model.
843+ assert "observableParameter1_obs1" in noise_placeholders
844+
845+ required_parameters_for_parameter_table = \
846+ petab .parameters .get_required_parameters_for_parameter_table (
847+ model = petab_problem .model ,
848+ condition_df = petab_problem .condition_df ,
849+ observable_df = petab_problem .observable_df ,
850+ measurement_df = petab_problem .measurement_df ,
851+ )
852+ # The observable parameter is correctly recognized as a placeholder,
853+ # i.e. does not need to be in the parameter table.
854+ assert (
855+ "observableParameter1_obs1"
856+ not in required_parameters_for_parameter_table
857+ )
0 commit comments