Exemplo n.º 1
0
def test_consistency_write_read():
    model1 = Model()
    model1.gem_compartments["c"] = Compartment("c", "Cytoplasm")

    root = Element("Root")
    add_compartments(root, model1)

    model2 = Model()
    parse_compartments(root, model2)

    assert model2.gem_compartments == model1.gem_compartments
Exemplo n.º 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"
Exemplo n.º 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)
Exemplo n.º 4
0
 def test_close_model_model_cancel(self, mock_close_model):
     main_window = mock_close_model
     main_window.model = Model()
     assert main_window.close_model() is False
     assert main_window.save_table_headers.called is False
     assert main_window._set_model_loaded.called is False
     assert main_window.set_model.called is False
Exemplo n.º 5
0
    def test_save_state_new_metabolite(self):
        metabolite = Metabolite()
        model = Model()

        widget = MetaboliteAttributesDisplayWidget()
        widget.set_item(metabolite, model)

        new_id = "New"
        new_name = "Name"
        new_charge = 2.
        new_formula = "H20"
        new_compartment = "c"

        widget.iDLineEdit.setText(new_id)
        widget.nameLineEdit.setText(new_name)
        widget.chargeSpinBox.setValue(new_charge)
        widget.formulaLineEdit.setText(new_formula)
        widget.compartmentComboBox.addItem(new_compartment)
        widget.compartmentComboBox.setCurrentText(new_compartment)

        widget.save_state()

        assert metabolite.id == new_id
        assert metabolite.name == new_name
        assert metabolite.charge == new_charge
        assert metabolite.formula == new_formula
        assert metabolite.compartment == new_compartment

        assert metabolite in model.metabolites
        assert metabolite in model.QtMetaboliteTable.get_items()
Exemplo n.º 6
0
    def setup_items(self):
        self.model = Model()
        self.testcase = ModelTest(description="test_description")

        self.reaction1 = Reaction(id="r1")
        self.testsetting1 = ReactionSetting(self.reaction1,
                                            upper_bound=1000.,
                                            lower_bound=0.,
                                            objective_coefficient=0.)
        self.testcase.add_setting(self.testsetting1)

        self.reaction3 = Reaction(id="r3")
        self.outcome = Outcome(self.reaction3, value=100., operator="greater")
        self.testcase.add_outcome(self.outcome)

        self.reference = Reference(id="test_refid")
        self.testcase.add_reference(self.reference)

        self.model.add_reactions([self.reaction1, self.reaction3])
        self.model.references[self.reference.id] = self.reference

        self.model.tests.append(self.testcase)
        self.model.setup_tests_table()

        self.root = Element("root", nsmap={None: ge_ns})
        add_tests_to_xml(self.root, self.model)
Exemplo n.º 7
0
    def test_map_metabolite_by_formula(self, database, progress):
        model = Model()
        met1 = Metabolite("m1", formula="H2O")
        model.add_metabolites([met1])

        update_metabolite_database_mapping(database, model, progress)
        assert model.database_mapping[met1] == 1
Exemplo n.º 8
0
    def test_not_mapped_for_name_substring(self, database, progress):
        model = Model()
        met1 = Metabolite("m1", name="ater")
        model.add_metabolites([met1])

        update_metabolite_database_mapping(database, model, progress)
        assert model.database_mapping[met1] is None
Exemplo n.º 9
0
    def test_setting_reaction(self):
        widget = ReactionAttributesDisplayWidget()
        reaction = Reaction(id="id",
                            name="name",
                            subsystem="subsystem",
                            lower_bound=-1000.,
                            upper_bound=1000.)
        model = Model()
        model.add_reactions((reaction, ))
        reaction.objective_coefficient = 1.

        assert widget.idLineEdit.text() == ""
        assert widget.nameLineEdit.text() == ""
        assert widget.subsystemLineEdit.text() == ""
        assert widget.lowerBoundInput.value() == 0.
        assert widget.upperBoundInput.value() == 0.
        assert widget.objectiveCoefficientInput.value() == 0.
        assert widget.content_changed is False
        assert widget.valid_inputs() is False

        widget.set_item(reaction, model)
        assert widget.idLineEdit.text() == reaction.id
        assert widget.nameLineEdit.text() == reaction.name
        assert widget.subsystemLineEdit.text() == reaction.subsystem
        assert widget.lowerBoundInput.value() == reaction.lower_bound
        assert widget.upperBoundInput.value() == reaction.upper_bound
        assert widget.objectiveCoefficientInput.value(
        ) == reaction.objective_coefficient
        assert widget.content_changed is False
        assert widget.valid_inputs() is True
