Source code for pynwb.testing.mock.icephys

from typing import Optional

import numpy as np

from pynwb.icephys import (
    IntracellularElectrode,
    VoltageClampSeries,
    VoltageClampStimulusSeries,
    IntracellularRecordingsTable,
    CurrentClampSeries,
    CurrentClampStimulusSeries,
    IZeroClampSeries,
)

from .utils import name_generator
from .device import mock_Device
from ... import NWBFile
from ...device import Device


[docs] def mock_IntracellularElectrode( name: Optional[str] = None, description: str = "description", device: Optional[Device] = None, nwbfile: Optional[NWBFile] = None, ) -> IntracellularElectrode: intracellular_electrode = IntracellularElectrode( name=name or name_generator("IntracellularElectrode"), description=description, device=device or mock_Device(nwbfile=nwbfile), ) if nwbfile is not None: nwbfile.add_icephys_electrode(intracellular_electrode) return intracellular_electrode
[docs] def mock_VoltageClampStimulusSeries( name: Optional[str] = None, data=None, rate: float = 100_000., electrode: Optional[IntracellularElectrode] = None, gain: float = 0.02, timestamps=None, starting_time: Optional[float] = None, nwbfile: Optional[NWBFile] = None, ) -> VoltageClampStimulusSeries: voltage_clamp_stimulus_series = VoltageClampStimulusSeries( name=name or name_generator("VoltageClampStimulusSeries"), data=data or np.ones((30,)), rate=None if timestamps else rate, electrode=electrode or mock_IntracellularElectrode(nwbfile=nwbfile), gain=gain, timestamps=timestamps, starting_time=starting_time, ) if nwbfile is not None: nwbfile.add_stimulus(voltage_clamp_stimulus_series) return voltage_clamp_stimulus_series
[docs] def mock_VoltageClampSeries( name: Optional[str] = None, data=None, conversion: float = 1.0, resolution: float = np.nan, starting_time: Optional[float] = None, rate: Optional[float] = 100_000.0, electrode: Optional[IntracellularElectrode] = None, gain: float = 0.02, capacitance_slow: float = 100e-12, resistance_comp_correction: float = 70.0, nwbfile: Optional[NWBFile] = None, ) -> VoltageClampSeries: voltage_clamp_series = VoltageClampSeries( name=name if name is not None else name_generator("VoltageClampSeries"), data=data if data is not None else np.ones((30,)), conversion=conversion, resolution=resolution, starting_time=starting_time, rate=rate, electrode=electrode or mock_IntracellularElectrode(nwbfile=nwbfile), gain=gain, capacitance_slow=capacitance_slow, resistance_comp_correction=resistance_comp_correction, ) if nwbfile is not None: nwbfile.add_acquisition(voltage_clamp_series) return voltage_clamp_series
[docs] def mock_CurrentClampSeries( name: Optional[str] = None, data=None, electrode: Optional[IntracellularElectrode] = None, gain: float = 0.02, stimulus_description: str = "N/A", bias_current=None, bridge_balance=None, capacitance_compensation=None, resolution=-1.0, conversion=1.0, timestamps=None, starting_time: Optional[float] = None, rate: Optional[float] = 100_000., comments: str = "no comments", description: str = "no description", control=None, control_description=None, sweep_number=None, offset=0.0, unit: str = "volts", nwbfile: Optional[NWBFile] = None, ) -> CurrentClampSeries: current_clamp_series = CurrentClampSeries( name=name if name is not None else name_generator("CurrentClampSeries"), data=data if data is not None else np.ones((30,)), electrode=electrode or mock_IntracellularElectrode(nwbfile=nwbfile), gain=gain, stimulus_description=stimulus_description, bias_current=bias_current, bridge_balance=bridge_balance, capacitance_compensation=capacitance_compensation, resolution=resolution, conversion=conversion, timestamps=timestamps, starting_time=starting_time, rate=rate, comments=comments, description=description, control=control, control_description=control_description, sweep_number=sweep_number, offset=offset, unit=unit, ) if nwbfile is not None: nwbfile.add_acquisition(current_clamp_series) return current_clamp_series
[docs] def mock_CurrentClampStimulusSeries( name: Optional[str] = None, data=None, electrode=None, gain=0.02, stimulus_description="N/A", resolution=-1.0, conversion=1.0, timestamps=None, starting_time=None, rate=100_000., comments="no comments", description="no description", control=None, control_description=None, sweep_number=None, offset=0.0, unit="amperes", nwbfile: Optional[NWBFile] = None, ) -> CurrentClampStimulusSeries: current_clamp_stimulus_series = CurrentClampStimulusSeries( name=name or name_generator("CurrentClampStimulusSeries"), data=data if data is not None else np.ones((30,)), electrode=electrode or mock_IntracellularElectrode(nwbfile=nwbfile), gain=gain, stimulus_description=stimulus_description, resolution=resolution, conversion=conversion, timestamps=timestamps, starting_time=starting_time, rate=rate, comments=comments, description=description, control=control, control_description=control_description, sweep_number=sweep_number, offset=offset, unit=unit, ) if nwbfile is not None: nwbfile.add_stimulus(current_clamp_stimulus_series) return current_clamp_stimulus_series
[docs] def mock_IZeroClampSeries( name: Optional[str] = None, data=None, electrode: Optional[IntracellularElectrode] = None, gain=.02, stimulus_description="N/A", resolution=-1.0, conversion=1.0, timestamps=None, starting_time=None, rate=100_000., comments="no comments", description="no description", control=None, control_description=None, sweep_number=None, offset=0.0, unit="volts", nwbfile: Optional[NWBFile] = None, ) -> IZeroClampSeries: izero_clamp_series = IZeroClampSeries( name=name or name_generator("IZeroClampSeries"), data=data if data is not None else np.ones((30,)), electrode=electrode or mock_IntracellularElectrode(nwbfile=nwbfile), gain=gain, stimulus_description=stimulus_description, resolution=resolution, conversion=conversion, timestamps=timestamps, starting_time=starting_time, rate=rate, comments=comments, description=description, control=control, control_description=control_description, sweep_number=sweep_number, offset=offset, unit=unit, ) if nwbfile is not None: nwbfile.add_acquisition(izero_clamp_series) return izero_clamp_series
[docs] def mock_IntracellularRecordingsTable( n_rows: int = 5, nwbfile: Optional[NWBFile] = None ) -> IntracellularRecordingsTable: irt = IntracellularRecordingsTable() for _ in range(n_rows): electrode = mock_IntracellularElectrode(nwbfile=nwbfile) irt.add_recording( electrode=electrode, stimulus=mock_VoltageClampStimulusSeries(electrode=electrode, nwbfile=nwbfile), response=mock_VoltageClampSeries(electrode=electrode, nwbfile=nwbfile), ) if nwbfile is not None: nwbfile.intracellular_recordings = irt return irt