code: def spectral_entropy(X, Band, Fs, Power_Ratio=None):
      
  
      if Power_Ratio is None:
          Power, Power_Ratio = bin_power(X, Band, Fs)
  
      Spectral_Entropy = 0
      for i in range(0, len(Power_Ratio) - 1):
          Spectral_Entropy += Power_Ratio[i] * numpy.log(Power_Ratio[i])
      Spectral_Entropy /= numpy.log(
          len(Power_Ratio)
      )  # to save time, minus one is omitted
      return -1 * Spectral_Entropy
docs: Compute spectral entropy of a time series from either two cases below:
      1. X, the time series (default)
      2. Power_Ratio, a list of normalized signal power in a set of frequency
      bins defined in Band (if Power_Ratio is provided, recommended to speed up)
  
      In case 1, Power_Ratio is computed by bin_power() function.
  
      Notes
      -----
      To speed up, it is recommended to compute Power_Ratio before calling this
      function because it may also be used by other functions whereas computing
      it here again will slow down.
  
      Parameters
      ----------
  
      Band
          list
  
          boundary frequencies (in Hz) of bins. They can be unequal bins, e.g.
          [0.5,4,7,12,30] which are delta, theta, alpha and beta respectively.
          You can also use range() function of Python to generate equal bins and
          pass the generated list to this function.
  
          Each element of Band is a physical frequency and shall not exceed the
          Nyquist frequency, i.e., half of sampling frequency.
  
       X
          list
  
          a 1-D real time series.
  
      Fs
          integer
  
          the sampling rate in physical frequency
  
      Returns
      -------
  
      As indicated in return line
  
      See Also
      --------
      bin_power: pyeeg function that computes spectral power in frequency bins