diff --git a/api/utils/bar_utils.py b/api/utils/bar_utils.py index 7fe0739..12e5b7c 100644 --- a/api/utils/bar_utils.py +++ b/api/utils/bar_utils.py @@ -33,6 +33,17 @@ def is_arabidopsis_gene_valid(gene): else: return False + @staticmethod + def is_grape_gene_valid(gene): + """This function verifies if grape gene is valid: VIT_00s0120g00060 + :param gene: + :return: + """ + if re.search(r"^VIT_\d{0,3}\D\d{0,5}g\d{0,6}$", gene, re.I): + return True + else: + return False + @staticmethod def is_poplar_gene_valid(gene): """This function verifies if Poplar v3 gene is valid diff --git a/api/utils/efp_utils.py b/api/utils/efp_utils.py index 6405ccf..533016a 100644 --- a/api/utils/efp_utils.py +++ b/api/utils/efp_utils.py @@ -36,6 +36,7 @@ def is_efp_input_valid(efp, view, mode, gene_1, gene_2=None): "efp_arabidopsis", "efp_arachis", "efp_cannabis", + "efp_grape", "efp_maize", "efp_rice", "efp_sorghum", @@ -82,6 +83,15 @@ def is_efp_input_valid(efp, view, mode, gene_1, gene_2=None): if not BARUtils.is_cannabis_gene_valid(gene_2): return False, "Gene 2 is invalid." + if efp == "efp_grape": + # Validate gene Ids + if not BARUtils.is_grape_gene_valid(gene_1): + return False, "Gene 1 is invalid." + + if mode == "Compare": + if not BARUtils.is_grape_gene_valid(gene_2): + return False, "Gene 2 is invalid." + if efp == "efp_maize": # Validate gene ids if not BARUtils.is_maize_gene_valid(gene_1): diff --git a/tests/utils/test_bar_utils.py b/tests/utils/test_bar_utils.py index 796adf9..7396d66 100644 --- a/tests/utils/test_bar_utils.py +++ b/tests/utils/test_bar_utils.py @@ -37,6 +37,14 @@ def test_is_brassica_rapa_gene_valid(self): result = BARUtils.is_brassica_rapa_gene_valid("abc") self.assertFalse(result) + def test_is_grape_gene_valid(self): + result = BARUtils.is_grape_gene_valid("VIT_00s0120g00060") + self.assertTrue(result) + + # Invalid gene + result = BARUtils.is_grape_gene_valid("abc") + self.assertFalse(result) + def test_is_kalanchoe_gene_valid(self): # Valid gene result = BARUtils.is_kalanchoe_gene_valid("Kaladp0001s0001") diff --git a/tests/utils/test_efp_utils.py b/tests/utils/test_efp_utils.py index e0cb851..289b594 100644 --- a/tests/utils/test_efp_utils.py +++ b/tests/utils/test_efp_utils.py @@ -130,6 +130,16 @@ def test_is_efp_input_valid(self): self.assertFalse(result[0]) self.assertEqual(result[1], expected) + # eFP Grape Absolute + result = eFPUtils.is_efp_input_valid("efp_grape", "grape_developmental", "Absolute", "VIT_00s0120g00060") + self.assertTrue(result[0]) + self.assertIsNone(result[1]) + + result = eFPUtils.is_efp_input_valid("efp_grape", "grape_developmental", "Absolute", "Abc") + expected = "Gene 1 is invalid." + self.assertFalse(result[0]) + self.assertEqual(result[1], expected) + # eFP Sorghum Absolute result = eFPUtils.is_efp_input_valid("efp_sorghum", "Stress_Atlas", "Absolute", "Sobic.001G000100") self.assertTrue(result[0])