code: def estimate_frequency(self, start: int, end: int, sample_rate: float):
          
          # ensure power of 2 for faster fft
          length = 2 ** int(math.log2(end - start))
          data = self.data[start:start + length]
  
          try:
              w = np.fft.fft(data)
              frequencies = np.fft.fftfreq(len(w))
              idx = np.argmax(np.abs(w))
              freq = frequencies[idx]
              freq_in_hertz = abs(freq * sample_rate)
          except ValueError:
              # No samples in window e.g. start == end, use a fallback
              freq_in_hertz = 100e3
  
          return freq_in_hertz
docs: Estimate the frequency of the baseband signal using FFT
  
          :param start: Start of the area that shall be investigated
          :param end: End of the area that shall be investigated
          :param sample_rate: Sample rate of the signal
          :return: