about summary refs log tree commit diff
path: root/uploader/publications/misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/publications/misc.py')
-rw-r--r--uploader/publications/misc.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/uploader/publications/misc.py b/uploader/publications/misc.py
new file mode 100644
index 0000000..fca6f71
--- /dev/null
+++ b/uploader/publications/misc.py
@@ -0,0 +1,25 @@
+"""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