Skip to content

Commit a700837

Browse files
authored
Generalize is_metadata_tag (#520)
From the OBO data model, this is just a boolean. This PR generalizes the TypeDef object to keep track of an enumeration of the three possibilities (annotation, data, or object) for properties. This also makes much nicer i/o with OFN and OBO Graphs
1 parent 496a1ce commit a700837

27 files changed

Lines changed: 246 additions & 108 deletions

src/pyobo/constants.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"OntologyFormat",
2929
"OntologyPathPack",
3030
"SlimGetOntologyKwargs",
31+
"TypeDefType",
3132
"check_should_cache",
3233
"check_should_force",
3334
"check_should_use_tqdm",
@@ -319,3 +320,7 @@ def get_semantic_mapping_metadata(
319320
confidence=confidence,
320321
version=version,
321322
)
323+
324+
325+
#: The type of a typedef.
326+
TypeDefType = Literal["object", "annotation", "data"]

src/pyobo/sources/civic_gene.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
FACTOR = Term(reference=default_reference(PREFIX, "factor", name="factor"))
2121
FUSION = Term(reference=default_reference(PREFIX, "fusion", name="fusion"))
2222
REGION = Term(reference=default_reference(PREFIX, "region", name="region"))
23-
HAS_3P = TypeDef.default(PREFIX, "has3p", name="has 3' gene", is_metadata_tag=False)
24-
HAS_5P = TypeDef.default(PREFIX, "has5p", name="has 5' gene", is_metadata_tag=False)
23+
HAS_3P = TypeDef.default(PREFIX, "has3p", name="has 3' gene", predicate_type="object")
24+
HAS_5P = TypeDef.default(PREFIX, "has5p", name="has 5' gene", predicate_type="object")
2525

2626
TYPES = {
2727
"Gene": GENE,

src/pyobo/sources/clinicaltrials.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919
reference=default_reference(
2020
prefix=PREFIX, identifier="investigates_condition", name="investigates condition"
2121
),
22-
is_metadata_tag=True,
22+
predicate_type="annotation",
2323
)
2424
HAS_INTERVENTION = TypeDef(
2525
reference=default_reference(
2626
prefix=PREFIX, identifier="has_intervention", name="has intervention"
2727
),
28-
is_metadata_tag=True,
28+
predicate_type="annotation",
2929
)
3030

3131
INVESTIGATION_TERM = Term(

src/pyobo/sources/cvx.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
cvx_url = "https://www2a.cdc.gov/vaccines/iis/iisstandards/downloads/cvx.txt"
1717
PREFIX = "cvx"
1818
STATUS = TypeDef(
19-
reference=default_reference(PREFIX, "status", name="has status"), is_metadata_tag=True
19+
reference=default_reference(PREFIX, "status", name="has status"), predicate_type="annotation"
2020
)
21-
NONVACCINE = TypeDef(reference=default_reference(PREFIX, "nonvaccine"), is_metadata_tag=True)
21+
NONVACCINE = TypeDef(reference=default_reference(PREFIX, "nonvaccine"), predicate_type="annotation")
2222

2323
ACRONYM_RE = re.compile("^[A-Z]+$")
2424

src/pyobo/sources/geonames/utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333

3434
# Type definitions
3535
CODE_TYPEDEF = TypeDef(
36-
reference=default_reference(PREFIX, "code", name="GeoNames code"), is_metadata_tag=True
36+
reference=default_reference(PREFIX, "code", name="GeoNames code"),
37+
predicate_type="annotation",
3738
)
3839

3940
SYNONYMS_DF_COLUMNS = [

src/pyobo/sources/goldbook.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
URL = "https://goldbook.iupac.org/terms/index/all/json/download"
1919
TERM_URL_FORMAT = "https://goldbook.iupac.org/terms/view/{}/json"
2020

21-
HAS_STATUS = TypeDef(reference=default_reference(PREFIX, "hasStatus"), is_metadata_tag=True)
21+
HAS_STATUS = TypeDef(reference=default_reference(PREFIX, "hasStatus"), predicate_type="annotation")
2222

2323

2424
class GoldBookGetter(Obo):

src/pyobo/sources/iana_media_type.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def _get_mimetypes() -> dict[str, dict[str, Any]]:
6666
domain=ROOT_MEDIA_TYPE.reference,
6767
range=ROOT_FILE_FORMAT.reference,
6868
definition="Connects a media type with a file format that has been observed to encode it",
69-
is_metadata_tag=True,
69+
predicate_type="annotation",
7070
)
7171

7272

src/pyobo/sources/icd/icd11.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434
PREFIX = "icd11"
3535
CODE_PREFIX = "icd11.code"
3636

37-
CODE_PROP = TypeDef(reference=default_reference(PREFIX, "icd_mms_code"), is_metadata_tag=True)
37+
CODE_PROP = TypeDef(
38+
reference=default_reference(PREFIX, "icd_mms_code"), predicate_type="annotation"
39+
)
3840

3941

4042
class ICD11Getter(Obo):

src/pyobo/sources/msigdb.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,20 @@
2020
PREFIX = "msigdb"
2121
BASE_URL = "https://data.broadinstitute.org/gsea-msigdb/msigdb/release"
2222

23-
CATEGORY_CODE = TypeDef.default(PREFIX, "category_code", name="category code", is_metadata_tag=True)
23+
CATEGORY_CODE = TypeDef.default(
24+
PREFIX, "category_code", name="category code", predicate_type="annotation"
25+
)
2426
SUB_CATEGORY_CODE = TypeDef.default(
25-
PREFIX, "sub_category_code", name="sub-category code", is_metadata_tag=True
27+
PREFIX, "sub_category_code", name="sub-category code", predicate_type="annotation"
28+
)
29+
CONTRIBUTOR = TypeDef.default(
30+
PREFIX, "contributor", name="contributor", predicate_type="annotation"
31+
)
32+
EXACT_SOURCE = TypeDef.default(
33+
PREFIX, "exact_source", name="exact source", predicate_type="annotation"
2634
)
27-
CONTRIBUTOR = TypeDef.default(PREFIX, "contributor", name="contributor", is_metadata_tag=True)
28-
EXACT_SOURCE = TypeDef.default(PREFIX, "exact_source", name="exact source", is_metadata_tag=True)
2935
EXTERNAL_DETAILS_URL = TypeDef.default(
30-
PREFIX, "external_details_url", name="external details URL", is_metadata_tag=True
36+
PREFIX, "external_details_url", name="external details URL", predicate_type="annotation"
3137
)
3238

3339
PROPERTIES = [

src/pyobo/sources/pharmgkb/pharmgkb_variant.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717

1818
HAS_GENE_ASSOCIATION = TypeDef.default(
19-
PREFIX, "hasGeneAssociation", name="has gene association", is_metadata_tag=True
19+
PREFIX, "hasGeneAssociation", name="has gene association", predicate_type="annotation"
2020
)
2121

2222

0 commit comments

Comments
 (0)