Exemplo n.º 10
0
    def test_deletion(self, user_response):
        tab = MetaboliteTab()
        model = Model()
        metabolite1 = Metabolite("m1")
        metabolite2 = Metabolite("m2")
        metabolite3 = Metabolite("m3")
        model.add_metabolites([metabolite1, metabolite2, metabolite3])
        model.setup_metabolite_table()
        assert len(
            model.metabolites) == model.QtMetaboliteTable.rowCount() == 3
        tab.set_model(model)
        tab.confirmDeletion = Mock(return_value=user_response)

        item = tab.dataTable.item(1, 0)
        selected_metabolite = 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_metabolite in model.metabolites) is not user_response
        assert tab.dataTable.findItems(
            selected_metabolite.id) is not user_response
        if user_response:
            assert len(
                model.metabolites) == model.QtMetaboliteTable.rowCount() == 2
Exemplo n.º 11
0
 def test_close_model_model_accept(self, mock_close_model):
     main_window = mock_close_model
     main_window.model = Model()
     assert main_window.close_model() is True
     assert main_window.save_table_headers.call_count == 1
     main_window._set_model_loaded.assert_called_once_with(False)
     main_window.set_model.assert_called_once_with(None, None)
Exemplo n.º 12
0
 def setup_items(self):
     self.first_author = Author(lastname="FirstLastname",
                            firstname="FirstFirstname",
                            initials="FirstInitials")
     self.second_author = Author(lastname="SecondLastname",
                            firstname="SecondFirstname",
                            initials="SecondInitials")
     self.authors = [self.first_author, self.second_author]
     self.test_pmid = "123456"
     self.test_pmc = "PMC12345"
     self.test_doi = "10.1016/j.chemosphere.2016.03.102"
     self.test_url = "http://google.com"
     self.test_year = "1999"
     self.test_title = "Test title"
     self.test_journal = "Test journal"
     self.test_ref_id = "Test_id"
     self.reference = Reference(id=self.test_ref_id,
                                pmid=self.test_pmid,
                                pmc=self.test_pmc,
                                doi=self.test_doi,
                                url=self.test_url,
                                year=self.test_year,
                                title=self.test_title,
                                journal=self.test_journal,
                                authors=self.authors)
     self.model = Model("Test")
     self.model.references[self.reference.id] = self.reference
Exemplo n.º 13
0
    def test_writing_empty_model(self):

        root = Element("root")
        model = Model()
        add_tests_to_xml(root, model)

        assert len(root) == 0
Exemplo n.º 14
0
    def test_map_metabolite_by_name(self, database, progress):
        model = Model()
        met1 = Metabolite("m1", name="Water")
        model.add_metabolites([met1])

        update_metabolite_database_mapping(database, model, progress)
        assert model.database_mapping[met1] == 1
Exemplo n.º 15
0
    def test_save_state_existing_metabolite(self):
        metabolite = Metabolite(id="m1",
                                charge=1,
                                name="old name",
                                formula="O2",
                                compartment="c")
        model = Model()
        model.gem_add_metabolites((metabolite, ))
        widget = MetaboliteAttributesDisplayWidget()
        widget.set_item(metabolite, model)

        new_id = "New_id"
        new_name = "New name"
        new_charge = 3.
        new_compartment = "m"
        new_formula = "H2O"

        widget.iDLineEdit.setText(new_id)
        widget.nameLineEdit.setText(new_name)
        widget.chargeSpinBox.setValue(new_charge)
        widget.compartmentComboBox.addItem(new_compartment)
        widget.compartmentComboBox.setCurrentIndex(
            widget.compartmentComboBox.count() - 1)
        widget.formulaLineEdit.setText(new_formula)

        widget.save_state()

        assert metabolite.id == new_id
        assert metabolite.name == new_name
        assert metabolite.charge == new_charge
        assert metabolite.compartment == new_compartment
        assert metabolite.formula == new_formula
        assert model.metabolites.has_id(new_id)
