Source code for laura.models._functions

import numpy as np
from collections import OrderedDict
from pydantic import create_model, BaseModel
from yaml import safe_load


[docs] def _rotation_matrix(theta): return np.array( [ [np.cos(theta), 0, np.sin(theta)], [0, 1, 0], [-1 * np.sin(theta), 0, np.cos(theta)], ] )
[docs] def read_yaml(fname: str) -> BaseModel: with open(fname, "r") as f: data = safe_load(f) # Build fields: field_name: (type, default) fields = {key: (type(value), value) for key, value in data.items()} # Create and return the dynamic model class DynamicModel = create_model( "DynamicModel", __base__=BaseModel, __module__=__name__, # model_config=model_config, **fields, ) return DynamicModel(**data)
[docs] def merge_two_dicts(y, x): """Combine to dictionaries: first dictionary overwrites keys in the second dictionary""" if not isinstance(x, (dict, OrderedDict)) and not isinstance( y, (dict, OrderedDict) ): return OrderedDict() elif not isinstance(x, (dict, OrderedDict)): return y elif not isinstance(y, (dict, OrderedDict)): return x else: z = x.copy() # start with x's keys and values z.update(y) # modifies z with y's keys and values & returns None return z