code: def pdf(self, x_test):
  		
  		N,D = self.data.shape
  		x_test = np.asfortranarray(x_test)
  		x_test = x_test.reshape([-1, D])
  		
  		pdfs = self._individual_pdfs(x_test)
  		#import pdb; pdb.set_trace()
  		# combine values based on fully_dimensional!
  		if self.fully_dimensional:
  			# first the product of the individual pdfs for each point in the data across dimensions and then the average (factorized kernel)
  			pdfs = np.sum(np.prod(pdfs, axis=-1)*self.weights[None, :], axis=-1)
  		else:
  			# first the average over the 1d pdfs and the the product over dimensions (TPE like factorization of the pdf)
  			pdfs = np.prod(np.sum(pdfs*self.weights[None,:,None], axis=-2), axis=-1)
  		return(pdfs)
docs: Computes the probability density function at all x_test