Exemplo n.º 16
0
    def test_setting_item(self):
        metabolite = Metabolite("test_id", "H2O", "Test metabolie", -5, "m")
        model = Model()

        widget = MetaboliteAttributesDisplayWidget()

        # Test prestate
        assert widget.iDLineEdit.text() == ""
        assert widget.nameLineEdit.text() == ""
        assert widget.compartmentComboBox.currentText() == ""
        assert widget.chargeSpinBox.value() == 0
        assert widget.formulaLineEdit.text() == ""

        widget.set_item(metabolite, model)

        assert widget.iDLineEdit.text() == metabolite.id
        assert widget.nameLineEdit.text() == metabolite.name
        assert widget.compartmentComboBox.currentText(
        ) == metabolite.compartment
        assert widget.chargeSpinBox.value() == metabolite.charge
        assert widget.formulaLineEdit.text() == metabolite.formula

        assert widget.valid_inputs() is True
        assert widget.content_changed is False

        widget.set_item(None, model)

        assert widget.iDLineEdit.text() == ""
        assert widget.nameLineEdit.text() == ""
        assert widget.compartmentComboBox.currentText() == ""
        assert widget.chargeSpinBox.value() == 0.
        assert widget.formulaLineEdit.text() == ""

        assert widget.valid_inputs() is False
        assert widget.content_changed is False
Exemplo n.º 17
0
    def test_saving_changes(self):
        widget = ReactionAttributesDisplayWidget()
        reaction = Reaction("r1")
        model = Model("id")
        model.add_reactions((reaction, ))
        widget.set_item(reaction, model)

        new_id = "New id"
        new_name = "New name"
        new_subsytem = "New Subsystem"
        new_upper_bound = 200.5
        new_lower_bound = -300.5
        new_obj_coefficient = 20.4

        widget.idLineEdit.setText(new_id)
        widget.nameLineEdit.setText(new_name)
        widget.subsystemLineEdit.setText(new_subsytem)
        widget.upperBoundInput.setValue(new_upper_bound)
        widget.lowerBoundInput.setValue(new_lower_bound)
        widget.objectiveCoefficientInput.setValue(new_obj_coefficient)

        # Action
        widget.save_state()

        # Check that inputs are saved
        assert reaction.id == new_id
        assert reaction.name == new_name
        assert reaction.subsystem == new_subsytem
        assert reaction.lower_bound == new_lower_bound
        assert reaction.upper_bound == new_upper_bound
        assert reaction.objective_coefficient == new_obj_coefficient
Exemplo n.º 18
0
    def test_deletion(self, user_response):
        tab = ReferenceTab()
        model = Model()
        reference1 = Reference("r1")
        reference2 = Reference("r2")
        reference3 = Reference("r3")
        model.add_reference(reference1)
        model.add_reference(reference2)
        model.add_reference(reference3)
        model.setup_reference_table()
        assert len(model.references) == model.QtReferenceTable.rowCount() == 3
        tab.set_model(model)
        tab.confirmDeletion = Mock(return_value=user_response)

        item = tab.dataTable.item(1, 0)
        selected_reference = 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_reference.id in model.references) is not user_response
        if user_response:
            assert len(
                model.references) == model.QtReferenceTable.rowCount() == 2
