import numpy as np
import pandas as pd
from PyQt5 import QtWidgets
from gui.ui.PeakAreas import Ui_Form
from gui.util.Modules import Modules
[docs]
class PeakAreas(Ui_Form, Modules):
[docs]
    def setupUi(self, Form):
        super().setupUi(Form)
        Modules.setupUi(self, Form) 
[docs]
    def run(self):
        datakey = self.chooseDataComboBox.currentText()
        peaks_mins_file = self.peakMinimaLineEdit.text()
        if peaks_mins_file == "None (calculate from average spectrum)":
            peaks_mins_file = None
        try:
            self.data[datakey].peak_area(peaks_mins_file)
            spect_label = self.data[datakey].spect_label
            print("Peak Areas Calculated")
            output = pd.DataFrame(columns=['type', spect_label])
            types = np.hstack(
                (np.repeat('peak', len(self.data[datakey].peaks)),
                np.repeat('min', len(self.data[datakey].mins)))
            )
            wvls = np.hstack(
                (self.data[datakey].peaks, self.data[datakey].mins)
            )
            output['type'] = types
            output[spect_label] = wvls
            output.sort_values(spect_label, axis=0, inplace=True)
            output.reset_index(inplace=True, drop=True)
            output.to_csv(self.outpath + r'/peaks_mins.csv')
            print(
                'Peaks and mins saved to ' + self.outpath + '/peaks_mins.csv'
            )
        except Exception as e:
            print(e) 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = PeakAreas()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())