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
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
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
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
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
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 } }
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
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
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
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"
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