Source code for allensdk.brain_observatory.behavior.data_objects.metadata.ophys_experiment_metadata.multi_plane_metadata.multi_plane_metadata
from pynwb import NWBFile
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.experiment_container_id import \
ExperimentContainerId
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.field_of_view_shape import \
FieldOfViewShape
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.imaging_depth import \
ImagingDepth
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.multi_plane_metadata \
.imaging_plane_group import \
ImagingPlaneGroup
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.ophys_experiment_metadata import \
OphysExperimentMetadata
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.ophys_session_id import \
OphysSessionId
from allensdk.brain_observatory.behavior.data_objects.metadata \
.ophys_experiment_metadata.project_code import \
ProjectCode
from allensdk.internal.api import PostgresQueryMixin
[docs]class MultiplaneMetadata(OphysExperimentMetadata):
def __init__(self,
ophys_experiment_id: int,
ophys_session_id: OphysSessionId,
experiment_container_id: ExperimentContainerId,
field_of_view_shape: FieldOfViewShape,
imaging_depth: ImagingDepth,
imaging_plane_group: ImagingPlaneGroup,
project_code: ProjectCode):
super().__init__(
ophys_experiment_id=ophys_experiment_id,
ophys_session_id=ophys_session_id,
experiment_container_id=experiment_container_id,
field_of_view_shape=field_of_view_shape,
imaging_depth=imaging_depth,
project_code=project_code
)
self._imaging_plane_group = imaging_plane_group
[docs] @classmethod
def from_lims(
cls, ophys_experiment_id: int,
lims_db: PostgresQueryMixin) -> "MultiplaneMetadata":
ophys_experiment_metadata = OphysExperimentMetadata.from_lims(
ophys_experiment_id=ophys_experiment_id, lims_db=lims_db)
imaging_plane_group = ImagingPlaneGroup.from_lims(
ophys_experiment_id=ophys_experiment_id, lims_db=lims_db)
return cls(
ophys_experiment_id=ophys_experiment_metadata.ophys_experiment_id,
ophys_session_id=ophys_experiment_metadata._ophys_session_id,
experiment_container_id=ophys_experiment_metadata._experiment_container_id, # noqa E501
field_of_view_shape=ophys_experiment_metadata._field_of_view_shape,
imaging_depth=ophys_experiment_metadata._imaging_depth,
project_code=ophys_experiment_metadata._project_code,
imaging_plane_group=imaging_plane_group
)
[docs] @classmethod
def from_json(cls, dict_repr: dict) -> "MultiplaneMetadata":
ophys_experiment_metadata = super().from_json(dict_repr=dict_repr)
imaging_plane_group = ImagingPlaneGroup.from_json(dict_repr=dict_repr)
return cls(
ophys_experiment_id=ophys_experiment_metadata.ophys_experiment_id,
ophys_session_id=ophys_experiment_metadata._ophys_session_id,
experiment_container_id=ophys_experiment_metadata._experiment_container_id, # noqa E501
field_of_view_shape=ophys_experiment_metadata._field_of_view_shape,
imaging_depth=ophys_experiment_metadata._imaging_depth,
project_code=ophys_experiment_metadata._project_code,
imaging_plane_group=imaging_plane_group
)
[docs] @classmethod
def from_nwb(cls, nwbfile: NWBFile) -> "MultiplaneMetadata":
ophys_experiment_metadata = super().from_nwb(nwbfile=nwbfile)
imaging_plane_group = ImagingPlaneGroup.from_nwb(nwbfile=nwbfile)
return cls(
ophys_experiment_id=ophys_experiment_metadata.ophys_experiment_id,
ophys_session_id=ophys_experiment_metadata._ophys_session_id,
experiment_container_id=ophys_experiment_metadata._experiment_container_id, # noqa E501
field_of_view_shape=ophys_experiment_metadata._field_of_view_shape,
imaging_depth=ophys_experiment_metadata._imaging_depth,
project_code=ophys_experiment_metadata._project_code,
imaging_plane_group=imaging_plane_group
)
@property
def imaging_plane_group(self) -> int:
return self._imaging_plane_group.plane_group
@property
def imaging_plane_group_count(self) -> int:
# TODO this is at the wrong level of abstraction.
# It is an attribute of the session, not the experiment.
# Currently, an Ophys Session metadata abstraction doesn't exist
return self._imaging_plane_group.plane_group_count