code: def fft(self, nfft=None):
          
          from ..frequencyseries import FrequencySeries
          if nfft is None:
              nfft = self.size
          dft = npfft.rfft(self.value, n=nfft) / nfft
          dft[1:] *= 2.0
          new = FrequencySeries(dft, epoch=self.epoch, unit=self.unit,
                                name=self.name, channel=self.channel)
          try:
              new.frequencies = npfft.rfftfreq(nfft, d=self.dx.value)
          except AttributeError:
              new.frequencies = numpy.arange(new.size) / (nfft * self.dx.value)
          return new
docs: Compute the one-dimensional discrete Fourier transform of
          this `TimeSeries`.
  
          Parameters
          ----------
          nfft : `int`, optional
              length of the desired Fourier transform, input will be
              cropped or padded to match the desired length.
              If nfft is not given, the length of the `TimeSeries`
              will be used
  
          Returns
          -------
          out : `~gwpy.frequencyseries.FrequencySeries`
              the normalised, complex-valued FFT `FrequencySeries`.
  
          See Also
          --------
          :mod:`scipy.fftpack` for the definition of the DFT and conventions
          used.
  
          Notes
          -----
          This method, in constrast to the :func:`numpy.fft.rfft` method
          it calls, applies the necessary normalisation such that the
          amplitude of the output `~gwpy.frequencyseries.FrequencySeries` is
          correct.