Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
34 changes: 29 additions & 5 deletions src/lib/ontology.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,35 @@ 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 and dataset_type in all_facets:
return all_facets[dataset_type]
else:
matrix = list(all_facets.values())

return [item for sublist in matrix for item in sublist]
4 changes: 3 additions & 1 deletion src/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
--extra-index-url https://test.pypi.org/simple/

Flask==3.1.3
prov==2.0.1

Expand All @@ -19,7 +21,7 @@ neo4j==5.28.1
# 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
atlas-consortia-commons==1.1.7a0
#git+https://github.com/x-atlas-consortia/commons.git@{COMMONS_BRANCH}#egg=atlas_consortia_commons

deepdiff==8.6.2
Expand Down
25 changes: 8 additions & 17 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 @@ -4368,17 +4368,8 @@ def get_dataset_type_hierarchy(
"""

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"],
}
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