add helperleins to find stuff in info dict
This commit is contained in:
parent
444d6f75c9
commit
374020e0ae
59
util.py
59
util.py
@ -157,33 +157,58 @@ def deep_get(dictionary, keys, default=None):
|
||||
return reduce(lambda d, key: d.get(key, default) if isinstance(d, dict) else default, keys, dictionary)
|
||||
|
||||
|
||||
def _get_string(dictionary: dict, key:str, alt_key=None, default=None):
|
||||
p = []
|
||||
value = default
|
||||
find_key_recursive(dictionary, key, p)
|
||||
if len(p) > 0:
|
||||
value = deep_get(dictionary, p, default)
|
||||
elif alt_key:
|
||||
find_key_recursive(dictionary, alt_key, p)
|
||||
value = deep_get(dictionary, p, default)
|
||||
if value != default and isinstance(value, dict):
|
||||
value = default
|
||||
return value
|
||||
|
||||
|
||||
def _get_date(dictionary: dict, key: str, alt_key=None, default=None):
|
||||
p = []
|
||||
value = default
|
||||
find_key_recursive(dictionary, key, p)
|
||||
if len(p) > 0:
|
||||
value = dt.date.fromisoformat(deep_get(dictionary, p, default))
|
||||
elif alt_key:
|
||||
find_key_recursive(dictionary, alt_key, p)
|
||||
value = dt.date.fromisoformat(deep_get(dictionary, p, default))
|
||||
if value != default and isinstance(value, dict):
|
||||
value = default
|
||||
return value
|
||||
|
||||
|
||||
def read_dataset_info(info_file):
|
||||
exp = ""
|
||||
quality = ""
|
||||
comment = ""
|
||||
rec_date = None
|
||||
has_nix = False
|
||||
setup = ""
|
||||
rec_duration = 0.0
|
||||
if not os.path.exists(info_file):
|
||||
return exp, rec_date, quality, comment, has_nix
|
||||
return exp, rec_date, quality, comment, has_nix, rec_duration, setup
|
||||
has_nix = len(glob.glob(os.path.sep.join(info_file.split(os.path.sep)[:-1]) + os.path.sep + "*.nix")) > 0
|
||||
info = read_info_file(info_file)
|
||||
p = []
|
||||
find_key_recursive(info, "Experimenter", p)
|
||||
if len(p) > 0:
|
||||
exp = deep_get(info, p)
|
||||
p = []
|
||||
find_key_recursive(info, "Date", p)
|
||||
if len(p) > 0:
|
||||
rec_date = dt.date.fromisoformat(deep_get(info, p))
|
||||
p = []
|
||||
find_key_recursive(info, "Recording quality", p)
|
||||
if len(p) > 0:
|
||||
quality = deep_get(info, p)
|
||||
find_key_recursive(info, "Comment", p)
|
||||
if len(p) > 0:
|
||||
comment = deep_get(info, p, default="")
|
||||
|
||||
return exp, rec_date, quality, comment, has_nix
|
||||
exp = _get_string(info, "Experimenter")
|
||||
rec_date = _get_date(info, "Date")
|
||||
quality = _get_string(info, "Recording quality")
|
||||
comment = _get_string(info, "Comment", default="")
|
||||
rec_duration = _get_string(info, "Recording duration", "Recording duratio", default=0.0)
|
||||
if rec_duration != 0.0 and isinstance(rec_duration, str) and "min" in rec_duration:
|
||||
rec_duration = rec_duration[:-3]
|
||||
setup_info = _get_string(info, "Setup", default=None)
|
||||
if setup_info and isinstance(setup_info, dict):
|
||||
setup = _get_string(setup_info, "Identifier")
|
||||
return exp, rec_date, quality, comment, has_nix, rec_duration, setup
|
||||
|
||||
|
||||
def nix_metadata_to_dict(section):
|
||||
|
Loading…
Reference in New Issue
Block a user