import os.path
import pandas as pd
from PyQt5 import QtWidgets
from gui.ui.LoadData import Ui_loadData
from gui.util.Modules import Modules
from libpyhat.spectral_data import SpectralData
[docs]
class LoadData(Ui_loadData, Modules):
"""
Loads the data into the UI.
The data needs to be a *.csv in order for this application to work
"""
# def delete(self):
# Modules.data_count -= 1
[docs]
def setupUi(self, Form):
super().setupUi(Form)
Modules.setupUi(self, Form)
# so it should start off hidden
[docs]
def hide_field(self, checkbox, lineEdit, label):
if checkbox.isChecked():
lineEdit.setHidden(False)
label.setHidden(False)
else:
lineEdit.setHidden(True)
label.setHidden(True)
[docs]
def run(self, filename=None, keyname=None):
Modules.data_count += 1
self.count = Modules.data_count
if filename is None:
filename = self.fileNameLineEdit.text()
if keyname is None:
keyname = self.dataSetNameLineEdit.text()
if self.spectralcheckBox.isChecked():
spect_label = self.spectLineEdit.text()
else:
spect_label = None
if self.metacheckBox.isChecked():
meta_label = self.metalineEdit.text()
else:
meta_label = None
if self.compcheckBox.isChecked():
comp_label = self.complineEdit.text()
else:
comp_label = None
# if the datakey exists, add a number to it to make it unique
number = 1
while keyname in self.datakeys:
number += 1
keyname = keyname + ' - ' + str(number)
print('Loading data file: ' + str(filename))
try:
data = pd.read_csv(
filename, header=[0, 1], verbose=False,
encoding='utf-8-sig',
skiprows=self.skipspinBox.value()
)
except:
data = pd.read_csv(
filename, header=[0, 1], verbose=False,
encoding='latin',
skiprows=self.skipspinBox.value()
)
self.data[keyname] = SpectralData(
data, name=keyname,
spect_label=spect_label,
meta_label=meta_label,
comp_label=comp_label
)
self.data[keyname].remove_unnamed()
self.data[keyname].remove_duplicates()
self.data[keyname].remove_empty_spectra()
self.list_amend(self.datakeys, self.count, keyname)
self.datafiles[keyname] = os.path.basename(filename)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = LoadData()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())