def test_setting_resetting_boundaries(self): gene = Gene() reaction = Reaction(lower_bound=-1000., upper_bound=1000.) reaction.add_child(gene) gene.functional = True condition = GeneSetting(gene, False) assert gene.functional is True assert reaction.upper_bound == 1000. assert reaction.lower_bound == -1000. condition.do() assert gene.functional is False assert reaction.upper_bound == 0. assert reaction.lower_bound == 0. condition.undo() assert gene.functional is True assert reaction.upper_bound == 1000. assert reaction.lower_bound == -1000. # Check that calling undo second time does not change value condition.undo() assert gene.functional is True assert reaction.upper_bound == 1000. assert reaction.lower_bound == -1000.
def test_addition_emits_changed(self): parent = QWidget() widget = GeneSettingDisplayWidget(parent) test = ModelTest() gene = Gene() setting = GeneSetting(gene, False) model = Model() test.add_setting(setting) widget.set_item(test, model) detector = Mock() widget.changed.connect(detector.test) widget.dataTable.update_row_from_item(GeneSetting(Gene(), True)) assert detector.test.called is True assert widget.content_changed is True
def item_from_row(self, row_idx): """ Return the setting object as represented in a table row """ choice = self.item(row_idx, 1).text() if choice == "active": functional = True elif choice == "inactive": functional = False else: raise ValueError( "Unknown state '{}' for gene activity.".format(choice)) return GeneSetting(gene=self.item(row_idx, 0).link, activity=functional)
def test_modification_emits_changed(self): parent = QWidget() widget = GeneSettingDisplayWidget(parent) test = ModelTest() gene = Gene() setting = GeneSetting(gene, True) model = Model() test.add_setting(setting) widget.set_item(test, model) detector = Mock() widget.changed.connect(detector.test) widget.dataTable.item(0, 1).setText("inactive") assert detector.test.called is True assert widget.content_changed is True
def setup_complete_model(self): self.model = Model("model") # Setup reaction1 self.metabolite = Metabolite("m1") self.reaction = Reaction("r1") self.gene = Gene("g1") self.reaction.add_child(self.gene) self.model.add_genes((self.gene,)) self.reaction.add_metabolites({self.metabolite: -1}) self.model.add_reactions((self.reaction,)) # Setup reaction2 self.metabolite2 = Metabolite("m2") self.reaction2 = Reaction("r2") self.gene2 = Gene("g2") self.genegroup = GeneGroup() self.genegroup.add_child(self.gene2) self.reaction2.add_child(self.genegroup) self.model.add_genes((self.gene2,)) self.reaction2.add_metabolites({self.metabolite2: 1}) self.model.add_reactions((self.reaction2,)) # Setup evidences self.evidence = Evidence(assertion="Catalyzes") self.evidence.set_entity(self.gene) self.evidence.set_target(self.reaction) self.reference = Reference() self.model.add_reference(self.reference) self.evidence.add_reference(self.reference) self.model.add_evidence(self.evidence) # Setup test case self.testcase = ModelTest() reaction_setting = ReactionSetting(self.reaction, 1000., -1000., 0.) gene_setting = GeneSetting(gene=self.gene2, activity=False) outcome = Outcome(self.reaction2, 0., "greater") self.testcase.add_outcome(outcome) self.testcase.add_setting(gene_setting) self.testcase.add_setting(reaction_setting) self.model.add_test(self.testcase) self.reference2 = Reference() self.model.add_reference(self.reference2) self.testcase.add_reference(self.reference2) self.model.setup_tables()
def test_setting_item(self): parent = QWidget() widget = GeneSettingDisplayWidget(parent) test = ModelTest() gene = Gene() setting = GeneSetting(gene, False) model = Model() test.add_setting(setting) widget.dataTable.populate_table = Mock() widget.set_item(test, model) widget.dataTable.populate_table.assert_called_once_with( test.gene_settings) assert widget.model is model assert widget.model_test is test
def test_deletion_emits_changed(self): parent = QWidget() widget = GeneSettingDisplayWidget(parent) test = ModelTest() gene = Gene() setting = GeneSetting(gene, False) model = Model() test.add_setting(setting) 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 = GeneSettingDisplayWidget(parent) test = ModelTest() gene = Gene() setting = GeneSetting(gene, False) model = Model() test.add_setting(setting) widget.set_item(test, model) new_test = ModelTest() widget.model_test = new_test assert len(new_test.gene_settings) == 0 widget.save_state() assert len(new_test.gene_settings) == 1 new_setting = list(new_test.gene_settings)[0] assert new_setting == setting assert new_setting is not setting
def parse_test_from_xml(model_node, model, progress=None): list_of_tests_node = model_node.find(ge_listOfTests) if list_of_tests_node is None: return elif progress is None: pass elif not progress.wasCanceled(): progress.setLabelText("Reading test cases...") progress.setRange(0, len(list_of_tests_node)) else: return for i, test_node in enumerate(list_of_tests_node.iterfind(ge_testCase)): if progress is None: pass elif not progress.wasCanceled(): progress.setValue(i) QApplication.processEvents() else: return new_test = ModelTest(description=test_node.get("description"), comment=test_node.get("comment")) settings_list_node = test_node.find(ge_listOfSettings) outcomes_list_node = test_node.find(ge_listOfOutcomes) reference_list_node = test_node.find(ge_listOfReferenceLinks) # Add settings if settings_list_node is not None: for setting_node in settings_list_node.iterfind( ge_reactionSetting): reaction = model.reactions.get_by_id( clip(setting_node.get("reactionId"), "R_")) new_setting = ReactionSetting( reaction=reaction, upper_bound=float(setting_node.get("upperBound")), lower_bound=float(setting_node.get("lowerBound")), objective_coefficient=float( setting_node.get("objectiveCoefficient"))) new_test.add_setting(new_setting) for gene_setting_node in settings_list_node.iterfind( ge_geneSetting): gene = model.genes.get_by_id( clip(gene_setting_node.get("geneId"), "G_")) new_setting = GeneSetting(gene) if gene_setting_node.get("active") == "True": new_setting.activity = True elif gene_setting_node.get("active") == "False": new_setting.activity = False else: raise ValueError( "Unexpected value for activity in gene setting.") new_test.add_setting(new_setting) # Add outcomes if outcomes_list_node is not None: for outcome_node in outcomes_list_node.iterfind(ge_outcome): reaction = model.reactions.get_by_id( clip(outcome_node.get("reactionId"), "R_")) new_outcome = Outcome(reaction=reaction, value=float(outcome_node.get("value")), operator=outcome_node.get("operator")) new_test.add_outcome(new_outcome) # Add references if reference_list_node is not None: for refLink_node in reference_list_node.iterfind(ge_referenceLink): new_test.add_reference( model.references[refLink_node.get("id")]) model.tests.append(new_test)
def setup_items(self): self.test = ModelTest() self.outcome1 = Outcome() self.reaction_setting = ReactionSetting() self.gene_setting = GeneSetting() self.reference1 = Reference()