emodelrunner.protocols.sscx_protocols

Ephys protocols for the SSCX packages.

Classes

RampProtocol([name, ramp_stimulus, ...])

Protocol consisting of ramp and holding current.

RampThresholdProtocol(name[, ...])

Step protocol based on threshold.

RatSSCxMainProtocol(name[, rmp_protocol, ...])

Main protocol to fit RatSSCx neuron ephys parameters.

RatSSCxRinHoldcurrentProtocol(name[, ...])

IDRest protocol to fit RatSSCx neuron ephys parameters.

RatSSCxThresholdDetectionProtocol(name[, ...])

IDRest protocol to fit RatSSCx neuron ephys parameters.

StepProtocol([name, step_stimuli, ...])

Protocol consisting of step and holding current.

StepThresholdProtocol(name[, thresh_perc, ...])

Step protocol based on threshold.

SweepProtocolCustom([name, stimuli, ...])

SweepProtocol with generate_current method.

class emodelrunner.protocols.sscx_protocols.RampProtocol(name=None, ramp_stimulus=None, holding_stimulus=None, recordings=None, cvode_active=None)[source]

Bases: SweepProtocol, CurrentOutputKeyMixin

Protocol consisting of ramp and holding current.

name

name of this object

Type

str

stimuli

List of all Stimulus objects used in protocol

Type

list of Stimuli

recordings

Recording objects used in the protocol

Type

list of Recordings

cvode_active

whether to use variable time step

Type

bool

ramp_stimulus

ramp Stimulus

Type

Stimulus

holding_stimulus

Holding Stimulus

Type

Stimulus

generate_current(threshold_current=None, holding_current=None, dt=0.1)[source]

Return current time series.

Parameters
  • threshold_current (float) – the threshold current (nA)

  • holding_current (float) – the holding current (nA)

  • dt (float) – timestep of the generated currents (ms)

Returns

dict containing the generated current

property step_delay

Time stimulus delay.

Returns

time at which the ramp starts (ms)

property step_duration

Time stimulus duration.

Returns

duration of the ramp stimulus (ms)

class emodelrunner.protocols.sscx_protocols.RampThresholdProtocol(name, thresh_perc_start=None, thresh_perc_end=None, ramp_stimulus=None, holding_stimulus=None, recordings=None, cvode_active=None)[source]

Bases: RampProtocol

Step protocol based on threshold.

name

name of this object

Type

str

stimuli

List of all Stimulus objects used in protocol

Type

list of Stimuli

recordings

Recording objects used in the protocol

Type

list of Recordings

cvode_active

whether to use variable time step

Type

bool

ramp_stimulus

ramp Stimulus

Type

Stimulus

holding_stimulus

Holding Stimulus

Type

Stimulus

thresh_perc_start

percentage of the threshold current at which to set the start of the ramp amplitude

Type

float

thresh_perc_end

percentage of the threshold current at which to set the end of the ramp amplitude

Type

float

generate_current(threshold_current, holding_current, dt=0.1)[source]

Return current time series.

Parameters
  • threshold_current (float) – the threshold current (nA)

  • holding_current (float) – the holding current (nA)

  • dt (float) – timestep of the generated currents (ms)

Returns

dict containing the generated current

run(cell_model, param_values, sim=None, isolate=None, timeout=None)[source]

Run protocol.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • isolate (bool) – whether to isolate the run in a process with a timeout to avoid bad cells running for too long

  • timeout (float) – maximum real time (s) the cell is allowed to run when isolated

Raises

Exception – if the threshold_current is not set to the cell model

Returns

dict containing the responses for the ramp protocol

class emodelrunner.protocols.sscx_protocols.RatSSCxMainProtocol(name, rmp_protocol=None, rmp_efeature=None, rinhold_protocol=None, rin_efeature=None, thdetect_protocol=None, other_protocols=None, pre_protocols=None)[source]

Bases: Protocol

Main protocol to fit RatSSCx neuron ephys parameters.

Pseudo code:

  • Find resting membrane potential

  • Find input resistance

  • Run other protocols:

    • Find holding current

    • Find rheobase

    • Run IDRest

    • Possibly run other protocols (based on constructor arguments)

    • Return all the responses

