"""Miscellaneous functions handling phenotypes and phenotypes data.""" import logging logger = logging.getLogger(__name__) def phenotypes_data_differences( filedata: tuple[dict, ...], dbdata: tuple[dict, ...] ) -> tuple[dict, ...]: """Compute differences between file data and db data""" diff = tuple() for filerow, dbrow in zip( sorted(filedata, key=lambda item: (item["phenotype_id"], item["xref_id"])), sorted(dbdata, key=lambda item: (item["PhenotypeId"], item["xref_id"]))): for samplename, value in filerow["data"].items(): if value != dbrow["data"].get(samplename, {}).get("value"): diff = diff + ({ "PhenotypeId": filerow["phenotype_id"], "xref_id": filerow["xref_id"], "DataId": dbrow["DataId"], "StrainId": dbrow["data"].get(samplename, {}).get("StrainId"), "StrainName": samplename, "value": value },) return diff