class_docstr: Weight the acquisition function with a user-defined prior over the optimum.
  
  See "piBO: Augmenting Acquisition Functions with User Beliefs for Bayesian Optimization" by Carl
  Hvarfner et al. [HSSL22]_ for further details.
  
  Parameters
  ----------
  decay_beta: float
      Decay factor on the user prior. A solid default value for decay_beta (empirically founded) is
      ``scenario.n_trials`` / 10.
  prior_floor : float, defaults to 1e-12
      Lowest possible value of the prior to ensure non-negativity for all values in the search space.
  discretize : bool, defaults to False
      Whether to discretize (bin) the densities for continous parameters. Triggered for Random Forest models and
      continous hyperparameters to avoid a pathological case where all Random Forest randomness is removed
      (RF surrogates require piecewise constant acquisition functions to be well-behaved).
  discrete_bins_factor : float, defaults to 10.0
      If discretizing, the multiple on the number of allowed bins for each parameter.
code: def __init__(
      self,
      acquisition_function: AbstractAcquisitionFunction,
      decay_beta: float,
      prior_floor: float = 1e-12,
      discretize: bool = False,
      discrete_bins_factor: float = 10.0,
  ):
      super().__init__()
      self._acquisition_function: AbstractAcquisitionFunction = (
          acquisition_function
      )
      self._functions: list[AbstractAcquisitionFunction] = []
      self._eta: float | None = None
  
      self._hyperparameters: dict[Any, Configuration] | None = None
      self._decay_beta = decay_beta
      self._prior_floor = prior_floor
      self._discretize = discretize
      self._discrete_bins_factor = discrete_bins_factor
  
      # check if the acquisition function is LCB or TS - then the acquisition function values
      # need to be rescaled to assure positiveness & correct magnitude
      if isinstance(
          self._acquisition_function, IntegratedAcquisitionFunction
      ):
          acquisition_type = (
              self._acquisition_function._acquisition_function
          )
      else:
          acquisition_type = self._acquisition_function
  
      self._rescale = isinstance(acquisition_type, (LCB, TS))
      self._iteration_number = 0
  
imports: from __future__ import annotations
  from typing import Any
  import numpy
  from ConfigSpace import Configuration
  from ConfigSpace.hyperparameters import FloatHyperparameter
  from smac.acquisition.function.abstract_acquisition_function import AbstractAcquisitionFunction
  from smac.acquisition.function.confidence_bound import LCB
  from smac.acquisition.function.integrated_acquisition_function import IntegratedAcquisitionFunction
  from smac.acquisition.function.thompson import TS
  from smac.model.abstract_model import AbstractModel
  from smac.model.random_forest.abstract_random_forest import AbstractRandomForest
  from smac.utils.logging import get_logger
label_desc: Use image node_id 1 to create a new PriorAcquisitionFunction object from inherited base classes: AbstractAcquisitionFunction with example: obj = PriorAcquisitionFunction(acquisition_function, decay_beta, prior_floor, discretize, discrete_bins_factor)