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