"""Test miscellaneous phenotypes functions.""" import pytest from uploader.phenotypes.misc import phenotypes_data_differences __sample_db_phenotypes_data__ = ( { "PhenotypeId": 4, "xref_id": 10001, "DataId": 8967043, "data": { "B6D2F1": {"StrainId": 1, "value": None}, "C57BL/6J": {"StrainId": 2, "value": None}, "DBA/2J": {"StrainId": 3, "value": None}, "BXD1": {"StrainId": 4, "value": 61.4}, "BXD2": {"StrainId": 5, "value": 49}, "BXD5": {"StrainId": 6, "value": 62.5}, "BXD6": {"StrainId": 7, "value": 53.1} } }, { "PhenotypeId": 10, "xref_id": 10002, "DataId": 8967044, "data": { "B6D2F1": {"StrainId": 1, "value": None}, "C57BL/6J": {"StrainId": 2, "value": None}, "DBA/2J": {"StrainId": 3, "value": None}, "BXD1": {"StrainId": 4, "value": 54.1}, "BXD2": {"StrainId": 5, "value": 50.1}, "BXD5": {"StrainId": 6, "value": 53.3}, "BXD6": {"StrainId": 7, "value": 55.1} } }, { "PhenotypeId": 15, "xref_id": 10003, "DataId": 8967045, "data": { "B6D2F1": {"StrainId": 1, "value": None}, "C57BL/6J": {"StrainId": 2, "value": None}, "DBA/2J": {"StrainId": 3, "value": None}, "BXD1": {"StrainId": 4, "value": 483}, "BXD2": {"StrainId": 5, "value": 403}, "BXD5": {"StrainId": 6, "value": 501}, "BXD6": {"StrainId": 7, "value": 403} } }, { "PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "data": { "B6D2F1": {"StrainId": 1, "value": None}, "C57BL/6J": {"StrainId": 2, "value": None}, "DBA/2J": {"StrainId": 3, "value": None}, "BXD1": {"StrainId": 4, "value": 49.8}, "BXD2": {"StrainId": 5, "value": 45.5}, "BXD5": {"StrainId": 6, "value": 62.9}, "BXD6": {"StrainId": 7, "value": None} } }, { "PhenotypeId": 25, "xref_id": 10005, "DataId": 8967047, "data": { "B6D2F1": {"StrainId": 1, "value": None}, "C57BL/6J": {"StrainId": 2, "value": None}, "DBA/2J": {"StrainId": 3, "value": None}, "BXD1": {"StrainId": 4, "value": 46}, "BXD2": {"StrainId": 5, "value": 44.9}, "BXD5": {"StrainId": 6, "value": 52.5}, "BXD6": {"StrainId": 7, "value": None} } }) @pytest.mark.unit_test @pytest.mark.parametrize( "filedata,dbdata,expected", ((tuple(), tuple(), tuple()), # No data # No data difference (({ "phenotype_id": 4, "xref_id": 10001, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 61.4, "BXD2": 49, "BXD5":62.5, "BXD6": 53.1 } }, { "phenotype_id": 10, "xref_id": 10002, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 54.1, "BXD2": 50.1, "BXD5": 53.3, "BXD6": 55.1 } }, { "phenotype_id": 15, "xref_id": 10003, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 483, "BXD2": 403, "BXD5": 501, "BXD6": 403 } }, { "phenotype_id": 20, "xref_id": 10004, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 49.8, "BXD2": 45.5, "BXD5": 62.9, "BXD6": None } }, { "phenotype_id": 25, "xref_id": 10005, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 46, "BXD2": 44.9, "BXD5": 52.5, "BXD6": None } }), __sample_db_phenotypes_data__, tuple()), # Change values: No deletions (({ "phenotype_id": 4, "xref_id": 10001, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 77.2, "BXD2": 49, "BXD5":62.5, "BXD6": 53.1 } }, { "phenotype_id": 10, "xref_id": 10002, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 54.1, "BXD2": 50.1, "BXD5": 53.3, "BXD6": 55.1 } }, { "phenotype_id": 15, "xref_id": 10003, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 483, "BXD2": 403, "BXD5": 503, "BXD6": 903 } }, { "phenotype_id": 20, "xref_id": 10004, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": 1, "BXD1": 8, "BXD2": 9, "BXD5": 62.9, "BXD6": None } }, { "phenotype_id": 25, "xref_id": 10005, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 46, "BXD2": 44.9, "BXD5": 52.5, "BXD6": None } }), __sample_db_phenotypes_data__, ({"PhenotypeId": 4, "xref_id": 10001, "DataId": 8967043, "StrainId": 4, "StrainName": "BXD1", "value": 77.2}, {"PhenotypeId": 15, "xref_id": 10003, "DataId": 8967045, "StrainId": 6, "StrainName": "BXD5", "value": 503}, {"PhenotypeId": 15, "xref_id": 10003, "DataId": 8967045, "StrainId": 7, "StrainName": "BXD6", "value": 903}, {"PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "StrainId": 3, "StrainName": "DBA/2J", "value": 1}, {"PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "StrainId": 4, "StrainName": "BXD1", "value": 8}, {"PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "StrainId": 5, "StrainName": "BXD2", "value": 9})), # Changes — with deletions (({ "phenotype_id": 4, "xref_id": 10001, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": None, "BXD2": 49, "BXD5":62.5, "BXD6": 53.1 } }, { "phenotype_id": 10, "xref_id": 10002, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 54.1, "BXD2": 50.1, "BXD5": 53.3, "BXD6": 55.1 } }, { "phenotype_id": 15, "xref_id": 10003, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 483, "BXD2": 403, "BXD5": None, "BXD6": None } }, { "phenotype_id": 20, "xref_id": 10004, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": 15, "BXD1": None, "BXD2": 24, "BXD5": 62.9, "BXD6": None } }, { "phenotype_id": 25, "xref_id": 10005, "data": { "B6D2F1": None, "C57BL/6J": None, "DBA/2J": None, "BXD1": 46, "BXD2": 44.9, "BXD5": 52.5, "BXD6": None } }), __sample_db_phenotypes_data__, ({"PhenotypeId": 4, "xref_id": 10001, "DataId": 8967043, "StrainId": 4, "StrainName": "BXD1", "value": None}, {"PhenotypeId": 15, "xref_id": 10003, "DataId": 8967045, "StrainId": 6, "StrainName": "BXD5", "value": None}, {"PhenotypeId": 15, "xref_id": 10003, "DataId": 8967045, "StrainId": 7, "StrainName": "BXD6", "value": None}, {"PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "StrainId": 3, "StrainName": "DBA/2J", "value": 15}, {"PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "StrainId": 4, "StrainName": "BXD1", "value": None}, {"PhenotypeId": 20, "xref_id": 10004, "DataId": 8967046, "StrainId": 5, "StrainName": "BXD2", "value": 24})))) def test_phenotypes_data_differences(filedata, dbdata, expected): """Test differences are computed correctly.""" assert phenotypes_data_differences(filedata, dbdata) == expected