Source code for gui.core.RemoveRows

import numpy as np
from PyQt5 import QtWidgets

from gui.ui.RemoveRows import Ui_Form
from gui.util.Modules import Modules


[docs] class remove_operation: def __init__(self, colname, operator, value, logic=None, hidden=None): self.colname = colname self.operator = operator self.value = value self.logic = logic self.hidden = hidden if hidden is not None: self.hidden.setHidden(True) self.hidden.stateChanged.connect(self.Hidden)
[docs] def Hidden(self): if self.hidden.isChecked(): self.colname.setHidden(True) self.operator.setHidden(True) self.value.setHidden(True) try: self.logic.setHidden(True) except: pass else: self.colname.setHidden(False) self.operator.setHidden(False) self.value.setHidden(False) try: self.logic.setHidden(False) except: pass
[docs] def GetValues(self): try: return { 'column': self.colname.currentText(), 'operator': self.operator.currentText(), 'value': self.value.currentText().split(' : ')[0], 'logic': self.logic.currentText() } except: return { 'column': self.colname.currentText(), 'operator': self.operator.currentText(), 'value': self.value.currentText().split(' : ')[0] }
[docs] class RemoveRows(Ui_Form, Modules):
[docs] def setupUi(self, Form): super().setupUi(Form) self.setup_remove_operations() Modules.setupUi(self, Form)
[docs] def setup_remove_operations(self): self.operations = [ remove_operation( self.colName_1, self.operator_1, self.value_1, logic=self.logic_1 ), remove_operation( self.colName_2, self.operator_2, self.value_2, logic=self.logic_2, hidden=self.hidden_2 ), remove_operation( self.colName_3, self.operator_3, self.value_3, logic=self.logic_3, hidden=self.hidden_3 ), remove_operation( self.colName_4, self.operator_4, self.value_4, logic=self.logic_4, hidden=self.hidden_4 ), remove_operation( self.colName_5, self.operator_5, self.value_5, hidden=self.hidden_5 )] for i in self.operations: try: i.hidden.setChecked(True) except: pass i.colname.currentIndexChanged.connect(lambda: self.update_vals())
[docs] def get_widget(self): return self.groupBox
[docs] def connectWidgets(self): self.setComboBox(self.chooseData, self.datakeys) self.chooseData.currentIndexChanged.connect(lambda: self.update_cols()) self.update_cols() self.connect_logic()
[docs] def update_cols(self): for i in self.operations: self.setComboBox(i.colname, self.get_colname_choices()) self.update_vals()
[docs] def update_vals(self): for i in self.operations: self.setComboBox( i.value, self.get_rowval_choices(i.colname.currentText()) )
[docs] def connect_logic(self): for i in self.operations: try: i.logic.currentIndexChanged.connect( lambda: self.hide_operations() ) except: pass
[docs] def hide_operations(self): for i in range(len(self.operations) - 1): try: if self.operations[i].logic.currentText() == 'and': self.operations[i + 1].hidden.setChecked(False) else: self.operations[i + 1].hidden.setChecked(True) if self.operations[i + 1].logic.currentText() == 'and': self.operations[i].logic.setEnabled(False) else: self.operations[i].logic.setEnabled(True) except: pass
[docs] def run(self): datakey = self.chooseData.currentText() matching_values = [] for i in self.operations: if i.hidden is None: matching_values.append(i.GetValues()) elif i.hidden.isChecked() is False: matching_values.append(i.GetValues()) else: pass self.data[datakey].remove_rows(matching_values)
[docs] def get_colname_choices(self): try: self.vars_level0 = self.data[ self.chooseData.currentText()].df.columns.get_level_values(0) self.vars_level1 = self.data[ self.chooseData.currentText()].df.columns.get_level_values(1) spect_label = self.data[self.chooseData.currentText()].spect_label self.vars_level1 = list( self.vars_level1[ np.logical_and( self.vars_level0 != spect_label, self.vars_level0 != 'masked' )] ) self.vars_level0 = list( self.vars_level0[ np.logical_and( self.vars_level0 != spect_label, self.vars_level0 != 'masked' )] ) colnamechoices = self.vars_level1 except: try: colnamechoices = self.data[ self.chooseData.currentText()].columns.values except: colnamechoices = [] colnamechoices = [i for i in colnamechoices if 'Unnamed' not in str( i )] # remove unnamed columns from choices return colnamechoices
[docs] def get_rowval_choices(self, colname): try: colname = ( self.vars_level0[self.vars_level1.index(colname)], colname) choices = self.data[self.chooseData.currentText()].df[colname] nchoice = [] try: choices = np.sort(choices) except: pass choices = [str(i) for i in choices] for choice in choices: if not choice + ' : ' + str(choices.count(choice)) in nchoice: nchoice.append(choice + ' : ' + str(choices.count(choice))) choices = nchoice except: choices = ['-'] return choices
if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = RemoveRows() ui.setupUi(Form) Form.show() sys.exit(app.exec_())