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 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_())