diff options
author | Frederick Muriuki Muriithi | 2025-04-14 15:06:34 -0500 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2025-04-14 16:09:21 -0500 |
commit | 3cd56ff2f774c13add3b5fa791fcc55a0c5f00c3 (patch) | |
tree | 3ce5c2b2a45f7283738aa30684ecbef83dd5c56f /uploader/phenotypes/misc.py | |
parent | 4768b837c24aa3622d87c3c6adff112cb975ab20 (diff) | |
download | gn-uploader-3cd56ff2f774c13add3b5fa791fcc55a0c5f00c3.tar.gz |
Implement difference computations.
Diffstat (limited to 'uploader/phenotypes/misc.py')
-rw-r--r-- | uploader/phenotypes/misc.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/uploader/phenotypes/misc.py b/uploader/phenotypes/misc.py index 7003f81..cbe3b7f 100644 --- a/uploader/phenotypes/misc.py +++ b/uploader/phenotypes/misc.py @@ -8,4 +8,19 @@ def phenotypes_data_differences( filedata: tuple[dict, ...], dbdata: tuple[dict, ...] ) -> tuple[dict, ...]: """Compute differences between file data and db data""" - return tuple() + 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 |