docstr: Tests Sobol and GPEI instantiation through the Models enum.
code: def test_enum_sobol_GPEI(self) -> None:
      """Tests Sobol and GPEI instantiation through the Models enum."""
      exp = get_branin_experiment()
      # Check that factory generates a valid sobol modelbridge.
      sobol = Models.SOBOL(search_space=exp.search_space)
      self.assertIsInstance(sobol, RandomModelBridge)
      for _ in range(5):
          sobol_run = sobol.gen(n=1)
          self.assertEqual(sobol_run._model_key, "Sobol")
          exp.new_batch_trial().add_generator_run(sobol_run).run()
      # Check that factory generates a valid GP+EI modelbridge.
      exp.optimization_config = get_branin_optimization_config()
      gpei = Models.GPEI(experiment=exp, data=exp.fetch_data())
      self.assertIsInstance(gpei, TorchModelBridge)
      self.assertEqual(gpei._model_key, "GPEI")
      botorch_defaults = "ax.models.torch.botorch_defaults"
      # Check that the callable kwargs and the torch kwargs were recorded.
      self.assertEqual(
          gpei._model_kwargs,
          {
              "acqf_constructor": {
                  "is_callable_as_path": True,
                  "value": f"{botorch_defaults}.get_qLogNEI",
              },
              "acqf_optimizer": {
                  "is_callable_as_path": True,
                  "value": f"{botorch_defaults}.scipy_optimizer",
              },
              "model_constructor": {
                  "is_callable_as_path": True,
                  "value": f"{botorch_defaults}.get_and_fit_model",
              },
              "model_predictor": {
                  "is_callable_as_path": True,
                  "value": "ax.models.torch.utils.predict_from_model",
              },
              "best_point_recommender": {
                  "is_callable_as_path": True,
                  "value": f"{botorch_defaults}.recommend_best_observed_point",
              },
              "refit_on_cv": False,
              "refit_on_update": True,
              "warm_start_refitting": True,
              "use_input_warping": False,
              "use_loocv_pseudo_likelihood": False,
              "prior": None,
          },
      )
      self.assertEqual(
          gpei._bridge_kwargs,
          {
              "transform_configs": None,
              "torch_dtype": torch.float64,
              "torch_device": None,
              "status_quo_name": None,
              "status_quo_features": None,
              "optimization_config": None,
              "transforms": Cont_X_trans + Y_trans,
              "fit_out_of_design": False,
              "fit_abandoned": False,
              "fit_tracking_metrics": True,
              "fit_on_init": True,
              "default_model_gen_options": None,
          },
      )
      prior_kwargs = {"lengthscale_prior": GammaPrior(6.0, 6.0)}
      gpei = Models.GPEI(
          experiment=exp,
          data=exp.fetch_data(),
          search_space=exp.search_space,
          prior=prior_kwargs,
      )
      self.assertIsInstance(gpei, TorchModelBridge)
      self.assertEqual(
          gpei._model_kwargs["prior"],  # pyre-ignore
          prior_kwargs,
      )
  
imports: from collections import OrderedDict
  import numpy
  import pandas
  import torch
  from ax.core.data import Data
  from ax.core.observation import ObservationFeatures
  from ax.modelbridge.discrete import DiscreteModelBridge
  from ax.modelbridge.random import RandomModelBridge
  from ax.modelbridge.registry import Cont_X_trans, get_model_from_generator_run, MODEL_KEY_TO_MODEL_SETUP, Models, Y_trans
  from ax.modelbridge.torch import TorchModelBridge
  from ax.models.base import Model
  from ax.models.discrete.eb_thompson import EmpiricalBayesThompsonSampler
  from ax.models.discrete.thompson import ThompsonSampler
  from ax.models.random.alebo_initializer import ALEBOInitializer
  from ax.models.torch.alebo import ALEBO
  from ax.models.torch.botorch_modular.acquisition import Acquisition
  from ax.models.torch.botorch_modular.kernels import ScaleMaternKernel
  from ax.models.torch.botorch_modular.model import BoTorchModel, SurrogateSpec
  from ax.models.torch.botorch_modular.surrogate import Surrogate
  from ax.models.torch.botorch_moo import MultiObjectiveBotorchModel
  from ax.utils.common.constants import Keys
  from ax.utils.common.kwargs import get_function_argument_names
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_branin_data, get_branin_experiment, get_branin_experiment_with_status_quo_trials, get_branin_optimization_config, get_factorial_experiment
  from ax.utils.testing.mock import fast_botorch_optimize
  from botorch.acquisition.monte_carlo import qExpectedImprovement
  from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP
  from botorch.models.fully_bayesian_multitask import SaasFullyBayesianMultiTaskGP
  from botorch.models.gp_regression import SingleTaskGP
  from botorch.models.model_list_gp_regression import ModelListGP
  from botorch.models.multitask import MultiTaskGP
  from botorch.utils.types import DEFAULT
  from gpytorch.kernels.matern_kernel import MaternKernel
  from gpytorch.kernels.scale_kernel import ScaleKernel
  from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood
  from gpytorch.priors.torch_priors import GammaPrior
label_desc: Use image node_id 3 for calling the ModelRegistryTest obj's underlying member method code with example usage: obj.test_enum_sobol_GPEI() without return types