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

import logging
from typing import Optional, List

import pandas as pd

from allensdk.brain_observatory.behavior.behavior_project_cache.tables\
    .ophys_mixin import \
    OphysMixin
from allensdk.brain_observatory.behavior.behavior_project_cache.tables\
    .project_table import ProjectTable


[docs]class BehaviorOphysSessionsTable(ProjectTable, OphysMixin): """Class for storing and manipulating project-level data at the behavior-ophys session level""" def __init__(self, df: pd.DataFrame, suppress: Optional[List[str]] = None, index_column: str = 'ophys_session_id'): """ Parameters ---------- df The behavior-ophys session-level data suppress columns to drop from table index_column See description in BehaviorProjectCache.get_session_table """ self._logger = logging.getLogger(self.__class__.__name__) self._index_column = index_column ProjectTable.__init__(self, df=df, suppress=suppress) OphysMixin.__init__(self)
[docs] def postprocess_additional(self): # Possibly explode and reindex self.__explode()
def __explode(self): if self._index_column == "ophys_session_id": pass elif self._index_column == "ophys_experiment_id": self._df = (self._df.reset_index() .explode("ophys_experiment_id") .set_index("ophys_experiment_id")) else: self._logger.warning( f"Invalid value for `by`, '{self._index_column}', passed to " f"BehaviorOphysSessionsCacheTable." " Valid choices for `by` are 'ophys_experiment_id' and " "'ophys_session_id'.")