diff options
Diffstat (limited to 'workflows/tools')
-rw-r--r-- | workflows/tools/normalize/mapping.py | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/workflows/tools/normalize/mapping.py b/workflows/tools/normalize/mapping.py index 1d52b03..d2af3b5 100644 --- a/workflows/tools/normalize/mapping.py +++ b/workflows/tools/normalize/mapping.py @@ -13,6 +13,7 @@ # # Pjotr Prins (c) 2021 +import re import types def host_species(host,mapping): @@ -26,18 +27,37 @@ def host_species(host,mapping): warning = f"No URI mapping for host_species <{key}>" return host.__dict__,warning +Bronchoalveolar_Lavage_Fluid = "http://purl.obolibrary.org/obo/NCIT_C13195" +Saliva = "http://purl.obolibrary.org/obo/NCIT_C13275" +Nasal_Swab = "http://purl.obolibrary.org/obo/NCIT_C132119" +Frozen_Food = "https://www.wikidata.org/wiki/Q751728" + def specimen_source(sample,mapping): + SPECIMEN_TERMS = { + r".*swab": Nasal_Swab, + "saliva": Saliva, + "seafood": Frozen_Food, + "packaging": Frozen_Food + } warning = None sample = types.SimpleNamespace(**sample) + try: - if sample.specimen_source and not 'obolibrary' in sample.specimen_source: + if sample.specimen_source and \ + not 'obolibrary' in sample.specimen_source and \ + not 'wikidata' in sample.specimen_source: key = sample.specimen_source + sample.specimen_source = None if key in mapping: sample.specimen_source = mapping[key] else: - sample.specimen_source = None - warning = f"No URI mapping for specimen_source <{key}>" + for term in SPECIMEN_TERMS: + p = re.compile(term,re.IGNORECASE) + m = p.match(key) + if m: sample.specimen_source = SPECIMEN_TERMS[term] + if not sample.specimen_source: + warning = f"No URI mapping for specimen_source <{key}>" + if sample.specimen_source == None: del(sample.specimen_source) except AttributeError: pass - if not sample.specimen_source: del(sample.specimen_source) return sample.__dict__,warning |