Example #1
0
    def test_deletion(self, user_response):
        tab = GeneTab()
        model = Model()
        gene1 = Gene("r1")
        gene2 = Gene("r2")
        gene3 = Gene("r3")
        model.add_gene(gene1)
        model.add_gene(gene2)
        model.add_gene(gene3)
        model.setup_gene_table()
        assert len(model.genes) == model.QtGeneTable.rowCount() == 3
        tab.set_model(model)
        tab.confirmDeletion = Mock(return_value=user_response)

        item = tab.dataTable.item(1, 0)
        selected_gene = item.link
        source_index = tab.dataTable.indexFromItem(item)
        view_index = tab.proxyModel.mapFromSource(source_index)
        tab.dataView.selectRow(view_index.row())

        assert tab.confirmDeletion.called is False
        tab.deleteItemSlot()
        assert tab.confirmDeletion.called is True
        assert (selected_gene in model.genes) is not user_response
        assert tab.dataTable.findItems(selected_gene.id) is not user_response
        if user_response:
            assert len(model.genes) == model.QtGeneTable.rowCount() == 2
Example #2
0
    def test_full_example(self):
        """ Test that a minimal evidence example is parsed correctly """

        xml_tree = ET.fromstring(full_evidence)
        model = Model()
        reaction = Reaction("Test")
        target_item = Gene("target_id")
        reference = Reference("ref_id")
        model.add_reaction(reaction)
        model.add_gene(target_item)
        model.add_reference(reference)

        assert len(model.all_evidences) == 0
        assert len(reaction.evidences) == 0

        parse_evidences_from_xml(xml_tree, model)

        assert len(model.all_evidences) == 1
        assert len(reaction.evidences) == 1

        evidence = list(reaction.evidences)[0]
        assert evidence.entity is reaction
        assert evidence.target is target_item
        assert evidence.assertion == "Catalyzed by"
        assert evidence.eco == "ECO:0000000"
        assert len(evidence.references) == 1
        assert list(evidence.references)[0] is reference
        assert evidence.comment == "test comment"
Example #3
0
    def test_get_item_from_model(self):
        model = Model("test id")
        reaction = Reaction("r_id")
        metabolite = Metabolite("m_id")
        gene = Gene("g_id")
        # ToDo: Add gene group

        model.add_reactions([reaction])
        model.add_metabolites([metabolite]),
        model.add_gene(gene)
        # ToDo: Add gene group

        assert get_item_from_model("Model", model.id, model) is model
        assert get_item_from_model("Reaction", reaction.id, model) is reaction
        assert get_item_from_model("Metabolite", metabolite.id, model) is metabolite
        assert get_item_from_model("Gene", gene.id, model) is gene

        # Test expected errors

        # GeneGroup not implemented
        with pytest.raises(NotImplementedError):
            get_item_from_model("GeneGroup", "test_id", model)

        # ID not in model
        with pytest.raises(KeyError):
            get_item_from_model("Reaction", "Not in model", model)
        with pytest.raises(KeyError):
            get_item_from_model("Metabolite", "Not in model", model)
        with pytest.raises(KeyError):
            get_item_from_model("Gene", "Not in model", model)
Example #4
0
 def test_edit_item_dialog_reject(self):
     tab = GeneTab()
     model = Model()
     gene1 = Gene("r1")
     model.add_gene(gene1)
     model.setup_gene_table()
     model.QtGeneTable.update_row_from_link = Mock()
     tab.set_model(model)
     tab.dataView.selectRow(0)
     assert model.QtGeneTable.update_row_from_link.called is False
     tab.editItemSlot()
     assert model.QtGeneTable.update_row_from_link.called is False
Example #5
0
    def test_write_parse_consistency(self):
        add_evidences_to_xml(self.root, self.model)

        model = Model("New model")
        model.add_gene(self.gene)
        model.add_gene(self.target)
        model.add_reactions([self.reaction])
        model.add_reference(self.reference)

        assert len(model.all_evidences) == 0
        parse_evidences_from_xml(self.root, model)
        assert len(model.all_evidences) == 1

        evidence = model.all_evidences[self.evidence.internal_id]
        assert evidence == self.evidence
