code: def complexity_fisher_info(signal, tau=1, emb_dim=2):
      
  
      mat =  _embed_seq(signal, tau, emb_dim)
      W = np.linalg.svd(mat, compute_uv = False)
      W /= sum(W) # normalize singular values
      FI_v = (W[1:] - W[:-1]) **2 / W[:-1]
  
      fisher_info = np.sum(FI_v)
      return(fisher_info)
docs: Computes the Fisher information of a signal. Based on the `pyrem <https://github.com/gilestrolab/pyrem>`_ repo by Quentin Geissmann.
  
      Parameters
      ----------
      signal : list or array
          List or array of values.
      tau : int
          The delay
      emb_dim : int
          The embedding dimension (*m*, the length of vectors to compare).
  
      Returns
      ----------
      fisher_info : float
          The Fisher information as float value.
  
  
      Example
      ----------
      >>> import neurokit as nk
      >>>
      >>> signal = np.sin(np.log(np.random.sample(666)))
      >>> fisher_info = nk.complexity_fisher_info(signal, 1, 2)
  
      Notes
      ----------
      *Details*
  
      - **Fisher Information**:  A way of measuring the amount of information that an observable random variable X carries about an unknown parameter θ of a distribution that models X. Formally, it is the variance of the score, or the expected value of the observed information.
  
      *Authors*
  
      - Quentin Geissmann (https://github.com/qgeissmann)
  
      *Dependencies*
  
      - numpy
  
      *See Also*
  
      - pyrem package: https://github.com/gilestrolab/pyrem