name

name of the protocol

Type

str

rmp_protocol

resting membrane potential protocol

Type

StepProtocol

rmp_efeature

voltage base efeature

Type

bluepyopt.ephys.efeatures.eFELFeature

rinhold_protocol

protocol to get the holding current

Type

RatSSCxRinHoldcurrentProtocol

rin_efeature

ohmic input resistance vb ssse

Type

bluepyopt.ephys.efeatures.eFELFeature

thdetect_protocol

protocol to detect threshold current

Type

RatSSCxThresholdDetectionProtocol

other_protocols

other protocols to run

Type

bluepyopt.ephys.protocols.Protocol

pre_protocols

protocols to run before the ‘other protocols’

Type

bluepyopt.ephys.protocols.Protocol

generate_current(threshold_current=None, holding_current=None, dt=0.1)[source]

Generate current for all protocols except rin and threshold detection.

Parameters
  • threshold_current (float) – the threshold current (nA)

  • holding_current (float) – the holding current (nA)

  • dt (float) – timestep of the generated currents (ms)

Returns

dict containing the generated currents

run(cell_model, param_values, sim=None, isolate=None)[source]

Run protocol.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • isolate (bool) – whether to isolate the run in a process with a timeout to avoid bad cells running for too long

Returns

dict containing the responses for all the protocols

run_other_protocols(responses, cell_model, sim)[source]

Run other protocols.

Parameters
  • responses (dict) – responses to be updated

  • cell_model (bluepyopt.ephys.models.CellModel) – the cell on which to apply the other protocols

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

run_pre_protocols(responses, cell_model, sim)[source]

Run the pre-protocols.

Parameters
  • responses (dict) – responses to be updated

  • cell_model (bluepyopt.ephys.models.CellModel) – the cell on which to apply the pre protocols

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

subprotocols()[source]

Return all the subprotocols contained in this protocol, is recursive.

Returns

dict containing all the subprotocols

class emodelrunner.protocols.sscx_protocols.RatSSCxRinHoldcurrentProtocol(name, rin_protocol_template=None, voltagebase_efeature=None, holdi_estimate_multiplier=2, holdi_precision=0.1, holdi_max_depth=5, prefix=None)[source]

Bases: Protocol

IDRest protocol to fit RatSSCx neuron ephys parameters.

name

name of the protocol

Type

str

rin_protocol_template

template for Rin protocol with amplitude for the holding stimulus to be filled

Type

StepProtocol

voltagebase_efeature

voltage base efeature

Type

bluepyopt.ephys.efeatures.eFELFeature

holdi_estimate_multiplier

when searching for holding current amplitude, multiply holding current estimate by this value to get lower bound

Type

float

holdi_precision

precision with which to reach holding voltage when searching for holding current

Type

float

holdi_max_depth

maximum number of times to compute the holding voltage when searching for holding current if holdi_precision is not reached

Type

int

prefix

prefix used in naming responses, features, recordings, etc.

Type

str

rin_efeature

ohmic input resistance vb ssse

Type

bluepyopt.ephys.efeatures.eFELFeature

rin_protocol

Rin protocol with holding current amplitude

Type

StepProtocol

create_rin_protocol(holdi=None)[source]

Create threshold protocol.

Parameters

holdi (float) – amplitude of holding current (nA)

Returns

the Rin protocol with holding current

Return type

StepProtocol

run(cell_model, param_values, sim, rmp=None)[source]

Run protocol.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • rmp (float) – resting membrane potential (mV)

Returns

dict containing the responses for the Rin protocol using holding current

search_holdi(cell_model, param_values, sim, holding_voltage, rin_noholding, rmp)[source]

Find the holding current to hold cell at holding_voltage.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • holding_voltage (float) – experimental mean of the voltage base efeature (mV)

  • rin_noholding (float) – Rin efeature (ohmic input resistance vb ssse) value when no holding current is applied (mV/nA)

  • rmp (float) – resting membrane potential (mV)

Returns

the holding current (nA) that reproduces the experimental holding voltage

