PEtab-dev / libpetab-python

Python package for working with PEtab files
https://libpetab-python.readthedocs.io
MIT License
14 stars 5 forks source link

Validator does not check for required column `noiseFormula` in observables table #219

Open dweindl opened 11 months ago

dweindl commented 11 months ago

Validator does not check for presence of the required column noiseFormula in observables table

See also https://github.com/PEtab-dev/PEtab/issues/259

EDIT: The validator would check for noiseFormula, if it wouldn't already fail during validating the measurement table:

Traceback (most recent call last):
  File "bin/petablint", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/dweindl/src/libpetab-python/petab/petablint.py", line 132, in main
    ret = petab.lint.lint_problem(problem)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dweindl/src/libpetab-python/petab/lint.py", line 831, in lint_problem
    check_measurement_df(problem.measurement_df, problem.observable_df)
  File "/home/dweindl/src/libpetab-python/petab/lint.py", line 169, in check_measurement_df
    measurements.assert_overrides_match_parameter_count(
  File "/home/dweindl/src/libpetab-python/petab/measurements.py", line 256, in assert_overrides_match_parameter_count
    observable_df[NOISE_FORMULA])}
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "lib/python3.11/site-packages/pandas/core/frame.py", line 3761, in __getitem__
    indexer = self.columns.get_loc(key)
              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "lib/python3.11/site-packages/pandas/core/indexes/base.py", line 3655, in get_loc
    raise KeyError(key) from err
KeyError: 'noiseFormula'

So the problem is rather the order of the checks. And whether we want stop upon the first error, or continue checking other files.