File size: 1,724 Bytes
8d6c767
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
Carregador de modelos de avaliação.
Carrega arquivos .dai via joblib.
"""
from pathlib import Path
from typing import Optional
import joblib

from .model_data import ModelData


def load_model(model_path: Path) -> Optional[ModelData]:
    """
    Carrega um modelo de avaliação a partir de uma pasta.

    Args:
        model_path: Caminho para a pasta do modelo (contendo modelo.dai)

    Returns:
        ModelData com os dados carregados, ou None se falhar
    """
    dai_path = model_path / "modelo.dai"

    if not dai_path.exists():
        return None

    try:
        data = joblib.load(dai_path)
    except Exception as e:
        print(f"Erro ao carregar {dai_path}: {e}")
        return None

    model = ModelData(
        nome=model_path.name,
        path=model_path,
        xy_preview=data.get('Xy_preview_out_coords'),
        top_x_esc=data.get('top_X_esc'),
        top_y_esc=data.get('top_y_esc'),
        estatisticas=data.get('estatisticas'),
        tabelas_coef=data.get('tabelas_coef'),
        tabelas_obs_calc=data.get('tabelas_obs_calc'),
        modelos_resumos=data.get('modelos_resumos', {}),
        modelos_sm=data.get('modelos_sm'),
        formatted_top_transformation_info=data.get('formatted_top_transformation_info', []),
        graf_model=data.get('graf_model', ''),
    )

    return model


def load_model_by_name(name: str, models_dir: Path) -> Optional[ModelData]:
    """
    Carrega um modelo pelo nome.

    Args:
        name: Nome do modelo (nome da pasta)
        models_dir: Diretório raiz dos modelos

    Returns:
        ModelData com os dados carregados, ou None se não encontrar
    """
    model_path = models_dir / name
    return load_model(model_path)