@@ -396,7 +396,7 @@ def run(self, problem: Problem) -> ValidationIssue | None:
396396 if problem .model
397397 else set ()
398398 )
399- allowed_targets |= set (get_output_parameters (problem ))
399+ allowed_targets |= set (problem . get_output_parameters ())
400400 allowed_targets |= {
401401 m .petab_id for m in problem .mappings if m .model_id is not None
402402 }
@@ -932,7 +932,7 @@ def get_valid_parameters_for_parameter_table(
932932 parameter_ids [mapping .petab_id ] = None
933933
934934 # add output parameters from observable table
935- output_parameters = get_output_parameters (problem )
935+ output_parameters = problem . get_output_parameters ()
936936 for p in output_parameters :
937937 if p not in invalid :
938938 parameter_ids [p ] = None
@@ -996,19 +996,18 @@ def append_overrides(overrides):
996996 for formula_type , placeholder_sources in (
997997 (
998998 # Observable formulae
999- {"observables " : True , "noise" : False },
999+ {"observable " : True , "noise" : False },
10001000 # can only contain observable placeholders
1001- {"noise" : False , "observables " : True },
1001+ {"noise" : False , "observable " : True },
10021002 ),
10031003 (
10041004 # Noise formulae
1005- {"observables " : False , "noise" : True },
1005+ {"observable " : False , "noise" : True },
10061006 # can contain noise and observable placeholders
1007- {"noise" : True , "observables " : True },
1007+ {"noise" : True , "observable " : True },
10081008 ),
10091009 ):
1010- output_parameters = get_output_parameters (
1011- problem ,
1010+ output_parameters = problem .get_output_parameters (
10121011 ** formula_type ,
10131012 )
10141013 placeholders = get_placeholders (
@@ -1034,77 +1033,17 @@ def append_overrides(overrides):
10341033 return parameter_ids
10351034
10361035
1037- def get_output_parameters (
1038- problem : Problem ,
1039- observables : bool = True ,
1040- noise : bool = True ,
1041- ) -> list [str ]:
1042- """Get output parameters
1043-
1044- Returns IDs of symbols used in observable and noise formulas that are
1045- not observables and that are not defined in the model.
1046-
1047- Arguments:
1048- problem: The PEtab problem
1049- observables: Include parameters from observableFormulas
1050- noise: Include parameters from noiseFormulas
1051-
1052- Returns:
1053- List of output parameter IDs, including any placeholder parameters.
1054- """
1055- # collect free symbols from observable and noise formulas,
1056- # skipping observable IDs
1057- candidates = set ()
1058- if observables :
1059- candidates |= {
1060- str_sym
1061- for o in problem .observables
1062- if o .formula is not None
1063- for sym in o .formula .free_symbols
1064- if (str_sym := str (sym )) != o .id
1065- }
1066- if noise :
1067- candidates |= {
1068- str_sym
1069- for o in problem .observables
1070- if o .noise_formula is not None
1071- for sym in o .noise_formula .free_symbols
1072- if (str_sym := str (sym )) != o .id
1073- }
1074-
1075- output_parameters = OrderedDict ()
1076-
1077- # filter out symbols that are defined in the model or mapped to
1078- # such symbols
1079- for candidate in sorted (candidates ):
1080- if problem .model .symbol_allowed_in_observable_formula (candidate ):
1081- continue
1082-
1083- # does it map to a model entity?
1084- for mapping in problem .mappings :
1085- if mapping .petab_id == candidate and mapping .model_id is not None :
1086- if problem .model .symbol_allowed_in_observable_formula (
1087- mapping .model_id
1088- ):
1089- break
1090- else :
1091- # no mapping to a model entity, so it is an output parameter
1092- output_parameters [candidate ] = None
1093-
1094- return list (output_parameters .keys ())
1095-
1096-
10971036def get_placeholders (
10981037 problem : Problem ,
1099- observables : bool = True ,
1038+ observable : bool = True ,
11001039 noise : bool = True ,
11011040) -> list [str ]:
11021041 """Get all placeholder parameters from observable table observableFormulas
11031042 and noiseFormulas.
11041043
11051044 Arguments:
11061045 problem: The PEtab problem
1107- observables : Include parameters from observableFormulas
1046+ observable : Include parameters from observableFormulas
11081047 noise: Include parameters from noiseFormulas
11091048
11101049 Returns:
@@ -1115,7 +1054,7 @@ def get_placeholders(
11151054 # {observable,noise}Parameters
11161055 placeholders = []
11171056 for o in problem .observables :
1118- if observables :
1057+ if observable :
11191058 placeholders .extend (map (str , o .observable_placeholders ))
11201059 if noise :
11211060 placeholders .extend (map (str , o .noise_placeholders ))
0 commit comments