"""Miscellaneous functions dealing with publications.""" def publications_differences( filedata: tuple[dict, ...], dbdata: tuple[dict, ...], pubmedid2pubidmap: tuple[dict, ...] ) -> tuple[dict, ...]: """Compute the 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"]))): if filerow["PubMed_ID"] == dbrow["PubMed_ID"]: continue newpubmed = filerow["PubMed_ID"] diff = diff + ({ **dbrow, "PubMed_ID": newpubmed, "PublicationId": pubmedid2pubidmap.get(newpubmed)},) return diff