コード例 #1
0
 def test_peak_search(self):
     data = Orange.data.Table("IFG_single.dpt").X[0]
     assert find_zpd(data, PeakSearch.MAXIMUM) == data.argmax()
     assert find_zpd(data, PeakSearch.MINIMUM) == data.argmin()
     assert find_zpd(data, PeakSearch.ABSOLUTE) == abs(data).argmax()
     data *= -1
     assert find_zpd(data, PeakSearch.ABSOLUTE) == abs(data).argmax()
コード例 #2
0
 def test_peak_search(self):
     data = self.ifg_single.X[0]
     assert find_zpd(data, PeakSearch.MAXIMUM) == data.argmax()
     assert find_zpd(data, PeakSearch.MINIMUM) == data.argmin()
     assert find_zpd(data, PeakSearch.ABSOLUTE) == abs(data).argmax()
     data *= -1
     assert find_zpd(data, PeakSearch.ABSOLUTE) == abs(data).argmax()
コード例 #3
0
 def test_peak_search(self):
     data = self.ifg_single.X[0]
     assert find_zpd(data, PeakSearch.MAXIMUM) == data.argmax()
     assert find_zpd(data, PeakSearch.MINIMUM) == data.argmin()
     assert find_zpd(data, PeakSearch.ABSOLUTE) == abs(data).argmax()
     data *= -1
     assert find_zpd(data, PeakSearch.ABSOLUTE) == abs(data).argmax()
コード例 #4
0
    def determine_sweeps(self):
        """
        Determine if input interferogram is single-sweep or
        double-sweep (Forward-Backward).

        Combines with auto_sweeps and custom sweeps setting.
        """
        # Just testing 1st row for now
        # assuming all in a group were collected the same way
        data = self.data.X[0]
        zpd = irfft.find_zpd(data, self.peak_search)
        middle = data.shape[0] // 2
        # Allow variation of +/- 0.4 % in zpd location
        var = middle // 250
        if zpd >= middle - var and zpd <= middle + var:
            # single, symmetric
            sweeps = 0
        else:
            try:
                data = np.hsplit(data, 2)
            except ValueError:
                # odd number of data points, probably single
                sweeps = 0
            else:
                zpd1 = irfft.find_zpd(data[0], self.peak_search)
                zpd2 = irfft.find_zpd(data[1][::-1], self.peak_search)
                # Forward / backward zpds never perfectly match
                if zpd1 >= zpd2 - var and zpd1 <= zpd2 + var:
                    # forward-backward, symmetric and asymmetric
                    sweeps = 1
                else:
                    # single, asymetric
                    sweeps = 0
        # Honour custom sweeps setting
        if self.auto_sweeps:
            self.sweeps = sweeps
        elif sweeps == 0:
            # Coerce setting to match input data (single)
            self.sweeps = sweeps
        elif sweeps == 1 and self.sweeps == 0:
            # Coerce setting to match input data (single -> forward)
            self.sweeps = 2
コード例 #5
0
ファイル: owfft.py プロジェクト: markotoplak/orange-infrared
    def determine_sweeps(self):
        """
        Determine if input interferogram is single-sweep or
        double-sweep (Forward-Backward).

        Combines with auto_sweeps and custom sweeps setting.
        """
        # Just testing 1st row for now
        # assuming all in a group were collected the same way
        data = self.data.X[0]
        zpd = irfft.find_zpd(data, self.peak_search)
        middle = data.shape[0] // 2
        # Allow variation of +/- 0.4 % in zpd location
        var = middle // 250
        if zpd >= middle - var and zpd <= middle + var:
            # single, symmetric
            sweeps = 0
        else:
            try:
                data = np.hsplit(data, 2)
            except ValueError:
                # odd number of data points, probably single
                sweeps = 0
            else:
                zpd1 = irfft.find_zpd(data[0], self.peak_search)
                zpd2 = irfft.find_zpd(data[1][::-1], self.peak_search)
                # Forward / backward zpds never perfectly match
                if zpd1 >= zpd2 - var and zpd1 <= zpd2 + var:
                    # forward-backward, symmetric and asymmetric
                    sweeps = 1
                else:
                    # single, asymetric
                    sweeps = 0
        # Honour custom sweeps setting
        if self.auto_sweeps:
            self.sweeps = sweeps
        elif sweeps == 0:
            # Coerce setting to match input data (single)
            self.sweeps = sweeps
        elif sweeps == 1 and self.sweeps == 0:
            # Coerce setting to match input data (single -> forward)
            self.sweeps = 2