Source code for tempor.models.clairvoyance2.interface.saving
# mypy: ignore-errorsimportosimportpicklefromdotmapimportDotMapfrom..utils.commonimportsafe_init_dotmap# TODO: Alternatively save parameters as JSON?
[docs]classSavableModelMixin:params:DotMapinferred_params:DotMap@staticmethoddef_validate_path(path:str)->None:basename=os.path.basename(path)iflen(basename)==0:raiseValueError(f"`path` must be a path with a basename but was {path}")@staticmethoddef_get_params_file_path(path:str):dirname=os.path.dirname(path)basename=os.path.basename(path)returnos.path.join(dirname,f"{basename}.params")
[docs]@classmethoddefload(cls,path:str):SavableModelMixin._validate_path(path)params_file_path=SavableModelMixin._get_params_file_path(path)withopen(params_file_path,"rb")asf:loaded_from_params_file=pickle.load(f)params=safe_init_dotmap(loaded_from_params_file["params"])inferred_params=safe_init_dotmap(loaded_from_params_file["inferred_params"])new=cls(params=params)# type: ignore# NOTE: ^ This Mixin assumes that the class is BaseModel-like, so it's expected to have an initialization like:# __init___(self, params).new.inferred_params=inferred_paramsreturnnew