from PyQt5 import QtWidgets
import gui.core.baselineRemovalMethods as brm
from gui.ui.BaselineRemoval import Ui_Form
from gui.util import Qtickle
from gui.util.Modules import Modules
from libpyhat.spectral_data import SpectralData
[docs]
class BaselineRemoval(Ui_Form, Modules):
[docs]
    def setupUi(self, Form):
        self.Form = Form
        super().setupUi(Form)
        Modules.setupUi(self, Form)
        self.baselineMethods() 
[docs]
    def getGuiParams(self):
        """
        Overriding Modules' getGuiParams, because I'll need to do a list of
        lists
        in order to obtain the regressionMethods' parameters
        """
        self.qt = Qtickle.Qtickle(self)
        s = []
        s.append(self.qt.guiSave())
        for items in self.alg:
            s.append(items.getGuiParams())
        return s 
[docs]
    def setGuiParams(self, dict):
        self.qt = Qtickle.Qtickle(self)
        self.qt.guiRestore(dict[0])
        for i in range(len(dict)):
            self.alg[i - 1].setGuiParams(dict[i]) 
[docs]
    def run(self):
        Modules.data_count += 1
        self.baseline_index = Modules.data_count
        Modules.data_count += 1
        self.baseline_removed_index = Modules.data_count
        method = self.chooseAlgorithmComboBox.currentText()
        datakey = self.chooseDataComboBox.currentText()
        # return method parameters and parameters that changed
        methodParameters, _changed = self.getMethodParams(
            self.chooseAlgorithmComboBox.currentIndex()
        )
        datakey_new = datakey + "-Baseline Removed-" + method + str(_changed)
        datakey_baseline = datakey + "-Baseline-" + method + str(_changed)
        self.list_amend(self.datakeys, self.baseline_index, datakey_baseline)
        self.list_amend(self.datakeys, self.baseline_removed_index, datakey_new)
        self.data[datakey_new] = SpectralData(
            self.data[datakey].df.copy(deep=True), name=datakey
        )
        self.data[datakey_new].remove_baseline(
            method, segment=True, params=methodParameters
        )
        self.data[datakey_baseline] = SpectralData(
            self.data[datakey_new].df_baseline, name=datakey_baseline
        ) 
[docs]
    def hideAll(self):
        for a in self.alg:
            a.setHidden(True) 
[docs]
    def getMethodParams(self, index):
        return self.alg[index - 1].run() 
[docs]
    def baselineMethods(self):
        self.alg = []
        list_forms = [
            brm.AirPLS,
            brm.ALS,
            brm.Dietrich,
            brm.FABC,
            brm.KK,
            brm.Median,
            brm.Polyfit,
            brm.Rubberband,
            brm.WaveletSpline,
            brm.MinInterp,
        ]
        for items in list_forms:
            self.alg.append(items.Ui_Form())
            self.alg[-1].setupUi(self.Form)
            self.algorithmLayout.addWidget(self.alg[-1].get_widget())
            self.alg[-1].setHidden(True) 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = BaselineRemoval()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())