from PyQt5 import QtWidgets
from gui.ui.Plot_ICA_PCA import Ui_Form
from gui.util.Modules import Modules
from gui.util.plots import pca_ica_plot
[docs]
class Plot_ICA_PCA(Ui_Form, Modules):
[docs]
    def setupUi(self, Form):
        super().setupUi(Form)
        Modules.setupUi(self, Form) 
[docs]
    def run(self):
        cmap = "viridis"
        datakey = self.chooseDataComboBox.currentText()
        method = self.chooseMethodComboBox.currentText()
        dimredkey = datakey + "-" + method
        try:
            dimred_obj = self.dimred[dimredkey]
        except:
            dimred_obj = None
        x_component = self.chooseXVariableComboBox.currentText()
        y_component = self.chooseYVariableComboBox.currentText()
        if self.colorCodedVariableComboBox.currentText() != "None":
            colorvar = self.colorCodedVariableComboBox.currentText()
        else:
            colorvar = None
        filename = self.plotFilenameLineEdit.text()
        figpath, figfile = "/".join(filename.split("/")[:-1]), filename.split("/")[-1]
        pca_ica_plot(
            self.data[datakey],
            x_component,
            y_component,
            dimred_obj,
            colorvar=colorvar,
            cmap=cmap,
            method=method + " (wvl)",
            figpath=figpath,
            figfile=figfile,
        ) 
[docs]
    def xychoices(self):
        try:
            method_tmp = self.chooseMethodComboBox.currentText() + " (wvl)"
            choices = [
                str(i)
                for i in self.data[self.chooseDataComboBox.currentText()].df[method_tmp]
            ]
        except Exception as e:
            print(e)
            choices = ["-"]
        return choices 
[docs]
    def colorchoices_change_vars(self, obj):
        obj.clear()
        choices = ["None"]
        try:
            self.vars_level0 = self.data[
                self.chooseDataComboBox.currentText()
            ].df.columns.get_level_values(0)
            self.vars_level1 = self.data[
                self.chooseDataComboBox.currentText()
            ].df.columns.get_level_values(1)
            col = self.data[self.chooseDataComboBox.currentText()].spect_label
            self.vars_level1 = self.vars_level1[self.vars_level0 != col]
            self.vars_level0 = self.vars_level0[self.vars_level0 != col]
            self.vars_level1 = list(self.vars_level1[self.vars_level0 != "masked"])
            self.vars_level0 = list(self.vars_level0[self.vars_level0 != "masked"])
            try:
                self.vars_level0 = [
                    i for i in self.vars_level0 if "Unnamed" not in str(i)
                ]  # remove unnamed columns from
                # choices
            except Exception as e:
                print(e)
                pass
            try:
                self.vars_level1 = [
                    i for i in self.vars_level1 if "Unnamed" not in str(i)
                ]  # remove unnamed columns from
                # choices
            except Exception as e:
                print(e)
                pass
            for i in self.vars_level1:
                choices.append(str(i))
        except Exception as e:
            print(e)
            try:
                temptext = self.chooseDataComboBox.currentText()
                choices.append(self.data[temptext].columns.values)
            except Exception as e:
                print(e)
                pass
        for i in choices:
            obj.addItem(str(i)) 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Plot_ICA_PCA()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())