Source code for hed.models.tabular_input

from hed.models.column_mapper import ColumnMapper
from hed.models.base_input import BaseInput
from hed.models.sidecar import Sidecar


[docs]class TabularInput(BaseInput): """ A BIDS tabular tsv file with sidecar. """ HED_COLUMN_NAME = "HED"
[docs] def __init__(self, file=None, sidecar=None, name=None): """ Constructor for the TabularInput class. Parameters: file (str or FileLike): A tsv file to open. sidecar (str or Sidecar or FileLike): A Sidecar or source file/filename. name (str): The name to display for this file for error purposes. :raises HedFileError: - file is blank - An invalid dataframe was passed with size 0 - An invalid extension was provided - A duplicate or empty column name appears :raises OSError: - Cannot open the indicated file :raises ValueError: - This file has no column names """ if sidecar and not isinstance(sidecar, Sidecar): sidecar = Sidecar(sidecar) new_mapper = ColumnMapper(sidecar=sidecar, optional_tag_columns=[self.HED_COLUMN_NAME], warn_on_missing_column=True) self._sidecar = sidecar super().__init__(file, file_type=".tsv", worksheet_name=None, has_column_names=True, mapper=new_mapper, name=name, allow_blank_names=False, ) if not self._has_column_names: raise ValueError("You are attempting to open a bids_old style file with no column headers provided.\n" "This is probably not intended.")
[docs] def reset_column_mapper(self, sidecar=None): """ Change the sidecars and settings. Parameters: sidecar (str or [str] or Sidecar or [Sidecar]): A list of json filenames to pull sidecar info from. """ new_mapper = ColumnMapper(sidecar=sidecar, optional_tag_columns=[self.HED_COLUMN_NAME]) self.reset_mapper(new_mapper)
[docs] def get_def_dict(self, hed_schema, extra_def_dicts=None): """ Returns the definition dict for this sidecar. Parameters: hed_schema(HedSchema): used to identify tags to find definitions extra_def_dicts (list, DefinitionDict, or None): Extra dicts to add to the list. Returns: DefinitionDict: A single definition dict representing all the data(and extra def dicts) """ if self._sidecar: return self._sidecar.get_def_dict(hed_schema, extra_def_dicts) else: return super().get_def_dict(hed_schema, extra_def_dicts)
[docs] def get_column_refs(self): """ Returns a list of column refs for this file. Default implementation returns none. Returns: column_refs(list): A list of unique column refs found """ if self._sidecar: return self._sidecar.get_column_refs() return []