Source code for ax.benchmark.utils
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
from typing import List, Optional, Tuple, Union, cast
from ax.benchmark.benchmark_problem import BenchmarkProblem
from ax.modelbridge.generation_strategy import GenerationStrategy
[docs]def get_problems_and_methods(
problems: Optional[Union[List[BenchmarkProblem], List[str]]] = None,
methods: Optional[Union[List[GenerationStrategy], List[str]]] = None,
) -> Tuple[List[BenchmarkProblem], List[GenerationStrategy]]:
"""Validate problems and methods; find them by string keys if passed as
strings.
"""
if (
problems is None
or methods is None
# pyre-fixme[16]: `None` has no attribute `__iter__`.
or not all(isinstance(p, BenchmarkProblem) for p in problems)
or not all(isinstance(m, GenerationStrategy) for m in methods)
):
raise NotImplementedError # TODO (done in D18009570)
return (
cast(List[BenchmarkProblem], problems),
cast(List[GenerationStrategy], methods),
)
[docs]def get_corresponding(
value_or_matrix: Union[int, List[List[int]]], row: int, col: int
) -> int:
"""If `value_or_matrix` is a matrix, extract the value in cell specified by
`row` and `col`. If `value_or_matrix` is a scalar, just return it.
"""
if isinstance(value_or_matrix, list):
assert all(isinstance(x, list) for x in value_or_matrix)
return value_or_matrix[row][col]
assert isinstance(value_or_matrix, int)
return value_or_matrix