class_docstr: An implementation of `"GraphWave" <https://dl.acm.org/citation.cfm?id=2806512>`_
  from the KDD '18 paper "Learning Structural Node Embeddings Via Diffusion Wavelets".
  The procedure first calculates the graph wavelets using a heat kernel. The wavelets
  are treated as probability distributions over nodes from a source node. Using these
  the characteristic function is evaluated at certain gird points to learn structural
  node embeddings of the vertices.
  
  Args:
      sample_number (int): Number of evaluation points. Default is 200.
      step_size (float): Grid point step size. Default is 0.1.
      heat_coefficient (float): Heat kernel coefficient. Default is 1.0.
      approximation (int): Chebyshev polynomial order. Default is 100.
      mechanism (str): Wavelet calculation method one of:
                       (:obj:`"exact"`, :obj:`"approximate"`). Default is 'approximate'.
      switch (int): Vertex cardinality when the wavelet calculation method switches to approximation. Default is 1000.
      seed (int): Random seed value. Default is 42.
docstr: Calculating the characteristic function for a given node, using the eigen decomposition.
  
  Arg types:
      * **node** *(int)* - The node being embedded.
  
  Return types:
      * **wavelet_coefficients** *(Numpy array)* - The wavelet representation of the node.
docstr_tok: ["Calculating","the","characteristic","function","for","a","given","node",",","using","the","eigen","decomposition",".","Arg","types",":","*","*","*","node","*","*","*","(","int",")","*","-","The","node","being","embedded",".","Return","types",":","*","*","*","wavelet_coefficients","*","*","*","(","Numpy","array",")","*","-","The","wavelet","representation","of","the","node","."]
code: def _single_wavelet_generator(self, node):
      """
      Calculating the characteristic function for a given node, using the eigen decomposition.
  
      Arg types:
          * **node** *(int)* - The node being embedded.
  
      Return types:
          * **wavelet_coefficients** *(Numpy array)* - The wavelet representation of the node.
      """
      impulse = np.zeros((self._number_of_nodes))
      impulse[node] = 1.0
      diags = np.diag(
          np.exp(-self.heat_coefficient * self._eigen_values)
      )
      eigen_diag = np.dot(self._eigen_vectors, diags)
      waves = np.dot(eigen_diag, np.transpose(self._eigen_vectors))
      wavelet_coefficients = np.dot(waves, impulse)
      return wavelet_coefficients
  
file_path: karateclub/karateclub/node_embedding/structural/graphwave.py
imports: import pygsp
  import numpy
  import networkx
  from karateclub.estimator import Estimator
label_desc: Use image node_id 4 for calling the GraphWave obj's underlying member method code with example usage: obj._single_wavelet_generator(node) and returns: wavelet_coefficients