Source code for gui.core.Lookup

import numpy as np
import pandas as pd
from PyQt5 import QtWidgets

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


[docs] class Lookup(Ui_Form, Modules):
[docs] def setupUi(self, Form): super().setupUi(Form) Modules.setupUi(self, Form)
[docs] def get_widget(self): return self.groupBox
[docs] def connectWidgets(self): self.setComboBox(self.choosedata, self.datakeys) self.setComboBox(self.choosemeta, self.datakeys) try: metalabel = self.data[self.choosedata.currentText()].meta_label self.setComboBox( self.left_on, self.data[self.choosedata.currentText()].df[metalabel].columns.values, ) except: try: self.setComboBox(self.left_on, [""]) except: pass try: metalabel = self.data[self.choosemeta.currentText()].meta_label self.setComboBox( self.right_on, self.data[self.choosemeta.currentText()].df[metalabel].columns.values, ) except: try: self.setComboBox(self.right_on, [""]) except: pass self.choosedata.currentIndexChanged.connect( lambda: self.set_choices(self.choosedata, self.left_on) ) self.choosemeta.currentIndexChanged.connect( lambda: self.set_choices(self.choosemeta, self.right_on) )
[docs] def set_choices(self, combobox_data, combobox_choices): try: metalabel = self.data[combobox_data.currentText()].meta_label choices = ( self.data[combobox_data.currentText()].df[metalabel].columns.values ) self.setComboBox(combobox_choices, choices) except: pass
[docs] def read_lookupdata(self): try: print("Reading lookup data...") self.lookupdata = pd.read_csv( self.lookupfilename, skiprows=self.skiprows_spin.value(), encoding="latin", ) print("Done reading.") right_on_options = [ self.right_on.itemText(i) for i in range(self.right_on.count()) ] new_options = self.lookupdata.columns.values # only reset the combobox if the choices are different if np.array_equal(right_on_options, new_options): pass # if they're the same (e.g. during restore) do # nothing. This way we don't lose the selection else: self.setComboBox(self.right_on, new_options) except: pass
[docs] def run(self): left_on = self.left_on.currentText() right_on = self.right_on.currentText() datakey = self.choosedata.currentText() # Use spectral data method to perform lookup self.data[datakey].lookup( # Lookup dataframe self.data[self.choosemeta.currentText()].df, left_on, right_on, )
if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Lookup() ui.setupUi(Form) Form.show() sys.exit(app.exec_())