Source code for NEDAS.assim_tools.covariance

from __future__ import annotations
import importlib
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from NEDAS.core import Context

registry = {
  'ensemble': 'EnsembleCovariance',
  # 'static'
}

[docs] def get_covariance(c: Context): config = c.config if config.covariance_def is None: config.covariance_def = {'type':'ensemble'} if 'type' not in config.covariance_def.keys(): raise KeyError("'type' needs to be specified in covariance_def entries") covariance_type = config.covariance_def['type'].lower() if covariance_type not in registry.keys(): raise NotImplementedError(f"Covariance model '{covariance_type}' not implemented") module = importlib.import_module("NEDAS.assim_tools.covariance."+covariance_type) CovarianceClass = getattr(module, registry[covariance_type]) cov = CovarianceClass(**config.covariance_def) return cov
__all__ = ['registry', 'get_covariance']