Coverage for mlos_bench/mlos_bench/storage/sql/tunable_config_data.py: 100%
14 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-20 00:44 +0000
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-20 00:44 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""An interface to access the tunable config data stored in a SQL DB using the
6:py:class:`.TunableConfigData` interface.
7"""
9import pandas
10from sqlalchemy.engine import Engine
12from mlos_bench.storage.base_tunable_config_data import TunableConfigData
13from mlos_bench.storage.sql.schema import DbSchema
16class TunableConfigSqlData(TunableConfigData):
17 """
18 SQL interface for accessing the stored experiment benchmark (tunable) config data.
20 A configuration in this context is the set of tunable parameter values.
21 """
23 def __init__(self, *, engine: Engine, schema: DbSchema, tunable_config_id: int):
24 super().__init__(tunable_config_id=tunable_config_id)
25 self._engine = engine
26 self._schema = schema
28 @property
29 def config_df(self) -> pandas.DataFrame:
30 with self._engine.connect() as conn:
31 cur_config = conn.execute(
32 self._schema.config_param.select()
33 .where(self._schema.config_param.c.config_id == self._tunable_config_id)
34 .order_by(
35 self._schema.config_param.c.param_id,
36 )
37 )
38 return pandas.DataFrame(
39 [(row.param_id, row.param_value) for row in cur_config.fetchall()],
40 columns=["parameter", "value"],
41 )