Source code for ostatslib.states.analysis_features_set
"""
AnalysisFeaturesSet module
"""
from dataclasses import dataclass, field
from typing import Literal
from gymnasium.spaces import Discrete, Box
from ostatslib.states.features_set import FeaturesSet
[docs]def time_convertible_variable_to_feature(time_convertible_variable: str) -> bool | Literal[-1]:
"""
Returns -1 if field is set to None, else returns boolean from string.
Empty string = False and any valid string = True
Args:
time_convertible_variable (str): analysis features set field
Returns:
bool: time_convertible_variable feature value
"""
if time_convertible_variable is None:
return -1
return bool(time_convertible_variable)
[docs]@dataclass(init=False)
class AnalysisFeaturesSet(FeaturesSet):
"""
Class to hold analysis features.
"""
response_variable_label: str = field(
default="result",
metadata={
'gym_space': Discrete(2),
'get_value_fn': bool
})
score: float = field(
default=0,
metadata={
'gym_space': Box(0, 1),
'get_value_fn': None
})
clusters_count: int = field(
default=0,
metadata={
'gym_space': Box(0, 10),
'get_value_fn': None
})
time_convertible_variable: str = field(
default="",
metadata={
'gym_space': Box(-1, 1),
'get_value_fn': time_convertible_variable_to_feature
})