PlasmaCalcs.tools.xarray_tools.xarray_misc.xarray_vars_lookup_with_defaults

PlasmaCalcs.tools.xarray_tools.xarray_misc.xarray_vars_lookup_with_defaults(ds, provided, lookup={}, defaults={})
return dict of {key from lookup: value for that key}.
provided: dict of {key: None, str, or other value}
provided values or lookup instructions for each key.
None –> use instructions from lookup if key in lookup,
else value from defaults if key in defaults.
str –> varname; result uses ds[varname]. (crash if not possible.)
callable –> f of one arg; result uses f(ds).
other value –> result uses this value directly.
lookup: dict of {key: None, str, or list of str}
‘default’ lookup instructions. Used when provided[key] is None.
defaults: dict of {key: value or callable}
default values for each key.
Used when provided[key] is None and ds[lookup[key]] not found.
callable –> called with ds as arg to get value.
Examples:
xarray_vars_lookup_with_defaults(ds, {}, {‘n’: None}, {‘n’: 100})
# {‘n’: ds[‘n’]} if ds[‘n’] exists, else {‘n’: 100}
xarray_vars_lookup_with_defaults(ds, {}, {‘n’: ‘var1’}, {‘n’: lambda ds: ds.size})
# {‘n’: ds[‘var1’]} if ds[‘var1’] exists, else {‘n’: ds.size}
xarray_vars_lookup_with_defaults(ds, {‘n’: ‘var1’}, {‘n’: ‘var2’}, {‘n’: 7})
# {‘n’: ds[‘var1’]} if ds[‘var1’] exists, else crash.
# (lookup & defaults are fully ignored, if non-None value in provided.)