Return type

float

subprotocols()[source]

Return subprotocols.

Returns

dict containing the Rin protocol and the Rin protocol template

voltage_base(current, cell_model, param_values, sim=None)[source]

Calculate voltage base for certain stimulus current.

Parameters
  • current (float) – amplitude of the holding current to inject (nA)

  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

Returns

voltage base (mV) of response

Return type

float

class emodelrunner.protocols.sscx_protocols.RatSSCxThresholdDetectionProtocol(name, step_protocol_template=None, max_threshold_voltage=-40, holding_voltage=None, prefix=None)[source]

Bases: Protocol

IDRest protocol to fit RatSSCx neuron ephys parameters.

name

name of the protocol

Type

str

step_protocol_template

template for threshold protocol with amplitude for the holding and steps stimuli to be filled

Type

StepProtocol

max_threshold_voltage

Use this (mV) to get max threshold current upper bound when searching for threshold current

Type

float

short_perc

multiply step duration by this value when detecting spikes with short stimulus. Should be < 1. Not actually a percentage (0.1 -> 10%)

Type

float

short_steps

the number of short steps to perform to determine the upper bound of the threshold search with long steps

Type

int

holding_voltage

experimental mean of the voltage base efeature (mV) of the Rin protocol

Type

float

prefix

prefix used in naming responses, features, recordings, etc.

Type

str

create_short_threshold_protocol(holdi=None, step_current=None)[source]

Create short threshold protocol.

Parameters
  • holdi (float) – holding current amplitude (nA)

  • step_current (float) – step current amplitude (nA)

Returns

the threshold protocol with shorter step duration and total duration

Return type

StepProtocol

create_step_protocol(holdi=0.0, step_current=0.0)[source]

Create threshold protocol.

Parameters
  • holdi (float) – holding current amplitude (nA)

  • step_current (float) – step current amplitude (nA)

Returns

the threshold protocol

Return type

StepProtocol

detect_spike(cell_model, param_values, sim=None, step_current=None, holdi=None, short=False)[source]

Detect if spike is present at current level.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • step_current (float) – step current amplitude (nA)

  • holdi (float) – holding current amplitude (nA)

  • short (bool) – whether the protocol step duration should be shorten

Returns

True if at least one spike was detected, False otherwise

Return type

bool

max_threshold_current(rin=None)[source]

Find the current necessary to get to max_threshold_voltage.

Parameters

rin (float) – Rin efeature (ohmic input resistance vb ssse) value (mV/nA)

Returns

maximum threshold current (nA)

Return type

float

run(cell_model, sim, holdi, rin)[source]

Run protocol.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • holdi (float) – holding current amplitude (nA)

  • rin (float) – Rin efeature (ohmic input resistance vb ssse) value (mV/nA)

Returns

dict containing threshold current

search_spike_threshold(cell_model, param_values, sim=None, holdi=None, lower_bound=None, upper_bound=None, precision=0.01, max_depth=5)[source]

Find the current step spiking threshold.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • holdi (float) – holding current amplitude (nA)

  • lower_bound (float) – lower bound in which to search for threshold current (nA)

  • upper_bound (float) – upper bound in which to search for threshold current (nA)

  • precision (float) – precision with which to compute threshold current (nA)

  • max_depth (int) – maximum number of times to run the cell when searching for threshold current when precision is not reached

Returns

threshold current amplitude (nA)

Return type

float

subprotocols()[source]

Return subprotocols.

Returns

the threshold detection protocol and the threshold detection protocol template

Return type

dict

class emodelrunner.protocols.sscx_protocols.StepProtocol(name=None, step_stimuli=None, holding_stimulus=None, recordings=None, cvode_active=None, stochkv_det=None)[source]

Bases: SweepProtocol, CurrentOutputKeyMixin

Protocol consisting of step and holding current.

name

name of this object

Type

str

stimuli

List of all Stimulus objects used in protocol

Type

list of Stimuli

recordings

Recording objects used in the protocol

Type

list of Recordings

cvode_active

whether to use variable time step

Type

bool

step_stimuli

List of step Stimulus objects used in protocol

