code: def sine_psd(data, delta, number_of_tapers=None, number_of_iterations=2,
               degree_of_smoothing=1.0, statistics=False, verbose=False):
      if verbose is True:
          verbose = C.byref(C.c_char('y'))
      else:
          verbose = None
      if number_of_tapers is None:
          number_of_tapers = 0
      mt = _MtspecType("float32")
      data = np.require(data, dtype=mt.float, requirements=[mt.order])
      npts = len(data)
      number_of_frequency_bins = int(npts / 2) + 1
      frequency_bins = mt.empty(number_of_frequency_bins)
      spectrum = mt.empty(number_of_frequency_bins)
      if statistics is True:
          tapers_per_freq_point = np.empty(number_of_frequency_bins,
                                           dtype='int32', order=mt.order)
          tapers_per_freq_point_p = \
              tapers_per_freq_point.ctypes.data_as(C.POINTER(C.c_int))
          errors = mt.empty((number_of_frequency_bins, 2))
      else:
          tapers_per_freq_point_p = errors = None
      mtspeclib.sine_psd_(
          C.byref(C.c_int(npts)),
          C.byref(C.c_float(delta)), mt.p(data),
          C.byref(C.c_int(number_of_tapers)),
          C.byref(C.c_int(number_of_iterations)),
          C.byref(C.c_float(degree_of_smoothing)),
          C.byref(C.c_int(number_of_frequency_bins)),
          mt.p(frequency_bins), mt.p(spectrum),
          tapers_per_freq_point_p, mt.p(errors), verbose)
      return_values = [spectrum, frequency_bins]
      if statistics is True:
          return_values.extend([errors, tapers_per_freq_point])
      return return_values