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 _transform_search_space(
      self, search_space: SearchSpace
  ) -> SearchSpace:
      for p_name, p in search_space.parameters.items():
          if p_name in self.transform_parameters and isinstance(
              p, RangeParameter
          ):
              p.set_log_scale(False).update_range(
                  lower=math.log10(p.lower), upper=math.log10(p.upper)
              )
              if p.target_value is not None:
                  p._target_value = math.log10(
                      p.target_value
                  )  # pyre-ignore [6]
      return search_space
  
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 3 for calling the Log obj's underlying member method code with example usage: obj._transform_search_space(search_space) and returns: search_space