class_docstr: Time varying squared exponential kernel.
  For more info see the TV-GP-UCB paper:
  http://proceedings.mlr.press/v51/bogunovic16.pdf
class_docstr_tok: ["Time","varying","squared","exponential","kernel",".","For","more","info","see","the","TV-GP-UCB","paper",":","http",":","\/\/proceedings.mlr.press\/v51\/bogunovic16.pdf"]
code: def K(self, X, X2):
      # time must be in the far left column
      if self.epsilon > 0.5:  # 0.5
          self.epsilon = 0.5
      if X2 is None:
          X2 = np.copy(X)
      T1 = X[:, 0].reshape(-1, 1)
      T2 = X2[:, 0].reshape(-1, 1)
      dists = pairwise_distances(T1, T2, "cityblock")
      timekernel = (1 - self.epsilon) ** (0.5 * dists)
  
      X = X[:, 1:]
      X2 = X2[:, 1:]
  
      RBF = self.variance * np.exp(
          -np.square(euclidean_distances(X, X2)) / self.lengthscale
      )
  
      return RBF * timekernel
  
file_path: orion/src/orion/algo/pbt/pb2_utils.py
imports: from copy import deepcopy
  import numpy
  from scipy.optimize import minimize
  from sklearn.metrics import euclidean_distances, pairwise_distances
  from orion.core.utils.module_import import ImportOptional
label_desc: Use image node_id 2 for calling the TVSquaredExp obj's underlying member method code with example usage: obj.K(X, X2) and returns: unknown