Ejemplo n.º 1
0
    def test_get_gene_statistics(self):
        model = Model()
        metabolite1 = Metabolite("m1")
        annotation = Annotation("chebi", "CHEBI:1233")
        metabolite1.annotation.add(annotation)

        metabolite2 = Metabolite("m2")
        model.add_metabolites([metabolite1, metabolite2])

        # Action
        metabolite_stats = metabolite_statistics(model)

        # Return value:
        # ("Total", len(model.metabolites)),
        # ("Annotated", num_anotated),
        # ("DeadEnd", num_dead_ends)

        # 1) Check Total
        assert metabolite_stats["Total"] == 2

        # 2) Check Annotated
        assert metabolite_stats["Annotated"] == 1

        # 3) Check DeadEnd
        assert metabolite_stats["DeadEnd"] == 2

        # Check that there is a test for all options
        assert len(metabolite_stats) == 3
Ejemplo n.º 2
0
    def test_get_gene_statistics(self):
        model = Model()
        reaction = Reaction("r1")
        annotation = Annotation("chebi", "CHEBI:1233")

        gene1 = Gene("g1")
        gene1.annotation.add(annotation)
        gene2 = Gene("g2")
        gene2.annotation.add(annotation)
        reaction.add_child(gene2)
        gene3 = Gene("g3")
        reaction.add_child(gene3)

        for x in [gene1, gene2, gene3]:
            model.add_gene(x)

        # Action
        gene_stats = gene_statistics(model)

        # Return value
        # ("Total", num_genes),
        # ("Unassigned", num_unassigned),
        # ("Verified location", num_exp_verified_localization),
        # ("Predicted location", num_predicted_localization),
        # ("Known function", num_known_function)

        # Check Total
        assert gene_stats["Total"] == 3

        # Check Unassigned
        assert gene_stats["Unassigned"] == 1

        # Check Verified location
        # Todo: Implement test
        assert True

        # Check Predicted location
        # Todo: Implement test
        assert True

        # Check Known function
        # Todo: Implement test
        assert True
Ejemplo n.º 3
0
    def test_get_yield_not_working_if_input_formula_missing(self):
        model = Model("test")
        met1 = Metabolite(id="S7P")
        met2 = Metabolite(id="T3P1", formula="C3H7O6P")
        met3 = Metabolite(id="E4P", formula="C4H9O7P")
        met4 = Metabolite(id="F6P", formula="C6H13O9P")
        model.add_metabolites((met1, met2, met3, met4))

        react1 = Reaction(id="r1", name="Transaldolase")
        react1.add_metabolites({met1: -1, met2: -1, met3: 1, met4: 1})

        react2 = Reaction(id="r2")
        react2.add_metabolites({met1: -1})

        react3 = Reaction(id="r3")
        react3.add_metabolites({met2: -1})

        react4 = Reaction(id="r4")
        react4.add_metabolites({met3: -1})

        react5 = Reaction(id="r5")
        react5.add_metabolites({met4: -1})

        model.add_reactions((react1, react2, react3, react4, react5))

        fluxes = {
            react1.id: 1,
            react2.id: -1,
            react3.id: -1,
            react4.id: 1,
            react5.id: 1
        }

        status, _ = get_yields(fluxes, model)
        assert status is False
Ejemplo n.º 4
0
    def test_setting_item(self):
        parent = QWidget()
        widget = ReferenceDisplayWidget(parent)
        test = ModelTest()
        model = Model()

        widget.dataTable.populate_table = Mock()

        widget.set_item(test, model)

        widget.dataTable.populate_table.assert_called_once_with(
            test.references)
        assert widget.model is model
        assert widget.item is test
Ejemplo n.º 5
0
    def test_addition_emits_changed(self):
        parent = QWidget()
        widget = ReferenceDisplayWidget(parent)
        test = ModelTest()
        reference = Reference()
        test.add_reference(reference)
        model = Model()

        widget.set_item(test, model)

        detector = Mock()
        widget.changed.connect(detector.test)

        widget.dataTable.update_row_from_item(Reference())
        assert detector.test.called is True
        assert widget.content_changed is True
