code: def heat(inp, timescales=np.logspace(-2, 2, 250), eigenvalues='auto', normalization='empty', normalized_laplacian=True):
      
      return netlsd(inp, timescales, 'heat', eigenvalues, normalization, normalized_laplacian)
docs: Computes heat kernel trace from some given input, timescales, and normalization.
  
      Accepts matrices, common Python graph libraries' graphs, or vectors of eigenvalues. 
      For precise definition, please refer to "NetLSD: Hearing the Shape of a Graph" by A. Tsitsulin, D. Mottin, P. Karras, A. Bronstein, E. Müller. Published at KDD'18.
      
      Parameters
      ----------
      inp: obj
          2D numpy/scipy matrix, common Python graph libraries' graph, or vector of eigenvalues
      timescales : numpy.ndarray
          Vector of discrete timesteps for the kernel computation
      eigenvalues : str
          Either string or int or tuple
          Number of eigenvalues to compute / use for approximation.
          If string, we expect either 'full' or 'auto', otherwise error will be raised. 'auto' lets the program decide based on the faithful usage. 'full' computes all eigenvalues.
          If int, compute n_eivals eigenvalues from each side and approximate using linear growth approximation.
          If tuple, we expect two ints, first for lower part of approximation, and second for the upper part.
      normalization : str or numpy.ndarray
          Either 'empty', 'complete' or None.
          If None or any ther value, return unnormalized heat kernel trace.
          For the details how 'empty' and 'complete' are computed, please refer to the paper.
          If np.ndarray, they are treated as exact normalization constants
      normalized_laplacian: bool
          Defines whether the eigenvalues came from the normalized Laplacian. It only affects 'complete' normalization.
  
      Returns
      -------
      numpy.ndarray
          Heat kernel trace signature