Skip to content

Commit

Permalink
Add parameter normalization to Config attrs class
Browse files Browse the repository at this point in the history
  • Loading branch information
madeline-scyphers committed Aug 2, 2023
1 parent 09dd989 commit 8db1776
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion boa/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,29 @@ def _scheduler_converter(scheduler_options: dict) -> SchedulerOptions:
return SchedulerOptions(**scheduler_options)


def _parameter_normalization(
parameters: list[TParameterRepresentation] | dict[str, dict]
) -> list[TParameterRepresentation]:
if isinstance(parameters, list):
return parameters
new_parameters = []
for param, d in parameters.items():
d["name"] = param # Add "name" attribute for each parameter
# remove bounds on fixed params
if d.get("type", "") == "fixed" and "bounds" in d:
del d["bounds"]
# Remove value on range params
if d.get("type", "") == "range" and "value" in d:
del d["value"]

new_parameters.append(d)
return new_parameters


@define
class Config:
objectives: list[Objective] = field(converter=lambda ls: [Objective(**obj) for obj in ls])
parameters: list[TParameterRepresentation]
parameters: list[TParameterRepresentation] = field(converter=_parameter_normalization)
outcome_constraints: list[str] = None
objective_thresholds: list[str] = None
generation_steps: Optional[list[GenerationStep]] = field(default=None, converter=_gen_step_converter)
Expand Down

0 comments on commit 8db1776

Please sign in to comment.