Ejemplo n.º 6
0
    def test_get_yield(self):
        model = Model("test")
        met1 = Metabolite(id="S7P", formula="C7H15O10P")
        met2 = Metabolite(id="T3P1", formula="C3H7O6P")
        met3 = Metabolite(id="E4P", formula="C4H9O7P")
        met4 = Metabolite(id="F6P", formula="C6H13O9P")
        model.add_metabolites((met1, met2, met3, met4))

        react1 = Reaction(id="r1", name="Transaldolase")
        react1.add_metabolites({met1: -1, met2: -1, met3: 1, met4: 1})

        react2 = Reaction(id="r2")
        react2.add_metabolites({met1: -1})

        react3 = Reaction(id="r3")
        react3.add_metabolites({met2: -1})

        react4 = Reaction(id="r4")
        react4.add_metabolites({met3: -1})

        react5 = Reaction(id="r5")
        react5.add_metabolites({met4: -1})

        model.add_reactions((react1, react2, react3, react4, react5))

        fluxes = {
            react1.id: 1,
            react2.id: -1,
            react3.id: -1,
            react4.id: 1,
            react5.id: 1
        }

        status, yields = get_yields(fluxes, model)
        assert status is True
        assert yields == {
            "C": {
                met3: 0.4,
                met4: 0.6
            },
            "H": {
                met3: 9 / 22,
                met4: 13 / 22
            },
            "O": {
                met3: 7 / 16,
                met4: 9 / 16
            },
            "P": {
                met3: 0.5,
                met4: 0.5
            }
        }
Ejemplo n.º 7
0
    def test_reference_statistics(self):
        model = Model("m1")
        ref1 = Reference()
        modeltest = ModelTest()
        modeltest.add_reference(ref1)
        ref2 = Reference()
        evidence = Evidence()
        evidence.add_reference(ref2)
        ref3 = Reference()

        model.add_reference(ref1)
        model.add_reference(ref2)
        model.add_reference(ref3)

        model.setup_tables()

        result = reference_statistics(model)
        assert result["Total"] == 3
        assert result["Unassigned"] == 1
Ejemplo n.º 8
0
    def test_deletion_emits_changed(self):
        parent = QWidget()
        widget = ReferenceDisplayWidget(parent)
        test = ModelTest()
        reference = Reference()
        test.add_reference(reference)
        model = Model()

        widget.set_item(test, model)

        detector = Mock()
        widget.changed.connect(detector.test)

        widget.tableView.selectRow(0)
        QtTest.QTest.mouseClick(widget.button_del_item, QtCore.Qt.LeftButton)
        assert widget.dataTable.rowCount() == 0
        assert detector.test.called is True
        assert widget.content_changed is True
Ejemplo n.º 9
0
    def test_saving_items(self):

        parent = QWidget()
        widget = ReferenceDisplayWidget(parent)
        test = ModelTest()
        reference = Reference()
        test.add_reference(reference)

        model = Model()

        widget.set_item(test, model)

        new_test = ModelTest()
        widget.item = new_test

        assert len(new_test.references) == 0
        widget.save_state()
        assert len(new_test.references) == 1

        new_reference = list(new_test.references)[0]

        assert new_reference is reference
