Source code for bec_lib.lmfit_serializer

"""
This module contains functions for serializing and deserializing lmfit objects.
"""

from lmfit import Parameter, Parameters


[docs] def serialize_param_object(param: Parameter) -> dict: """ Serialize lmfit.Parameter object to JSON-serializable dictionary. Args: param (Parameter): Parameter object Returns: dict: Dictionary representation of the parameter """ obj = { "name": param.name, "value": param.value, "vary": param.vary, "min": param.min, "max": param.max, "expr": param.expr, "brute_step": param.brute_step, } return obj
[docs] def serialize_lmfit_params(params: Parameters) -> dict: """ Serialize lmfit.Parameters object to JSON-serializable dictionary. Args: params (Parameters): Parameters object containing lmfit.Parameter objects Returns: dict: Dictionary representation of the parameters """ if not params: return {} if isinstance(params, Parameters): return {k: serialize_param_object(v) for k, v in params.items()} if isinstance(params, list): return {v.name: serialize_param_object(v) for v in params}
[docs] def deserialize_param_object(obj: dict) -> Parameter: """ Deserialize dictionary representation of lmfit.Parameter object. Args: obj (dict): Dictionary representation of the parameters Returns: Parameter: Parameter object """ param = Parameters() for k, v in obj.items(): v.pop("name") param.add(k, **v) return param