ttzzs's picture
Deploy Chronos2 Forecasting API v3.0.0 with new SOLID architecture
c40c447 verified
"""
Interface para transformaci贸n de datos.
Define la abstracci贸n para convertir datos entre diferentes formatos,
cumpliendo con ISP (Interface Segregation Principle).
"""
from abc import ABC, abstractmethod
from typing import List, Optional, Dict, Any
import pandas as pd
class IDataTransformer(ABC):
"""
Interface para transformaci贸n de datos de series temporales.
Esta interface est谩 segregada para contener solo m茅todos relacionados
con transformaci贸n de datos (ISP).
"""
@abstractmethod
def build_context_df(
self,
values: List[float],
timestamps: Optional[List[str]] = None,
series_id: str = "series_0",
freq: str = "D"
) -> pd.DataFrame:
"""
Construye un DataFrame de contexto para forecasting.
Args:
values: Lista de valores hist贸ricos
timestamps: Lista de timestamps (opcional, se generan si es None)
series_id: Identificador de la serie
freq: Frecuencia temporal (D=daily, H=hourly, etc.)
Returns:
pd.DataFrame: DataFrame con columnas id, timestamp, target
Raises:
ValueError: Si valores y timestamps tienen longitudes diferentes
"""
pass
@abstractmethod
def parse_prediction_result(
self,
pred_df: pd.DataFrame,
quantile_levels: List[float]
) -> Dict[str, Any]:
"""
Parsea el resultado de predicci贸n a un formato est谩ndar.
Args:
pred_df: DataFrame con predicciones del modelo
quantile_levels: Cuantiles calculados
Returns:
Dict con:
- timestamps: Lista de timestamps
- median: Lista de valores medianos
- quantiles: Dict {cuantil: [valores]}
"""
pass