code: def _update_parameters(self):
          
          self.repr_points, self.repr_points_log = self.sampler.get_samples(self.num_repr_points, self.proposal_function, self.burn_in_steps)
  
          if np.any(np.isnan(self.repr_points_log)) or np.any(np.isposinf(self.repr_points_log)):
              raise RuntimeError("Sampler generated representer points with invalid log values: {}".format(self.repr_points_log))
  
          # Removing representer points that have 0 probability of being the minimum (corresponding to log probability being minus infinity)
          idx_to_remove = np.where(np.isneginf(self.repr_points_log))[0]
          if len(idx_to_remove) > 0:
              idx = list(set(range(self.num_repr_points)) - set(idx_to_remove))
              self.repr_points = self.repr_points[idx, :]
              self.repr_points_log = self.repr_points_log[idx]
  
          # We predict with the noise as we need to make sure that var is indeed positive definite.
          mu, _ = self.model.predict(self.repr_points)
          # we need a vector
          mu = np.ndarray.flatten(mu)
          var = self.model.predict_covariance(self.repr_points)
          
          self.logP, self.dlogPdMu, self.dlogPdSigma, self.dlogPdMudMu = epmgp.joint_min(mu, var, with_derivatives=True)
          # add a second dimension to the array
          self.logP = np.reshape(self.logP, (self.logP.shape[0], 1))
docs: Update parameters of the acquisition required to evaluate the function. In particular:
              * Sample representer points repr_points
              * Compute their log values repr_points_log
              * Compute belief locations logP