Source code for openadmet.models.comparison.compare_base
"""Base class for multi-model comparison."""
from abc import ABC, abstractmethod
from class_registry import ClassRegistry, RegistryKeyError
from pydantic import BaseModel
comparisons = ClassRegistry(unique=True)
[docs]def get_comparison_class(compare_type):
"""Get comparison class."""
try:
compare_class = comparisons.get_class(compare_type)
except RegistryKeyError:
raise ValueError(
f"Comparison type {compare_type} not found in comparisons catalouge"
)
return compare_class
[docs]class ComparisonBase(BaseModel, ABC):
"""Base class for multi-model comparison."""
[docs] @abstractmethod
def compare(model_stats_fns: list[str], model_tags: list[str]):
"""
Compare two model runs.
Parameters
----------
model_stats_fns: list[str]
List of paths to model stats (probably anvil_run/cross_validation_metrics.json)
model_tags: list[str]
List of names for user to identify models, must be in the
same order as model_stats_fns
"""
pass