Source code for chap_core.model_spec

import inspect
from enum import Enum

from pydantic import BaseModel, PositiveInt

import chap_core.predictor.feature_spec as fs
from chap_core.datatypes import TimeSeriesData

_non_feature_names = {
    "disease_cases",
    "week",
    "month",
    "location",
    "time_period",
    "year",
}


[docs] class PeriodType(Enum): week = "week" month = "month" any = "any" year = "year"
[docs] class ParameterSpec(BaseModel): pass
[docs] class EwarsParamSpec(ParameterSpec): n_weeks: PositiveInt alpha: float
EmptyParameterSpec = {} # TODO: Move to db spec
[docs] class ModelSpec(BaseModel): name: str parameters: dict features: list[fs.Feature] period: PeriodType = PeriodType.any description: str = "No Description yet" author: str = "Unknown Author" targets: str = "disease_cases"
[docs] def get_dataclass(model_class) -> type[TimeSeriesData]: param_type = list(inspect.get_annotations(model_class.train).values())[0] if not hasattr(param_type, "__args__"): return None return param_type.__args__[0]
# return param_type