Source code for neuron_morphology.feature_extractor.utilities
""" A collection of miscellaneous tools used by the feature extractor
"""
from typing import Dict, Any
[docs]def unnest(inputs: Dict[str, Any], _prefix="") -> Dict[str, Any]:
""" Convert nested dictionaries (with string keys) to a dot-notation flat
dictionary.
Parameters
---------
inputs: The dictionary to unnest. Must have all string keys
_prefix : Used during recursion to build up a dot-notation prefix. Don't
argue this yourself!
Returns
-------
a flattened dictionary
"""
unnested = {}
for key, value in inputs.items():
if isinstance(key, str):
if isinstance(value, dict):
unnested.update(unnest(value, _prefix=f"{key}."))
else:
unnested[f"{_prefix}{key}"] = value
else:
raise ValueError(f"found non-string key: {key}")
return unnested