Source code for allensdk.brain_observatory.behavior.metadata.behavior_ophys_metadata

import numpy as np
from typing import Optional

from allensdk.brain_observatory.behavior.metadata.behavior_metadata import \
    BehaviorMetadata
from allensdk.brain_observatory.behavior.session_apis.abcs.\
    data_extractor_base.behavior_ophys_data_extractor_base import \
    BehaviorOphysDataExtractorBase


[docs]class BehaviorOphysMetadata(BehaviorMetadata): """Container class for behavior ophys metadata""" def __init__(self, extractor: BehaviorOphysDataExtractorBase, stimulus_timestamps: np.ndarray, ophys_timestamps: np.ndarray, behavior_stimulus_file: dict): super().__init__(extractor=extractor, stimulus_timestamps=stimulus_timestamps, behavior_stimulus_file=behavior_stimulus_file) self._extractor = extractor self._ophys_timestamps = ophys_timestamps # project_code needs to be excluded from comparison # since it's only exposed internally self._exclude_from_equals = {'project_code'} @property def indicator(self) -> Optional[str]: """Parses indicator from reporter""" reporter_line = self.reporter_line return self.parse_indicator(reporter_line=reporter_line, warn=True) @property def emission_lambda(self) -> float: return 520.0 @property def excitation_lambda(self) -> float: return 910.0 # TODO rename to ophys_container_id @property def experiment_container_id(self) -> int: return self._extractor.get_ophys_container_id() @property def field_of_view_height(self) -> int: return self._extractor.get_field_of_view_shape()['height'] @property def field_of_view_width(self) -> int: return self._extractor.get_field_of_view_shape()['width'] @property def imaging_depth(self) -> int: return self._extractor.get_imaging_depth() @property def imaging_plane_group(self) -> Optional[int]: return self._extractor.get_imaging_plane_group() @property def imaging_plane_group_count(self) -> int: return self._extractor.get_plane_group_count() @property def ophys_experiment_id(self) -> int: return self._extractor.get_ophys_experiment_id() @property def ophys_frame_rate(self) -> float: return self._get_frame_rate(timestamps=self._ophys_timestamps) @property def ophys_session_id(self) -> int: return self._extractor.get_ophys_session_id() @property def project_code(self) -> Optional[str]: try: project_code = self._extractor.get_project_code() except NotImplementedError: # Project code only returned by LIMS project_code = None return project_code @property def targeted_structure(self) -> str: return self._extractor.get_targeted_structure()
[docs] def to_dict(self) -> dict: """Returns dict representation of all properties in class""" vars_ = vars(BehaviorOphysMetadata) d = self._get_properties(vars_=vars_) return {**super().to_dict(), **d}