Source code for gui.core.StratifiedFolds

from PyQt5 import QtWidgets

from gui.ui.StratifiedFolds import Ui_Form
from gui.util.Modules import Modules
from libpyhat.spectral_data import SpectralData
from libpyhat.utils.utils import rows_match


[docs] class StratifiedFolds(Ui_Form, Modules):
[docs] def setupUi(self, Form): super().setupUi(Form) Modules.setupUi(self, Form)
[docs] def get_widget(self): return self.formGroupBox
[docs] def connectWidgets(self): self.setComboBox(self.chooseDataToStratifyComboBox, self.datakeys) try: # Some instances where perhaps there is no data to load comp_label = self.data[ self.chooseDataToStratifyComboBox.currentText()].comp_label data = \ self.data[self.chooseDataToStratifyComboBox.currentText()].df[ comp_label].columns.values self.setComboBox(self.chooseVarComboBox, data) data = ['None'] + list(data) self.setComboBox(self.tiebreaker_comboBox, data) except: pass self.chooseDataToStratifyComboBox.activated[int].connect( self.strat_fold_change_vars ) self.nFoldsSpinBox.valueChanged.connect( self.strat_fold_change_testfolds )
[docs] def run(self): Modules.data_count += 1 self.train_ind = Modules.data_count Modules.data_count += 1 self.test_ind = Modules.data_count datakey = self.chooseDataToStratifyComboBox.currentText() nfolds = self.nFoldsSpinBox.value() try: testfold = int(self.testFoldsSpinBox.value()) except: testfold = 1 comp_label = self.data[datakey].comp_label meta_label = self.data[datakey].meta_label colname = (comp_label, self.chooseVarComboBox.currentText()) tiebreaker_col = self.tiebreaker_comboBox.currentText() if tiebreaker_col == 'None': tiebreaker_col = None else: tiebreaker_col = (comp_label, tiebreaker_col) self.data[datakey].stratified_folds(nfolds, colname, tiebreaker_col) self.data[datakey + '-Train'] = SpectralData( rows_match( self.data[datakey].df, (meta_label, 'Folds'), [testfold], invert=True ), name=datakey + '-Train' ) self.data[datakey + '-Test'] = SpectralData( rows_match( self.data[datakey].df, (meta_label, 'Folds'), [testfold] ), name=datakey + '-Test' ) self.list_amend(self.datakeys, self.train_ind, datakey + '-Train') self.list_amend(self.datakeys, self.test_ind, datakey + '-Test') print(self.datakeys) print( 'Test set: ' + str(self.data[datakey + '-Test'].df.index.shape[0]) ) print( 'Training set: ' + str( self.data[datakey + '-Train'].df.index.shape[0] ) )
[docs] def strat_fold_change_vars(self): self.chooseVarComboBox.clear() try: comp_label = self.data[ self.chooseDataToStratifyComboBox.currentText()].comp_label choices = \ self.data[self.chooseDataToStratifyComboBox.currentText()].df[ comp_label].columns.values except: choices = ['No composition columns!'] self.chooseVarComboBox.addItems(choices) choices = ['None'] + list(choices) self.tiebreaker_comboBox.addItems(choices)
[docs] def strat_fold_change_testfolds(self): self.testFoldsSpinBox.setMaximum(self.nFoldsSpinBox.value())
if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = StratifiedFolds() ui.setupUi(Form) Form.show() sys.exit(app.exec_())