From ad1aebce8a7e10b6117348647280a1b1a0f11943 Mon Sep 17 00:00:00 2001 From: Martin Larralde Date: Thu, 8 Aug 2019 23:30:53 +0200 Subject: [PATCH] Use `fastobo` to load ontologies from OBO files --- ontobio/ontol_factory.py | 9 +++++++++ requirements.txt | 1 + setup.py | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ontobio/ontol_factory.py b/ontobio/ontol_factory.py index fe54f147..8bcbcd85 100644 --- a/ontobio/ontol_factory.py +++ b/ontobio/ontol_factory.py @@ -13,8 +13,10 @@ import os import subprocess import hashlib +import fastobo from cachier import cachier import datetime +import tempfile SHELF_LIFE = datetime.timedelta(days=3) @@ -159,6 +161,13 @@ def translate_file_to_ontology(handle, **args): logging.info("RdfMapper: {}".format(args)) m = RdfMapper(**args) return m.convert(handle,'ttl') + elif handle.endswith(".obo"): + doc = fastobo.load(handle) + with tempfile.TemporaryFile() as tmp: + fastobo.dump_graph(doc, tmp) + tmp.seek(0) + g = obograph_util.convert_json_object(json.load(tmp), **args) + return Ontology(handle=handle, payload=g) else: if not (handle.endswith(".obo") or handle.endswith(".owl")): logging.info("Attempting to parse non obo or owl file with owltools: "+handle) diff --git a/requirements.txt b/requirements.txt index ed1d1e87..13a2ada5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,3 +23,4 @@ cachier==1.1.8 plotly==2.0.7 pyyaml yamldown>=0.1.7 +fastobo~=0.3.1 diff --git a/setup.py b/setup.py index 24b82cbf..08c16c73 100644 --- a/setup.py +++ b/setup.py @@ -57,7 +57,8 @@ 'pandas==0.24.2', 'click==7.0', 'yamldown', - 'dataclasses' + 'dataclasses', + 'fastobo~=0.3.1', ], # List additional groups of dependencies here (e.g. development