Source code for allensdk.brain_observatory.behavior.data_objects.metadata.ophys_experiment_metadata.ophys_container_id
from pynwb import NWBFile
from allensdk.core import DataObject
from allensdk.core import \
JsonReadableInterface, LimsReadableInterface, NwbReadableInterface
from allensdk.internal.api import PostgresQueryMixin
[docs]class OphysContainerId(DataObject, LimsReadableInterface,
JsonReadableInterface, NwbReadableInterface):
""""experiment container id"""
def __init__(self, ophys_container_id: int):
super().__init__(name='ophys_container_id',
value=ophys_container_id)
[docs] @classmethod
def from_lims(cls, ophys_experiment_id: int,
lims_db: PostgresQueryMixin) -> "ExperimentContainerId":
query = """
SELECT visual_behavior_experiment_container_id
FROM ophys_experiments_visual_behavior_experiment_containers
WHERE ophys_experiment_id = {};
""".format(ophys_experiment_id)
container_id = lims_db.fetchone(query, strict=False)
return cls(ophys_container_id=container_id)
[docs] @classmethod
def from_json(cls, dict_repr: dict) -> "ExperimentContainerId":
return cls(ophys_container_id=dict_repr['container_id'])
[docs] @classmethod
def from_nwb(cls, nwbfile: NWBFile) -> "ExperimentContainerId":
try:
metadata = nwbfile.lab_meta_data['metadata']
return cls(ophys_container_id=metadata.ophys_container_id)
except AttributeError:
return None