Skip to content

Validator: handle undefined observables more gracefully #300

@dweindl

Description

@dweindl

What happens if measurement table contains an observableId that is not defined in the observables table:

  File "PEtab/petab/lint.py", line 127, in check_measurement_df
    trafo = observable_df.loc[obs_id, OBSERVABLE_TRANSFORMATION]
  File "lib/python3.7/site-packages/pandas/core/indexing.py", line 1761, in __getitem__
    return self._getitem_tuple(key)
  File "lib/python3.7/site-packages/pandas/core/indexing.py", line 1271, in _getitem_tuple
    return self._getitem_lowerdim(tup)
  File "lib/python3.7/site-packages/pandas/core/indexing.py", line 1388, in _getitem_lowerdim
    section = self._getitem_axis(key, axis=i)
  File "lib/python3.7/site-packages/pandas/core/indexing.py", line 1964, in _getitem_axis
    return self._get_label(key, axis=axis)
  File "lib/python3.7/site-packages/pandas/core/indexing.py", line 624, in _get_label
    return self.obj._xs(label, axis=axis)
  File "lib/python3.7/site-packages/pandas/core/generic.py", line 3537, in xs
    loc = self.index.get_loc(key)
  File "lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2648, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1618, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'K27me0K36me0'

What should have happened:
A more informative message should be printed (and potentially validation should continue)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions