class_docstr: Apply log base 10 to a float RangeParameter domain.
  
  Transform is done in-place.
class_docstr_tok: ["Apply","log","base","10","to","a","float","RangeParameter","domain",".","Transform","is","done","in-place","."]
code: def __init__(
      self,
      search_space: Optional[SearchSpace] = None,
      observations: Optional[List[Observation]] = None,
      modelbridge: Optional[
          "modelbridge_module.base.ModelBridge"
      ] = None,
      config: Optional[TConfig] = None,
  ) -> None:
      assert search_space is not None, "Log requires search space"
      # Identify parameters that should be transformed
      self.transform_parameters: Set[str] = {
          p_name
          for p_name, p in search_space.parameters.items()
          if isinstance(p, RangeParameter)
          and p.parameter_type == ParameterType.FLOAT
          and p.log_scale is True
      }
  
file_path: Ax/ax/modelbridge/transforms/log.py
imports: import math
  from typing import List, Optional, Set, TYPE_CHECKING
  from ax.core.observation import Observation, ObservationFeatures
  from ax.core.parameter import ParameterType, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.transforms.base import Transform
  from ax.models.types import TConfig
label_desc: Use image node_id 1 to create a new Log object from inherited base classes: Transform with example: obj = Log(search_space, observations, modelbridge, config)