From 3a9c486925864f68b990a24896def6439c7d5aec Mon Sep 17 00:00:00 2001 From: james stevenson Date: Sun, 3 Oct 2021 18:29:47 -0400 Subject: [PATCH] Add OncoTree (#20) * Add initial OncoTree getter * Add oncotree homepage * linting fixes Co-authored-by: Charles Tapley Hoyt --- src/bioversions/sources/__init__.py | 2 ++ src/bioversions/sources/oncotree.py | 40 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/bioversions/sources/oncotree.py diff --git a/src/bioversions/sources/__init__.py b/src/bioversions/sources/__init__.py index ab8be248..a8919e41 100644 --- a/src/bioversions/sources/__init__.py +++ b/src/bioversions/sources/__init__.py @@ -33,6 +33,7 @@ from .npass import NPASSGetter from .obo import iter_obo_getters from .ols import extend_ols_getters +from .oncotree import OncoTreeGetter from .pathbank import PathBankGetter from .pfam import PfamGetter from .pombase import PombaseGetter @@ -94,6 +95,7 @@ def get_getters() -> List[Type[Getter]]: NCItGetter, RxNormGetter, ChemIDplusGetter, + OncoTreeGetter, MOAlmanacGetter, ] getters.extend(iter_obo_getters()) diff --git a/src/bioversions/sources/oncotree.py b/src/bioversions/sources/oncotree.py new file mode 100644 index 00000000..bb4c6995 --- /dev/null +++ b/src/bioversions/sources/oncotree.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +"""A getter for OncoTree.""" + +import requests + +from ..utils import Getter, VersionType + + +__all__ = [ + "OncoTreeGetter", +] + + +class OncoTreeGetter(Getter): + """A getter for OncoTree.""" + + bioregistry_id = "oncotree" + name = "OncoTree" + homepage_fmt = "http://oncotree.mskcc.org/api/tumorTypes?version=oncotree_{version}" + version_type = VersionType.date + date_version_fmt = "%Y-%m-%d" + + def get(self) -> str: + """Get the latest OncoTree version number.""" + res = requests.get("http://oncotree.mskcc.org/api/versions", params={"format": "json"}) + res_json = res.json() + version = next( + (r["release_date"] for r in res_json if r["api_identifier"] == "oncotree_latest_stable") + ) + return version + + @staticmethod + def homepage_version_transform(version: str) -> str: + """Reformat version value for OncoTree data URL.""" + return version.replace("-", "_") + + +if __name__ == "__main__": + OncoTreeGetter.print()