class_docstr: Record of the Experiment creation event. This can be used for telemetry in settings
  where many Experiments are being created either manually or programatically. In
  order to facilitate easy serialization only include simple types: numbers, strings,
  bools, and None.
docstr: Return counts of different types of parameters.
  
  returns:
      num_continuous_range_parameters
  
      num_int_range_parameters_small
      num_int_range_parameters_medium
      num_int_range_parameters_large
  
      num_log_scale_range_parameters
  
      num_unordered_choice_parameters_small
      num_unordered_choice_parameters_medium
      num_unordered_choice_parameters_large
  
      num_fixed_parameters
docstr_tok: ["Return","counts","of","different","types","of","parameters",".","returns",":","num_continuous_range_parameters","num_int_range_parameters_small","num_int_range_parameters_medium","num_int_range_parameters_large","num_log_scale_range_parameters","num_unordered_choice_parameters_small","num_unordered_choice_parameters_medium","num_unordered_choice_parameters_large","num_fixed_parameters"]
code: def _get_param_counts_from_search_space(
      search_space: SearchSpace,
  ) -> Tuple[int, int, int, int, int, int, int, int, int]:
      """
      Return counts of different types of parameters.
  
      returns:
          num_continuous_range_parameters
  
          num_int_range_parameters_small
          num_int_range_parameters_medium
          num_int_range_parameters_large
  
          num_log_scale_range_parameters
  
          num_unordered_choice_parameters_small
          num_unordered_choice_parameters_medium
          num_unordered_choice_parameters_large
  
          num_fixed_parameters
      """
  
      num_continuous_range_parameters = sum(
          1
          for param in search_space.parameters.values()
          if isinstance(param, RangeParameter)
          and param.parameter_type == ParameterType.FLOAT
      )
      num_int_range_parameters_small = sum(
          1
          for param in search_space.parameters.values()
          if (
              isinstance(param, RangeParameter)
              or (
                  isinstance(param, ChoiceParameter)
                  and param.is_ordered
              )
          )
          and (1 < param.cardinality() <= 3)
      )
      num_int_range_parameters_medium = sum(
          1
          for param in search_space.parameters.values()
          if (
              isinstance(param, RangeParameter)
              or (
                  isinstance(param, ChoiceParameter)
                  and param.is_ordered
              )
          )
          and (3 < param.cardinality() <= 7)
      )
      num_int_range_parameters_large = sum(
          1
          for param in search_space.parameters.values()
          if (
              isinstance(param, RangeParameter)
              or (
                  isinstance(param, ChoiceParameter)
                  and param.is_ordered
              )
          )
          and (7 < param.cardinality() < inf)
      )
      num_log_scale_range_parameters = sum(
          1
          for param in search_space.parameters.values()
          if isinstance(param, RangeParameter) and param.log_scale
      )
      num_unordered_choice_parameters_small = sum(
          1
          for param in search_space.parameters.values()
          if (
              isinstance(param, ChoiceParameter)
              and not param.is_ordered
          )
          and (1 < param.cardinality() <= 3)
      )
      num_unordered_choice_parameters_medium = sum(
          1
          for param in search_space.parameters.values()
          if (
              isinstance(param, ChoiceParameter)
              and not param.is_ordered
          )
          and (3 < param.cardinality() <= 7)
      )
      num_unordered_choice_parameters_large = sum(
          1
          for param in search_space.parameters.values()
          if (
              isinstance(param, ChoiceParameter)
              and not param.is_ordered
          )
          and param.cardinality() > 7
      )
      num_fixed_parameters = sum(
          1
          for param in search_space.parameters.values()
          if isinstance(param, FixedParameter)
      )
  
      return (
          num_continuous_range_parameters,
          num_int_range_parameters_small,
          num_int_range_parameters_medium,
          num_int_range_parameters_large,
          num_log_scale_range_parameters,
          num_unordered_choice_parameters_small,
          num_unordered_choice_parameters_medium,
          num_unordered_choice_parameters_large,
          num_fixed_parameters,
      )
  
file_path: Ax/ax/telemetry/experiment.py
imports: from __future__ import annotations
  from dataclasses import dataclass
  from math import inf
  from typing import Dict, List, Optional, Tuple
  from ax.core.base_trial import TrialStatus
  from ax.core.experiment import Experiment
  from ax.core.map_metric import MapMetric
  from ax.core.parameter import ChoiceParameter, FixedParameter, ParameterType, RangeParameter
  from ax.core.search_space import HierarchicalSearchSpace, SearchSpace
  from ax.core.utils import get_model_times
  from ax.telemetry.common import INITIALIZATION_MODELS, OTHER_MODELS
label_desc: Use image node_id 2 for calling the ExperimentCreatedRecord obj's underlying member method code with example usage: obj._get_param_counts_from_search_space(search_space) and returns: num_continuous_range_parameters,  num_int_range_parameters_small,  num_int_range_parameters_medium,  num_int_range_parameters_large,  num_log_scale_range_parameters,  num_unordered_choice_parameters_small,  num_unordered_choice_parameters_medium,  num_unordered_choice_parameters_large,  num_fixed_parameters