Source code for ipfx.dataset.mies_nwb_data
from typing import Dict, Any
from ipfx.stimulus import StimulusOntology
from ipfx.dataset.labnotebook import LabNotebookReader
from ipfx.dataset.ephys_nwb_data import EphysNWBData, get_finite_or_none
[docs]class MIESNWBData(EphysNWBData):
"""
Provides an Ephys Data Interface to a MIES generated NWB file
"""
def __init__(
self,
nwb_file: str,
notebook: LabNotebookReader,
ontology: StimulusOntology,
load_into_memory: bool = True,
validate_stim: bool = True
):
super(MIESNWBData, self).__init__(
nwb_file=nwb_file,
ontology=ontology,
load_into_memory=load_into_memory,
validate_stim=validate_stim
)
self.notebook = notebook
[docs] def get_stim_code_ext(self, sweep_number):
stim_code = super().get_stimulus_code(sweep_number)
cnt = self.notebook.get_value("Set Sweep Count", sweep_number, 0)
stim_code_ext = stim_code + "[%d]" % int(cnt)
return stim_code_ext
[docs] def get_sweep_metadata(self, sweep_number: int) -> Dict[str, Any]:
attrs = self.get_sweep_attrs(sweep_number)
sweep_record = {
"sweep_number": sweep_number,
"stimulus_units": self.get_stimulus_unit(sweep_number),
"bridge_balance_mohm": get_finite_or_none(attrs, "bridge_balance"),
"leak_pa": get_finite_or_none(attrs, "bias_current"),
"stimulus_scale_factor": self.notebook.get_value(
"Scale Factor", sweep_number, None
),
"stimulus_code": self.get_stimulus_code(sweep_number),
"stimulus_code_ext": self.get_stim_code_ext(sweep_number),
"clamp_mode": self.get_clamp_mode(sweep_number)
}
if self.ontology:
sweep_record["stimulus_name"] = self.get_stimulus_name(
sweep_record["stimulus_code"]
)
return sweep_record