code: def get_hyperparameter_search_space(
      feat_type: Optional[FEAT_TYPE_TYPE] = None,
      dataset_properties=None,
  ):
      alpha = UniformFloatHyperparameter(
          name="alpha", lower=0.01, upper=0.5, default_value=0.1
      )
  
      if dataset_properties is not None and dataset_properties.get(
          "sparse"
      ):
          choices = ["mutual_info_regression", "f_regression"]
      else:
          choices = ["f_regression"]
  
      score_func = CategoricalHyperparameter(
          name="score_func",
          choices=choices,
          default_value="f_regression",
      )
  
      mode = CategoricalHyperparameter(
          "mode", ["fpr", "fdr", "fwe"], "fpr"
      )
  
      cs = ConfigurationSpace()
      cs.add_hyperparameter(alpha)
      cs.add_hyperparameter(score_func)
      cs.add_hyperparameter(mode)
  
      # Mutual info consistently crashes if percentile is not the mode
      if "mutual_info_regression" in choices:
          cond = NotEqualsCondition(
              mode, score_func, "mutual_info_regression"
          )
          cs.add_condition(cond)
  
      return cs
  
file_path: auto-sklearn/autosklearn/pipeline/components/feature_preprocessing/select_rates_regression.py
imports: from typing import Optional
  from functools import partial
  from ConfigSpace import NotEqualsCondition
  from ConfigSpace.configuration_space import ConfigurationSpace
  from ConfigSpace.hyperparameters import CategoricalHyperparameter, UniformFloatHyperparameter
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  from autosklearn.pipeline.components.base import AutoSklearnPreprocessingAlgorithm
  from autosklearn.pipeline.constants import DENSE, INPUT, SPARSE, UNSIGNED_DATA
label_desc: Use image node_id 5 for calling the SelectRegressionRates obj's underlying member method code with example usage: obj.get_hyperparameter_search_space(feat_type, dataset_properties) and returns: cs