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()
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()
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()
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
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