Skip to content

Commit 017746e

Browse files
authored
lint: Don't fail on missing noiseFormula (#367)
* lint: Don't fail on missing noiseFormula * Check measurements after observables Fixes #219.
1 parent 0ed48b7 commit 017746e

File tree

2 files changed

+29
-25
lines changed

2 files changed

+29
-25
lines changed

petab/v1/lint.py

+15-15
Original file line numberDiff line numberDiff line change
@@ -906,21 +906,6 @@ def lint_problem(problem: "petab.Problem") -> bool:
906906
else:
907907
logger.warning("Model not available. Skipping.")
908908

909-
if problem.measurement_df is not None:
910-
logger.info("Checking measurement table...")
911-
try:
912-
check_measurement_df(problem.measurement_df, problem.observable_df)
913-
914-
if problem.condition_df is not None:
915-
assert_measurement_conditions_present_in_condition_table(
916-
problem.measurement_df, problem.condition_df
917-
)
918-
except AssertionError as e:
919-
logger.error(e)
920-
errors_occurred = True
921-
else:
922-
logger.warning("Measurement table not available. Skipping.")
923-
924909
if problem.condition_df is not None:
925910
logger.info("Checking condition table...")
926911
try:
@@ -953,6 +938,21 @@ def lint_problem(problem: "petab.Problem") -> bool:
953938
else:
954939
logger.warning("Observable table not available. Skipping.")
955940

941+
if problem.measurement_df is not None:
942+
logger.info("Checking measurement table...")
943+
try:
944+
check_measurement_df(problem.measurement_df, problem.observable_df)
945+
946+
if problem.condition_df is not None:
947+
assert_measurement_conditions_present_in_condition_table(
948+
problem.measurement_df, problem.condition_df
949+
)
950+
except AssertionError as e:
951+
logger.error(e)
952+
errors_occurred = True
953+
else:
954+
logger.warning("Measurement table not available. Skipping.")
955+
956956
if problem.parameter_df is not None:
957957
logger.info("Checking parameter table...")
958958
try:

petab/v1/measurements.py

+14-10
Original file line numberDiff line numberDiff line change
@@ -277,16 +277,20 @@ def assert_overrides_match_parameter_count(
277277
strict=True,
278278
)
279279
}
280-
noise_parameters_count = {
281-
obs_id: len(
282-
observables.get_formula_placeholders(formula, obs_id, "noise")
283-
)
284-
for obs_id, formula in zip(
285-
observable_df.index.values,
286-
observable_df[NOISE_FORMULA],
287-
strict=True,
288-
)
289-
}
280+
noise_parameters_count = (
281+
{
282+
obs_id: len(
283+
observables.get_formula_placeholders(formula, obs_id, "noise")
284+
)
285+
for obs_id, formula in zip(
286+
observable_df.index.values,
287+
observable_df[NOISE_FORMULA],
288+
strict=True,
289+
)
290+
}
291+
if NOISE_FORMULA in observable_df.columns
292+
else {obs_id: 0 for obs_id in observable_df.index.values}
293+
)
290294

291295
for _, row in measurement_df.iterrows():
292296
# check observable parameters

0 commit comments

Comments
 (0)