Exemple #1
0
 def calculate(self):
     if self.configurationWidget is None:
         stack = self.getStackDataObject()
         index = stack.info.get("McaIndex", -1)
         if index == len(stack.data.shape):
             index = -1
         stack = None
         self.configurationWidget = PCAParametersDialog(None,
                                                        regions=True,
                                                        index=index)
         self._status = qt.QLabel(self.configurationWidget)
         self._status.setAlignment(qt.Qt.AlignHCenter)
         font = qt.QFont(self._status.font())
         font.setBold(True)
         self._status.setFont(font)
         self._status.setText("Ready")
         self.configurationWidget.layout().addWidget(self._status)
     self.configurationWidget.setEnabled(True)
     activeCurve = self.getActiveCurve()
     if activeCurve is None:
         #I could get some defaults from the stack itslef
         raise ValueError("Please select an active curve")
         return
     x, spectrum, legend, info = activeCurve
     spectrumLength = max(spectrum.shape)
     oldValue = self.configurationWidget.nPC.value()
     self.configurationWidget.nPC.setMaximum(spectrumLength)
     self.configurationWidget.nPC.setValue(min(oldValue, spectrumLength))
     binningOptions = [1]
     for number in [2, 3, 4, 5, 7, 9, 10, 11, 13, 15, 17, 19]:
         if (spectrumLength % number) == 0:
             binningOptions.append(number)
     # TODO: Should inform the configuration widget about the possibility
     #       to encounter non-finite data?
     ddict = {'options': binningOptions,
              'binning': 1,
              'method': 0}
     self.configurationWidget.setParameters(ddict)
     y = spectrum
     self.configurationWidget.setSpectrum(x, y, legend=legend, info=info)
     self.configurationWidget.show()
     ret = self.configurationWidget.exec()
     if ret:
         self._kMeansWidget = None
         self._executeFunctionAndParameters()