Source code for hed.tools.analysis.hed_type_manager

""" Manager for type factors and type definitions. """

import pandas as pd
import json
from hed.tools.analysis.hed_type import HedType


[docs]class HedTypeManager:
[docs] def __init__(self, event_manager): """ Create a variable manager for one tabular file for all type variables. Parameters: event_manager (EventManager): an event manager for the tabular file. :raises HedFileError: - On errors such as unmatched onsets or missing definitions. """ self.event_manager = event_manager self._type_map = {} # a map of type tag into HedType objects
@property def types(self): return list(self._type_map.keys())
[docs] def add_type(self, type_name): if type_name.lower() in self._type_map: return self._type_map[type_name.lower()] = \ HedType(self.event_manager, 'run-01', type_tag=type_name)
[docs] def get_factor_vectors(self, type_tag, type_values=None, factor_encoding="one-hot"): """ Return a DataFrame of factor vectors for the indicated HED tag and values Parameters: type_tag (str): HED tag to retrieve factors for. type_values (list or None): The values of the tag to create factors for or None if all unique values. factor_encoding (str): Specifies type of factor encoding (one-hot or categorical). Returns: DataFrame or None: DataFrame containing the factor vectors as the columns. """ this_var = self.get_type(type_tag.lower()) if this_var is None: return None variables = this_var.get_type_value_names() if not type_values: type_values = variables df_list = [0]*len(type_values) for index, variable in enumerate(type_values): var_sum = this_var._type_map[variable] df_list[index] = var_sum.get_factors(factor_encoding=factor_encoding) if not df_list: return None return pd.concat(df_list, axis=1)
[docs] def get_type(self, type_tag): """ Parameters: type_tag (str): HED tag to retrieve the type for Returns: HedType or None: the values associated with this type tag """ return self._type_map.get(type_tag.lower(), None)
[docs] def get_type_tag_factor(self, type_tag, type_value): """ Return the HedTypeFactors a specified value and extension. Parameters: type_tag (str or None): HED tag for the type type_value (str or None): Value of this tag to return the factors for. """ this_map = self._type_map.get(type_tag.lower(), None) if this_map: return this_map._type_map.get(type_value.lower(), None) return None
[docs] def get_type_def_names(self, type_var): this_map = self._type_map.get(type_var, None) if not this_map: return [] return this_map.get_type_def_names()
[docs] def summarize_all(self, as_json=False): summary = {} for type_tag, type_tag_var in self._type_map.items(): summary[type_tag] = type_tag_var.get_summary() if as_json: return json.dumps(summary, indent=4) else: return summary
def __str__(self): return f"Type_variables: {str(list(self._type_map.keys()))}"