import numpy as np
from PyQt5 import QtWidgets
from gui.ui.SplitDataset import Ui_Form
from gui.util.Modules import Modules
from libpyhat.spectral_data import SpectralData
[docs]
class SplitDataset(Ui_Form, Modules):
[docs]
def setupUi(self, Form):
super().setupUi(Form)
Modules.setupUi(self, Form)
[docs]
def update_split_choices(self):
choices = self.get_choices()
if choices is not None:
self.setComboBox(self.splitOnUniqueValuesOfComboBox, self.get_choices())
[docs]
def update_datakeys(self, setup=False):
datakey = self.chooseDataComboBox.currentText()
spect_label = self.data[datakey].spect_label
colname = self.splitOnUniqueValuesOfComboBox.currentText()
vars_level0 = self.data[datakey].df.columns.get_level_values(0)
vars_level1 = self.data[datakey].df.columns.get_level_values(1)
vars_level1 = list(vars_level1[vars_level0 != spect_label])
vars_level0 = list(vars_level0[vars_level0 != spect_label])
colname = (vars_level0[vars_level1.index(colname)], colname)
coldata = np.array([str(i) for i in self.data[datakey].df[colname]])
unique_values = np.unique(coldata)
for i in unique_values:
new_datakey = datakey + " - " + str(i)
if new_datakey not in self.datakeys:
Modules.data_count += 1
self.list_amend(self.datakeys, Modules.data_count, new_datakey)
if setup is False:
self.data[new_datakey] = SpectralData(
self.data[datakey].df.iloc[coldata == i], name=new_datakey
)
[docs]
def run(self):
self.update_datakeys(setup=False)
[docs]
def get_choices(self):
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)
self.vars_level1 = list(
self.vars_level1[
(self.vars_level0 != "wvl") & (self.vars_level0 != "masked")
]
)
self.vars_level0 = list(
self.vars_level0[
(self.vars_level0 != "wvl") & (self.vars_level0 != "masked")
]
)
colnamechoices = self.vars_level1
return colnamechoices
except:
try:
colnamechoices = self.data[
self.chooseDataComboBox.currentText()
].columns.values
colnamechoices = [
i for i in colnamechoices if "Unnamed" not in i
] # remove unnamed
# columns from choices
return colnamechoices
except:
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = SplitDataset()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())