Source code for allensdk.brain_observatory.behavior.behavior_project_cache.tables.project_table

from abc import abstractmethod, ABC
from typing import Optional, Iterable

import pandas as pd


[docs]class ProjectTable(ABC): """Class for storing and manipulating project-level data""" def __init__(self, df: pd.DataFrame, suppress: Optional[Iterable[str]] = None): """ Parameters ---------- df The project-level data suppress columns to drop from table """ self._df = df if suppress is not None: suppress = list(suppress) self._suppress = suppress self.postprocess() @property def table(self): return self._df
[docs] def postprocess_base(self): """Postprocessing to apply to all project-level data""" # Make sure the index is not duplicated (it is rare) self._df = self._df[~self._df.index.duplicated()].copy()
[docs] def postprocess(self): """Postprocess loop""" self.postprocess_base() self.postprocess_additional() if self._suppress: self._df.drop(columns=self._suppress, inplace=True, errors="ignore")
[docs] @abstractmethod def postprocess_additional(self): """Additional postprocessing should be overridden by subclassess""" raise NotImplementedError()