Exemplo n.º 19
0
    def test_setting_item(self):
        gene = Gene("test_id", "name", "genome")
        model = Model()

        widget = GeneAttributesDisplayWidget()

        # Test prestate
        assert widget.iDLineEdit.text() == ""
        assert widget.nameLineEdit.text() == ""
        assert widget.genomeLineEdit.text() == ""

        widget.set_item(gene, model)

        assert widget.iDLineEdit.text() == gene.id
        assert widget.nameLineEdit.text() == gene.name
        assert widget.genomeLineEdit.text() == gene.genome

        assert widget.valid_inputs() is True
        assert widget.content_changed is False

        widget.set_item(None, model)

        assert widget.iDLineEdit.text() == ""
        assert widget.nameLineEdit.text() == ""
        assert widget.genomeLineEdit.text() == ""

        assert widget.valid_inputs() is False
        assert widget.content_changed is False
Exemplo n.º 20
0
    def test_run_test_false_outcome2(self, progress):
        model_test = ModelTest()
        model_test.outcomes = [self.true_outcome1, self.false_outcome1]

        results = run_tests((model_test, ), Model(), progress)
        status, _ = results[model_test]
        assert status is False
Exemplo n.º 21
0
    def test_do_nothing_if_no_ambiguous_maps(self):
        model = Model()
        metabolite = Metabolite()
        model.database_mapping[metabolite] = 1
        check_ambiguous_mappings(model, None)

        assert model.database_mapping[metabolite] == 1
Exemplo n.º 22
0
 def setup_items(self):
     self.model = Model("Test")
     self.c1 = Compartment(id="c", name="Cytoplasm")
     self.c2 = Compartment(id="e", name="Extracellular")
     self.model.gem_compartments[self.c1.id] = self.c1
     self.compartment_table = CompartmentTable()
     self.compartment_table.populate_table(self.model.gem_compartments.values())
     self.wrong_format_abbreviation = "ca"
Exemplo n.º 23
0
    def test_description_loaded(self):

        test = ModelTest(description="Test description")
        model = Model()

        self.dialog.set_test(test, model)

        assert self.dialog.nameLineEdit.text() == test.description
Exemplo n.º 24
0
def test_parse_compartments():
    parent_node = ET.fromstring(valid_compartment_list)
    model = Model()
    parse_compartments(parent_node, model)

    assert model.gem_compartments["p"] == Compartment("p", "Periplasm")
    assert model.gem_compartments["c"] == Compartment("c", "Cytoplasm")
    assert model.gem_compartments["e"] == Compartment("e", "Extracellular")
Exemplo n.º 25
0
def test_add_compartment_empty_model():
    model = Model()

    root = Element("root")
    add_compartments(root, model)

    compartment_list = root.find(sbml3_listOfCompartments)
    assert compartment_list is None
Exemplo n.º 26
0
    def test_add_metabolites(self):
        model = Model()
        metabolite = Metabolite("m1", compartment="c")
        model.gem_add_metabolites((metabolite,))

        assert metabolite in model.metabolites
        assert metabolite in model.QtMetaboliteTable.get_items()
        assert "c" in model.gem_compartments
Exemplo n.º 27
0
 def test_get_selected_item_none_selected(self):
     reaction = Reaction()
     model = Model()
     self.widget.set_item(reaction, model)
     assert self.widget.geneTable.rowCount() == 0
     table_item, linked_item = self.widget.get_selected_item()
     assert table_item is self.widget.geneTable
     assert linked_item is reaction
Exemplo n.º 28
0
 def new_model(self):
     if self.close_model():
         model = Model()
         dialog = EditModelDialog(model)
         status = dialog.exec_()
         if status:
             self.set_model(model, None)
             self._set_model_loaded(True)
Exemplo n.º 29
0
    def test_run_test_infeasible_solution(self, mock_optimize_infeasible,
                                          progress):
        model_test = ModelTest()
        model_test.outcomes = [self.true_outcome1, self.false_outcome1]

        results = run_tests((model_test, ), Model(), progress)
        status, solution = results[model_test]
        assert solution is mock_optimize_infeasible
        assert status is False
Exemplo n.º 30
0
 def setup_items(self):
     self.test_id = "test.id"
     self.test_name = "test_name"
     self.test_genome = "test_genome"
     self.gene = Gene(id=self.test_id,
                      name=self.test_name,
                      genome=self.test_genome)
     self.model = Model("Test_model")
     self.model.genes.append(self.gene)