code: def fourier_segments(self):
          
          if not self._fourier_segments:
              self._fourier_segments = []
              for seg_slice, ana in zip(self.segment_slices, self.analyze_slices):
                  if seg_slice.start >= 0 and seg_slice.stop <= len(self.strain):
                      freq_seg = make_frequency_series(self.strain[seg_slice])
                  # Assume that we cannot have a case where we both zero-pad on
                  # both sides
                  elif seg_slice.start < 0:
                      strain_chunk = self.strain[:seg_slice.stop]
                      strain_chunk.prepend_zeros(-seg_slice.start)
                      freq_seg = make_frequency_series(strain_chunk)
                  elif seg_slice.stop > len(self.strain):
                      strain_chunk = self.strain[seg_slice.start:]
                      strain_chunk.append_zeros(seg_slice.stop - len(self.strain))
                      freq_seg = make_frequency_series(strain_chunk)
                  freq_seg.analyze = ana
                  freq_seg.cumulative_index = seg_slice.start + ana.start
                  freq_seg.seg_slice = seg_slice
                  self._fourier_segments.append(freq_seg)
  
          return self._fourier_segments
docs: Return a list of the FFT'd segments.
          Return the list of FrequencySeries. Additional properties are
          added that describe the strain segment. The property 'analyze'
          is a slice corresponding to the portion of the time domain equivelant
          of the segment to analyze for triggers. The value 'cumulative_index'
          indexes from the beginning of the original strain series.