Type

list of Stimuli

holding_stimulus

Holding Stimulus

Type

Stimulus

stochkv_det

set if stochastic or deterministic

Type

bool

generate_current(threshold_current=None, holding_current=None, dt=0.1)[source]

Return current time series.

Parameters
  • threshold_current (float) – the threshold current (nA)

  • holding_current (float) – the holding current (nA)

  • dt (float) – timestep of the generated currents (ms)

Returns

dict containing the generated current

instantiate(sim=None, cell_model=None)[source]

Instantiate.

Parameters
  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • cell_model (bluepyopt.ephys.CellModel) – cell model

run(cell_model, param_values, sim=None, isolate=None, timeout=None)[source]

Run protocol.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • isolate (bool) – whether to isolate the run in a process with a timeout to avoid bad cells running for too long

  • timeout (float) – maximum real time (s) the cell is allowed to run when isolated

Returns

dict containing the responses for the step protocol

property step_amplitude

Stimuli mean amplitude.

Returns

the mean amplitude of the step stimuli (nA)

property stim_duration

Time stimulus duration.

Returns

the duration of the stimulus (ms)

property stim_end

Time stimulus ends.

Returns

the time at which the stimulus ends (ms)

property stim_last_start

Time stimulus last start.

Returns

the time at which the last step stimulus in the list starts (ms)

property stim_start

Time stimulus starts.

Returns

the time at which the stimulus starts (ms)

class emodelrunner.protocols.sscx_protocols.StepThresholdProtocol(name, thresh_perc=None, step_stimuli=None, holding_stimulus=None, recordings=None, cvode_active=None, stochkv_det=None)[source]

Bases: StepProtocol

Step protocol based on threshold.

name

name of this object

Type

str

stimuli

List of all Stimulus objects used in protocol

Type

list of Stimuli

recordings

Recording objects used in the protocol

Type

list of Recordings

cvode_active

whether to use variable time step

Type

bool

step_stimuli

List of step Stimulus objects used in protocol

Type

list of Stimuli

holding_stimulus

Holding Stimulus

Type

Stimulus

stochkv_det

set if stochastic or deterministic

Type

bool

thresh_perc

percentage of the threshold current at which to set the step amplitudes

Type

float

generate_current(threshold_current, holding_current, dt=0.1)[source]

Return current time series.

Parameters
  • threshold_current (float) – the threshold current (nA)

  • holding_current (float) – the holding current (nA)

  • dt (float) – timestep of the generated currents (ms)

Returns

dict containing the generated current

run(cell_model, param_values, sim=None, isolate=None, timeout=None)[source]

Run protocol.

Parameters
  • cell_model (bluepyopt.ephys.models.CellModel) – the cell model

  • param_values (dict) – optimized parameters

  • sim (bluepyopt.ephys.NrnSimulator) – neuron simulator

  • isolate (bool) – whether to isolate the run in a process with a timeout to avoid bad cells running for too long

  • timeout (float) – maximum real time (s) the cell is allowed to run when isolated

Raises

Exception – if the threshold_current is not set to the cell model

Returns

dict containing the responses for the step protocol

class emodelrunner.protocols.sscx_protocols.SweepProtocolCustom(name=None, stimuli=None, recordings=None, cvode_active=None, deterministic=False)[source]

Bases: SweepProtocol

SweepProtocol with generate_current method.

name

name of this object

Type

str

stimuli

List of all Stimulus objects used in protocol

Type

list of Stimuli

recordings

Recording objects used in the protocol

Type

list of Recordings

cvode_active

whether to use variable time step

Type

bool

Args of the parent constructor:

  • name (str): name of this object

  • stimuli (list of Stimuli): Stimulus objects used in the protocol

  • recordings (list of Recordings): Recording objects used in the protocol

  • cvode_active (bool): whether to use variable time step

static generate_current(threshold_current, holding_current, dt=0.1)[source]

Return an empty dictionary.

Parameters
  • threshold_current (float) – the threshold current (nA)

  • holding_current (float) – the holding current (nA)

  • dt (float) – timestep of the generated currents (ms)

Returns

empty dict