Knowledge-Graph-Hub / kg-phenio

A Graph for experiments doing ML on ontologies.
BSD 3-Clause "New" or "Revised" License
6 stars 4 forks source link

Fix for using Biolink Model in PHENIO transform #137

Closed caufieldjh closed 4 months ago

caufieldjh commented 4 months ago

Encountering a new issue with the new Biolink:

Found KGX TSV edges at data/transformed/phenio/PhenioTransform_edges.tsv.
Adding node sources using kg_phenio/transform_utils/phenio/phenio_node_sources.yaml
2024-03-07_13:11:23 | INFO     | koza.app         | Transforming source: phenio_node_sources
Traceback (most recent call last):
  File "/home/harry/kg-phenio/run.py", line 100, in <module>
    cli()
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/home/harry/kg-phenio/run.py", line 75, in transform
    kg_transform(*args, **kwargs)
  File "/home/harry/kg-phenio/kg_phenio/transform.py", line 36, in transform
    t.run()
  File "/home/harry/kg-phenio/kg_phenio/transform_utils/phenio/phenio_transform.py", line 73, in run
    self.parse(k, data_file, k)
  File "/home/harry/kg-phenio/kg_phenio/transform_utils/phenio/phenio_transform.py", line 181, in parse
    transform_source(
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/koza/cli_runner.py", line 86, in transform_source
    koza_app.process_sources()
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/koza/app.py", line 100, in process_sources
    transform_module = importlib.import_module(transform_code)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/harry/kg-phenio/kg_phenio/transform_utils/phenio/phenio_node_sources.py", line 125, in <module>
    importlib.import_module("biolink_model.datamodel.pydanticmodel_v2"), category_name
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/biolink_model/datamodel/pydanticmodel_v2.py", line 505, in <module>
    class NamedThing(Entity):
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py", line 183, in __new__
    complete_model_class(
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py", line 517, in complete_model_class
    schema = cls.__get_pydantic_core_schema__(cls, handler)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/main.py", line 584, in __get_pydantic_core_schema__
    return __handler(__source)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
    schema = self._handler(__source_type)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 499, in generate_schema
    schema = self._generate_schema(obj)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 737, in _generate_schema
    schema = self._post_process_generated_schema(self._generate_schema_inner(obj))
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 759, in _generate_schema_inner
    return self._model_schema(obj)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 572, in _model_schema
    {k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 572, in <dictcomp>
    {k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 923, in _generate_md_field_schema
    common_field = self._common_field_schema(name, field_info, decorators)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 1045, in _common_field_schema
    schema = self._apply_annotations(
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 1719, in _apply_annotations
    res = self._get_prepare_pydantic_annotations_for_known_type(source_type, tuple(annotations))
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py", line 1700, in _get_prepare_pydantic_annotations_for_known_type
    res = gen(obj, annotations, self._config_wrapper.config_dict)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_std_types_schema.py", line 411, in sequence_like_prepare_pydantic_annotations
    _known_annotated_metadata.check_metadata(metadata, _known_annotated_metadata.SEQUENCE_CONSTRAINTS, source_type)
  File "/home/harry/kg-phenio/.venv/lib/python3.9/site-packages/pydantic/_internal/_known_annotated_metadata.py", line 408, in check_metadata
    raise TypeError(
TypeError: The following constraints cannot be applied to typing.List[typing.Literal['https://w3id.org/biolink/vocab/NamedThing', 'biolink:NamedThing']]: 'pattern'
caufieldjh commented 4 months ago

With biolink-model most recent from GH repo (commit 82745c2), this appears to work as expected