class_docstr: Soft Tophat prior as it used in the original spearmint code.
  
  Parameters
  ----------
  lower_bound : float
      Lower bound of the prior. In original scale.
  upper_bound : float
      Upper bound of the prior. In original scale.
  exponent : float
      Exponent of the prior.
  seed : int, defaults to 0
code: def __init__(
      self,
      lower_bound: float,
      upper_bound: float,
      exponent: float,
      seed: int = 0,
  ) -> None:
      super().__init__(seed=seed)
  
      with warnings.catch_warnings():
          warnings.simplefilter("error")
          self._lower_bound = lower_bound
          try:
              self._log_lower_bound = np.log(lower_bound)
          except RuntimeWarning as w:
              if "invalid value encountered in log" in w.args[0]:
                  raise ValueError(
                      "Invalid lower bound %f (cannot compute log)"
                      % lower_bound
                  )
  
              raise w
          self._upper_bound = upper_bound
          try:
              self._log_upper_bound = np.log(upper_bound)
          except RuntimeWarning as w:
              if "invalid value encountered in log" in w.args[0]:
                  raise ValueError(
                      "Invalid lower bound %f (cannot compute log)"
                      % lower_bound
                  )
  
              raise w
  
      if exponent <= 0:
          raise ValueError(
              "Exponent cannot be less or equal than zero (but is %f)"
              % exponent
          )
  
      self._exponent = exponent
  
imports: from __future__ import annotations
  from typing import Any
  import warnings
  import numpy
  from smac.model.gaussian_process.priors.abstract_prior import AbstractPrior
label_desc: Use image node_id 1 to create a new SoftTopHatPrior object from inherited base classes: AbstractPrior with example: obj = SoftTopHatPrior(lower_bound, upper_bound, exponent, seed)