diff --git a/optuna_dashboard/_serializer.py b/optuna_dashboard/_serializer.py index 6442fa91..f3e405d4 100644 --- a/optuna_dashboard/_serializer.py +++ b/optuna_dashboard/_serializer.py @@ -7,6 +7,8 @@ from typing import Union import numpy as np from optuna.distributions import BaseDistribution +from optuna.distributions import FloatDistribution +from optuna.distributions import IntDistribution from optuna.study import StudySummary from optuna.trial import FrozenTrial @@ -158,11 +160,47 @@ def serialize_frozen_trial( return serialized +def normalize_distribution(distribution: BaseDistribution) -> BaseDistribution: + if distribution.__class__.__name__ == "UniformDistribution": + return FloatDistribution( + low=getattr(distribution, "low"), + high=getattr(distribution, "high"), + ) + elif distribution.__class__.__name__ == "LogUniformDistribution": + return FloatDistribution( + low=getattr(distribution, "low"), + high=getattr(distribution, "high"), + log=True, + ) + elif distribution.__class__.__name__ == "DiscreteUniformDistribution": + return FloatDistribution( + low=getattr(distribution, "low"), + high=getattr(distribution, "high"), + step=getattr(distribution, "q") + ) + elif distribution.__class__.__name__ == "IntUniformDistribution": + return IntDistribution( + low=getattr(distribution, "low"), + high=getattr(distribution, "high"), + step=getattr(distribution, "step") + ) + elif distribution.__class__.__name__ == "IntLogUniformDistribution": + return IntDistribution( + low=getattr(distribution, "low"), + high=getattr(distribution, "high"), + step=getattr(distribution, "step"), + log=True + ) + else: + return distribution + + def serialize_search_space( search_space: list[tuple[str, BaseDistribution]] ) -> list[dict[str, Any]]: serialized = [] for param_name, distribution in search_space: + distribution = normalize_distribution(distribution) serialized.append( { "name": param_name, diff --git a/optuna_dashboard/ts/types/index.d.ts b/optuna_dashboard/ts/types/index.d.ts index 98c42ed7..2c71848a 100644 --- a/optuna_dashboard/ts/types/index.d.ts +++ b/optuna_dashboard/ts/types/index.d.ts @@ -14,11 +14,6 @@ type StudyDirection = "maximize" | "minimize" | "not_set" type Distribution = | "FloatDistribution" | "IntDistribution" - | "UniformDistribution" - | "LogUniformDistribution" - | "DiscreteUniformDistribution" - | "IntUniformDistribution" - | "IntLogUniformDistribution" | "CategoricalDistribution" type PageId = "history" | "analytics" | "trialTable" | "trialList" | "note"