Ejemplo n.º 10
0
    def test_merging_reaction(self):
        model = Model("m1")

        react1 = Reaction("r1")
        anno1 = Annotation(collection="ec-code", identifier="2.1.7.0")
        react1.add_annotation(anno1)
        evidence1 = Evidence(entity=react1)
        gene1 = Gene("g1")
        react1.add_child(gene1)
        model.add_evidence(evidence1)

        react2 = Reaction("r2")
        anno2 = Annotation(collection="ec-code", identifier="2.1.7.1")
        react2.add_annotation(anno2)
        evidence2 = Evidence(entity=react2)
        gene2 = Gene("g2")
        react2.add_child(gene2)
        model.add_evidence(evidence2)

        react3 = Reaction("r3")
        anno3 = Annotation(collection="ec-code", identifier="2.1.7.1")
        react3.add_annotation(anno3)
        evidence3 = Evidence(entity=react3)
        gene3 = Gene("g3")
        react3.add_child(gene3)
        model.add_evidence(evidence3)

        model.add_genes((gene1, gene2, gene3))
        model.add_reactions((react1, react2, react3))
        model.setup_reaction_table()

        # Action
        merge_reactions([react1, react2, react3], react1)

        # Check annotation added
        assert anno1 in react1.annotation
        assert anno2 in react1.annotation
        assert anno3 in react3.annotation

        # Check evidences transferred during merge
        assert evidence2 not in react2.evidences
        assert evidence2 in react1.evidences
        assert react1 is evidence2.entity

        assert evidence3 not in react3.evidences
        assert evidence3 in react1.evidences
        assert react1 is evidence3.entity

        # Check merged reactions removed
        assert react2 not in model.reactions
        assert react3 not in model.reactions

        # Check genes transferred during merge
        assert react2 not in gene2.reactions
        assert react1 in gene2.reactions

        assert react3 not in gene3.reactions
        assert react1 in gene3.reactions

        # Check new genegroup is formed
        group = list(react1._children)[0]
        assert gene1 in group._children
        assert gene2 in group._children
        assert gene3 in group._children
        assert group.type == "or"
Ejemplo n.º 11
0
    def test_get_reaction_statistics(self, progress):
        model = Model("model1")
        metabolite1 = Metabolite("m1")
        metabolite2 = Metabolite("m2")
        metabolite7 = Metabolite("m7")

        # Add inverted reactions
        reaction1 = Reaction("r1")
        reaction1.add_metabolites({metabolite1: -1, metabolite2: 1})
        reaction2 = Reaction("r2")
        reaction2.add_metabolites({metabolite1: 1, metabolite2: -1})

        # Add boundary reaction
        reaction3 = Reaction("r3")
        reaction3.add_metabolites({metabolite1: -1})

        # Add transport reaction
        metabolite3 = Metabolite("m3", compartment="c")
        metabolite4 = Metabolite("m4", compartment="e")
        reaction4 = Reaction("r4")
        reaction4.add_metabolites({metabolite3: -1, metabolite4: 1})

        # Add unbalanced reaction
        metabolite5 = Metabolite("m5", formula="H")
        metabolite6 = Metabolite("m6", formula="C")
        reaction5 = Reaction("r5")
        reaction5.add_metabolites({metabolite5: -1, metabolite6: 1})

        # Add reaction with gene
        reaction6 = Reaction("r6")
        reaction6.add_metabolites({metabolite1: -1, metabolite7: 1})
        gene = Gene()
        reaction6.add_child(gene)

        # Add reaction with annotation
        reaction7 = Reaction("r7")
        reaction7.add_metabolites({metabolite2: -1, metabolite7: 1})
        reaction7.add_annotation(Annotation("chebi", "CHEBI:1235"))

        model.add_reactions([
            reaction1, reaction2, reaction3, reaction4, reaction5, reaction6,
            reaction7
        ])

        # Action
        output_statistics = reaction_statistics(model)

        # Return value of reaction_statistics:
        #
        # ("Total", num_reactions),
        # ("Transport", num_transport),
        # ("Boundary", num_boundary),
        # ("Unbalanced", num_unbalanced),
        # ("Annotated", num_annotated),
        # ("No genes", num_no_genes),
        # ("Evidence for presence", num_has_presence_evidence),
        # ("Known gene", num_known_gene)

        # Check total state
        assert output_statistics["Total"] == 7

        # Check transport reactions
        assert output_statistics["Transport"] == 1

        # Check boundary reactions
        assert output_statistics["Boundary"] == 1

        # Check boundary reactions
        assert output_statistics["Unbalanced"] == 1

        # Check annotated
        assert output_statistics["Annotated"] == 1

        # Check no genes
        # Note: Boundary reactions are excluded from the counting
        assert output_statistics["No genes"] == 5

        # Check evidence for presence
        # Todo: Implement test
        assert True

        # Check known gene
        # Todo: Implement test
        assert True

        # Check that tests exist for all gathered statistics
        assert len(output_statistics) == 8  # Change to number of tests