Skip to content
10 changes: 5 additions & 5 deletions src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -4160,7 +4160,7 @@ def get_prov_info():
HEADER_PROCESSED_DATASET_STATUS = "processed_dataset_status"
HEADER_PROCESSED_DATASET_PORTAL_URL = "processed_dataset_portal_url"
ORGAN_TYPES = Ontology.ops(
as_data_dict=True, data_as_val=True, val_key="organ_uberon", prop_callback=None
as_data_dict=True, data_as_val=True, val_key="organ_uberon", key_callback=None
).organ_types()
HEADER_PREVIOUS_VERSION_SENNET_IDS = "previous_version_sennet_ids"

Expand Down Expand Up @@ -4536,7 +4536,7 @@ def get_prov_info_for_dataset(id):
HEADER_PROCESSED_DATASET_PORTAL_URL = "processed_dataset_portal_url"
HEADER_DATASET_SAMPLES = "dataset_samples"
ORGAN_TYPES = Ontology.ops(
as_data_dict=True, data_as_val=True, val_key="organ_uberon", prop_callback=None
as_data_dict=True, data_as_val=True, val_key="organ_uberon", key_callback=None
).organ_types()

headers = [
Expand Down Expand Up @@ -4781,7 +4781,7 @@ def get_sample_prov_info():
HEADER_ORGAN_TYPE = "organ_type"
HEADER_ORGAN_SENNET_ID = "organ_sennet_id"
ORGAN_TYPES = Ontology.ops(
as_data_dict=True, data_as_val=True, val_key="organ_uberon", prop_callback=None
as_data_dict=True, data_as_val=True, val_key="organ_uberon", key_callback=None
).organ_types()

# Processing and validating query parameters
Expand Down Expand Up @@ -6754,7 +6754,7 @@ def verify_ubkg_properties(json_data_dict):
SOURCE_TYPES = Ontology.ops(as_data_dict=True).source_types()
SAMPLE_CATEGORIES = Ontology.ops(as_data_dict=True).specimen_categories()
ORGAN_TYPES = Ontology.ops(
as_data_dict=True, key="organ_uberon", prop_callback=None
as_data_dict=True, key="organ_uberon", key_callback=None
).organ_types()
DATASET_TYPE = Ontology.ops(as_data_dict=True).dataset_types()

Expand Down Expand Up @@ -6849,7 +6849,7 @@ def check_multiple_organs_constraint(
)
if count >= 1:
organ_codes = Ontology.ops(
as_data_dict=True, val_key="term", key="organ_uberon", prop_callback=None
as_data_dict=True, val_key="term", key="organ_uberon", key_callback=None
).organ_types()
organ = organ_codes[organ_code]
abort_bad_req(
Expand Down
41 changes: 36 additions & 5 deletions src/lib/ontology.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,42 @@ def modify_entities_cache():
@classmethod
def organs_by_organ_uberon(cls: Ontology) -> dict:
return cls.ops(
as_data_dict=True, prop_callback=None, data_as_val=True, key="organ_uberon"
as_data_dict=True, key_callback=None, data_as_val=True, key="organ_uberon"
).organ_types()

@classmethod
def dataset_type_hierarchy(cls: Ontology) -> dict:
return cls.ops(
as_data_dict=True, prop_callback=None, data_as_val=False, key="dataset_type", val_key="dataset_modalities"
).dataset_types()
def dataset_type_hierarchy(cls: Ontology, dataset_type: str = None) -> dict:
def prop_callback(dict):
return dict['name']

def val_callback(dict):
if 'modalities' not in dict:
return []

list_of_facets = []
for modality in dict['modalities']:
for analyte in modality['analytes']:
list_of_facets.append({
"modality": modality['name'],
"analyte": analyte['name'],
"dataset_type": dict['dataset_type']['name']
})
return list_of_facets

all_facets = cls.ops(
as_data_dict=True, key_callback=prop_callback, val_callback=val_callback, data_as_val=True,
).dataset_types_hierarchy()

if dataset_type is not None:
if dataset_type in all_facets:
return all_facets[dataset_type]
else:
return [{
"modality": 'N/A',
"analyte": 'N/A',
"dataset_type": dataset_type
}]
else:
matrix = list(all_facets.values())

return [item for sublist in matrix for item in sublist]
4 changes: 2 additions & 2 deletions src/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ neo4j==5.28.1
# Use the branch name of commons from github for testing new changes made in commons from different branch
# Default is main branch specified in docker-compose.development.yml if not set
# git+https://github.com/hubmapconsortium/commons.git@${COMMONS_BRANCH}#egg=hubmap-commons
hubmap-commons==2.1.21
atlas-consortia-commons==1.1.5
hubmap-commons==2.1.26
atlas-consortia-commons==1.1.7
#git+https://github.com/x-atlas-consortia/commons.git@{COMMONS_BRANCH}#egg=atlas_consortia_commons

deepdiff==8.6.2
Expand Down
27 changes: 9 additions & 18 deletions src/schema/schema_triggers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1844,7 +1844,7 @@ def get_dataset_title(property_key, normalized_type, user_token, existing_data_d
# the threshold, we will just use the number in the title.
organs_description_phrase = f"{len(organ_abbrev_set)} organs"
organ_types_dict = Ontology.ops(
as_data_dict=True, prop_callback=None, key="organ_uberon", val_key="term"
as_data_dict=True, key_callback=None, key="organ_uberon", val_key="term"
).organ_types()

if len(organ_abbrev_set) <= MAX_ENTITY_LIST_LENGTH:
Expand Down Expand Up @@ -2029,7 +2029,7 @@ def get_display_subtype(
):
if "organ" in existing_data_dict:
organ_types = Ontology.ops(
as_data_dict=True, prop_callback=None, key="organ_uberon", val_key="term"
as_data_dict=True, key_callback=None, key="organ_uberon", val_key="term"
).organ_types()
display_subtype = get_val_by_key(
existing_data_dict["organ"], organ_types, "ubkg.organ_types"
Expand All @@ -2042,7 +2042,7 @@ def get_display_subtype(

else:
sample_categories = Ontology.ops(
as_data_dict=True, prop_callback=None
as_data_dict=True, key_callback=None
).specimen_categories()
display_subtype = get_val_by_key(
existing_data_dict["sample_category"],
Expand Down Expand Up @@ -3995,7 +3995,7 @@ def _get_organ_description(organ_code):
str: The organ code description
"""
ORGAN_TYPES = Ontology.ops(
as_arr=False, prop_callback=None, as_data_dict=True, data_as_val=True
as_arr=False, key_callback=None, as_data_dict=True, data_as_val=True
).organ_types()

for key in ORGAN_TYPES:
Expand Down Expand Up @@ -4318,15 +4318,15 @@ def get_organ_hierarchy(
organ_hierarchy = None
if equals(existing_data_dict["sample_category"], "organ"):
organ_types_categories = Ontology.ops(
as_data_dict=True, prop_callback=None, key="organ_uberon", val_key="category"
as_data_dict=True, key_callback=None, key="organ_uberon", val_key="category"
).organ_types()

organ_hierarchy = existing_data_dict["organ"]
if organ_types_categories.get(organ_hierarchy) is not None:
return property_key, organ_types_categories[organ_hierarchy]["term"]

organ_types = Ontology.ops(
as_data_dict=True, prop_callback=None, key="organ_uberon", val_key="term"
as_data_dict=True, key_callback=None, key="organ_uberon", val_key="term"
).organ_types()
if existing_data_dict["organ"] in organ_types:
organ_name = organ_types[organ_hierarchy]
Expand Down Expand Up @@ -4367,18 +4367,9 @@ def get_dataset_type_hierarchy(
dict: The dataset type hierarchy with keys of 'first_level' and 'second_level'
"""

if equals(existing_data_dict["entity_type"], "Dataset"):
dataset_type_hierarchy = Ontology.dataset_type_hierarchy()
if existing_data_dict["dataset_type"] not in dataset_type_hierarchy:
return property_key, {
"first_level": existing_data_dict["dataset_type"],
"second_level": existing_data_dict["dataset_type"],
}

return property_key, {
"first_level": dataset_type_hierarchy[existing_data_dict["dataset_type"]],
"second_level": existing_data_dict["dataset_type"],
}
if equals(existing_data_dict["entity_type"], "Dataset") and equals(existing_data_dict["creation_action"], "Create Dataset Activity"):
dataset_type_hierarchy = Ontology.dataset_type_hierarchy(dataset_type=existing_data_dict["dataset_type"])
return property_key, dataset_type_hierarchy
else:
return property_key, None

Expand Down
Loading