code: def test_replication_sobol_surrogate(self) -> None:
      method = get_sobol_benchmark_method()
  
      for name, problem in [
          ("soo", get_soo_surrogate()),
          ("moo", get_moo_surrogate()),
      ]:
          with self.subTest(name, problem=problem):
              surrogate, datasets = not_none(
                  problem.get_surrogate_and_datasets
              )()
              datasets = [get_dataset()]
              surrogate.fit(
                  datasets,
                  metric_names=datasets[0].outcome_names,
                  search_space_digest=extract_search_space_digest(
                      problem.search_space,
                      param_names=[
                          *problem.search_space.parameters.keys()
                      ],
                  ),
              )
              res = benchmark_replication(
                  problem=problem, method=method, seed=0
              )
  
              self.assertEqual(
                  min(
                      problem.num_trials,
                      not_none(method.scheduler_options.total_trials),
                  ),
                  len(not_none(res.experiment).trials),
              )
  
              self.assertTrue(np.isfinite(res.score_trace).all())
              self.assertTrue(np.all(res.score_trace <= 100))
  
imports: import tempfile
  import numpy
  from ax.benchmark.benchmark import benchmark_multiple_problems_methods, benchmark_one_method_problem, benchmark_replication
  from ax.benchmark.benchmark_method import BenchmarkMethod, get_sequential_optimization_scheduler_options
  from ax.benchmark.benchmark_problem import SingleObjectiveBenchmarkProblem
  from ax.benchmark.benchmark_result import BenchmarkResult
  from ax.benchmark.methods.modular_botorch import get_sobol_botorch_modular_acquisition
  from ax.benchmark.problems.registry import get_problem
  from ax.modelbridge.modelbridge_utils import extract_search_space_digest
  from ax.service.utils.scheduler_options import SchedulerOptions
  from ax.storage.json_store.load import load_experiment
  from ax.storage.json_store.save import save_experiment
  from ax.utils.common.testutils import TestCase
  from ax.utils.common.typeutils import not_none
  from ax.utils.testing.benchmark_stubs import get_moo_surrogate, get_multi_objective_benchmark_problem, get_single_objective_benchmark_problem, get_sobol_benchmark_method, get_soo_surrogate
  from ax.utils.testing.core_stubs import get_dataset, get_experiment
  from ax.utils.testing.mock import fast_botorch_optimize
  from botorch.acquisition.logei import qLogNoisyExpectedImprovement
  from botorch.acquisition.multi_objective.monte_carlo import qNoisyExpectedHypervolumeImprovement
  from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP
  from botorch.models.gp_regression import FixedNoiseGP, SingleTaskGP
  from botorch.test_functions.synthetic import Branin
label_desc: Use image node_id 4 for calling the TestBenchmark obj's underlying member method code with example usage: obj.test_replication_sobol_surrogate() without return types