linkml / schema-automator

Automated assistance for the schema development lifecycle
https://linkml.io/schema-automator/
BSD 3-Clause "New" or "Revised" License
36 stars 13 forks source link

infer_model.py intermittently has problems parsing dates in non date cols? #7

Closed turbomam closed 3 years ago

turbomam commented 3 years ago

May be exacerbated by specifying additional --enum-columnss?

Failure example

%     linkml-model-enrichment/linkml_model_enrichment/infer_model.py tsv2model \
        --class_name synbio_element \
        --schema_name Felix \
        --enum-columns element,species \
        local/Ontology_example_20210317_P2B1_allmods_categorytype_different_scores_per_mod-1.tsv > \
        local/Ontology_example_20210317_P2B1_allmods_categorytype_different_scores_per_mod-1.yaml
Traceback (most recent call last):
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/dateutil/parser/_parser.py", line 655, in parse
    ret = self._build_naive(res, default)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/dateutil/parser/_parser.py", line 1238, in _build_naive
    if cday > monthrange(cyear, cmonth)[1]:
  File "/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/calendar.py", line 124, in monthrange
    raise IllegalMonthError(month)
calendar.IllegalMonthError: bad month number 22; must be 1-12

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/linkml-model-enrichment/linkml_model_enrichment/infer_model.py", line 365, in <module>
    main()
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/linkml-model-enrichment/linkml_model_enrichment/infer_model.py", line 331, in tsv2model
    yamlobj = infer_model(tsvfile, **args)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/linkml-model-enrichment/linkml_model_enrichment/infer_model.py", line 57, in infer_model
    s['range'] = infer_range(s, vals, types)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/linkml-model-enrichment/linkml_model_enrichment/infer_model.py", line 163, in infer_range
    if all(is_date(v) for v in nn_vals):
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/linkml-model-enrichment/linkml_model_enrichment/infer_model.py", line 163, in <genexpr>
    if all(is_date(v) for v in nn_vals):
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/linkml-model-enrichment/linkml_model_enrichment/infer_model.py", line 193, in is_date
    parse(string, fuzzy=fuzzy)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/dateutil/parser/_parser.py", line 1374, in parse
    return DEFAULTPARSER.parse(timestr, **kwargs)
  File "/Users/MAM/Documents/gitrepos/schemas-for-schemaless/venv/lib/python3.9/site-packages/dateutil/parser/_parser.py", line 657, in parse
    six.raise_from(ParserError(e.args[0] + ": %s", timestr), e)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Immediately subsequent success with same command

 %     linkml-model-enrichment/linkml_model_enrichment/infer_model.py tsv2model \
        --class_name synbio_element \
        --schema_name Felix \
        --enum-columns element,species \
        local/Ontology_example_20210317_P2B1_allmods_categorytype_different_scores_per_mod-1.tsv > \
        local/Ontology_example_20210317_P2B1_allmods_categorytype_different_scores_per_mod-1.yaml
%
turbomam commented 3 years ago

Maybe I'm just using --enum-columns wrong? More explicit usage notes or error messages might help.

This runs to completion with no errors and both the species and element enums are created.

%     linkml-model-enrichment/linkml_model_enrichment/infer_model.py tsv2model \               
        --class_name synbio_element \
        --schema_name Felix_plus \
        --enum-columns species --enum-columns element \
        local/Ontology_example_20210317_P2B1_allmods_categorytype_different_scores_per_mod-1.tsv > \
        local/Ontology_example_20210317_P2B1_allmods_categorytype_different_scores_per_mod-1.yaml