code: def gauss_kernel(
      x, x_i, rho=0.1, alpha=1.0, n_reduce=-1, point_to_flatten=1
  ):
      """
      Parameters
      ----------
      x : array-like
          points required to compute kernel weight
      x_i : array-like
          reference points location used to compute correspondent distance of each entry points
      rho : float
          smoothing parameter known as "length-scale" in gaussian process
      alpha : float
          marginal standard deviation parameter in gaussian process; one should use 1 in kernel regression
      n_reduce : int
          if greater 0 (default=-1), reduce number of positive weights to such input
      point_to_flatten : float
          the time point starting to flatten the weights; default is 1 for normalized time points
  
      Returns
      -------
      np.ndarray
          2D array with size N x M such that
          N as the number of entry points
          M as the number of reference points
          matrix entries hold the value of weight of each element
  
      See Also
      --------
      1. https://mc-stan.org/docs/2_24/stan-users-guide/gaussian-process-regression.html
      2. https://en.wikipedia.org/wiki/Local_regression
      """
      N = len(x)
      M = len(x_i)
      k = np.zeros((N, M), np.double)
      alpha_sq = alpha**2
      rho_sq_t2 = 2 * rho**2
      for n in range(N):
          if x[n] <= point_to_flatten:
              k[n, :] = alpha_sq * np.exp(
                  -1 * (x[n] - x_i) ** 2 / rho_sq_t2
              )
          else:
              # last weights carried forward for future time points
              k[n, :] = alpha_sq * np.exp(
                  -1 * (point_to_flatten - x_i) ** 2 / rho_sq_t2
              )
  
      if n_reduce > 0:
          k = np.apply_along_axis(
              reduce_by_max, axis=1, arr=k, n=n_reduce
          )
  
      k = k / np.sum(k, axis=1, keepdims=True)
  
      return k
  
imports: import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: gauss_kernel(x, x_i, rho, alpha, n_reduce, point_to_flatten) and returns: k