Example #6
0
class TestEvidence:

    @pytest.fixture(autouse=True)
    def setup_evidence(self):
        self.reaction = Reaction("r_id")
        self.gene = Gene("g_id")
        self.target = Gene("g_id2")
        self.model = Model("test id")
        self.reference = Reference()
        self.model.add_gene(self.gene)
        self.model.add_gene(self.target)
        self.model.add_reactions([self.reaction])
        self.model.add_reference(self.reference)

        # Set type
        self.assertion = "Catalyzed by"
        self.eco = "ECO:0000000"
        self.comment = "test"
        self.evidence = Evidence(entity=self.reaction, eco=self.eco,
                                 assertion=self.assertion, comment=self.comment, target=self.target)

        self.evidence.add_reference(self.reference)

        self.model.all_evidences[self.evidence.internal_id] = self.evidence

        self.root = Element("root", nsmap={None: ge_ns})

    def test_setup(self):
        assert self.evidence.entity is self.reaction
        assert self.evidence.target is self.target

        assert len(self.evidence.references) == 1
        assert list(self.evidence.references)[0] is self.reference

        assert self.evidence.assertion == self.assertion
        assert self.evidence.eco == self.eco
        assert self.evidence.comment == self.comment

    def test_add_evidence(self):
        add_evidences_to_xml(self.root, self.model)

        list_of_evidences = self.root.find(ge_listOfEvidences)
        assert list_of_evidences is not None
        assert len(list_of_evidences) == 1

        evidence_node = list_of_evidences.find(ge_evidence)
        assert evidence_node is not None
        assert evidence_node.get("entity_id") == self.reaction.id
        assert evidence_node.get("entity_type") == "Reaction"
        assert evidence_node.get("id") == self.evidence.internal_id
        assert evidence_node.get("comment") == self.comment
        assert evidence_node.get("target_id") == self.target.id
        assert evidence_node.get("target_type") == "Gene"
        assert evidence_node.get("assertion") == self.assertion
        assert evidence_node.get("eco") == self.eco

        evidence_references_node = evidence_node.find(ge_listOfReferenceLinks)
        assert evidence_references_node is not None
        assert len(evidence_references_node) == 1

        reference_link_node = evidence_references_node.find(ge_referenceLink)
        assert reference_link_node is not None
        assert reference_link_node.get("id") == self.reference.id

    def test_no_references_added_if_empty(self):
        self.evidence.remove_all_references()
        add_evidences_to_xml(self.root, self.model)

        list_of_evidences = self.root.find(ge_listOfEvidences)
        assert list_of_evidences is not None

        evidence_node = list_of_evidences.find(ge_evidence)
        assert evidence_node is not None

        # Check that reference not is not found
        assert evidence_node.find(ge_listOfReferenceLinks) is None

    def test_write_parse_consistency(self):
        add_evidences_to_xml(self.root, self.model)

        model = Model("New model")
        model.add_gene(self.gene)
        model.add_gene(self.target)
        model.add_reactions([self.reaction])
        model.add_reference(self.reference)

        assert len(model.all_evidences) == 0
        parse_evidences_from_xml(self.root, model)
        assert len(model.all_evidences) == 1

        evidence = model.all_evidences[self.evidence.internal_id]
        assert evidence == self.evidence

    def test_get_item_from_model(self):
        model = Model("test id")
        reaction = Reaction("r_id")
        metabolite = Metabolite("m_id")
        gene = Gene("g_id")
        # ToDo: Add gene group

        model.add_reactions([reaction])
        model.add_metabolites([metabolite]),
        model.add_gene(gene)
        # ToDo: Add gene group

        assert get_item_from_model("Model", model.id, model) is model
        assert get_item_from_model("Reaction", reaction.id, model) is reaction
        assert get_item_from_model("Metabolite", metabolite.id, model) is metabolite
        assert get_item_from_model("Gene", gene.id, model) is gene

        # Test expected errors

        # GeneGroup not implemented
        with pytest.raises(NotImplementedError):
            get_item_from_model("GeneGroup", "test_id", model)

        # ID not in model
        with pytest.raises(KeyError):
            get_item_from_model("Reaction", "Not in model", model)
        with pytest.raises(KeyError):
            get_item_from_model("Metabolite", "Not in model", model)
        with pytest.raises(KeyError):
            get_item_from_model("Gene", "Not in model", model)

    def test_minimal_example(self):
        """ Test that a minimal evidence example is parsed correctly """

        xml_tree = ET.fromstring(minimal_evidence)
        model = Model()
        reaction = Reaction("Test")
        model.add_reaction(reaction)

        assert len(model.all_evidences) == 0
        assert len(reaction.evidences) == 0

        parse_evidences_from_xml(xml_tree, model)

        assert len(model.all_evidences) == 1
        assert len(reaction.evidences) == 1

        evidence = list(reaction.evidences)[0]
        assert evidence.entity is reaction
        assert evidence.assertion == "Presence"

    def test_full_example(self):
        """ Test that a minimal evidence example is parsed correctly """

        xml_tree = ET.fromstring(full_evidence)
        model = Model()
        reaction = Reaction("Test")
        target_item = Gene("target_id")
        reference = Reference("ref_id")
        model.add_reaction(reaction)
        model.add_gene(target_item)
        model.add_reference(reference)

        assert len(model.all_evidences) == 0
        assert len(reaction.evidences) == 0

        parse_evidences_from_xml(xml_tree, model)

        assert len(model.all_evidences) == 1
        assert len(reaction.evidences) == 1

        evidence = list(reaction.evidences)[0]
        assert evidence.entity is reaction
        assert evidence.target is target_item
        assert evidence.assertion == "Catalyzed by"
        assert evidence.eco == "ECO:0000000"
        assert len(evidence.references) == 1
        assert list(evidence.references)[0] is reference
        assert evidence.comment == "test comment"