pulse2percept.implants.ensemble

EnsembleImplant

Classes

EnsembleImplant(implants[, stim, ...])

class pulse2percept.implants.ensemble.EnsembleImplant(implants, stim=None, preprocess=False, safe_mode=False)[source]
classmethod from_cortical_map(implant_type, vfmap, locs=None, xrange=None, yrange=None, xystep=None, region='v1')[source]

Create an ensemble implant from a cortical visual field map.

The implant will be created by creating an implant of type implant_type for each visual field location specified either by locs or by xrange, yrange, and xystep. Each implant will be centered at the given location.

Parameters:
  • vfmap (p2p.topography.CorticalMap) – Visual field map to create implant from.

  • implant_type (type) – Type of implant to create for the ensemble. Must subclass p2p.implants.ProsthesisSystem

  • locs (np.ndarray with shape (n, 2), optional) – Array of visual field locations to create implants at (dva). Not needed if using xrange, yrange, and xystep.

  • xrange (tuple of floats, optional) – Range of x and y coordinates (dva) to create implants at.

  • yrange (tuple of floats, optional) – Range of x and y coordinates (dva) to create implants at.

  • xystep (float, optional) – Spacing between implant centers.

  • region (str, optional) – Region of cortex to create implant in.

Returns:

ensemble (p2p.implants.EnsembleImplant) – Ensemble implant created from the cortical visual field map.

classmethod from_coords(implant_type, locs=None, xrange=None, yrange=None, xystep=None)[source]

Create an ensemble implant using physical (cortical or retinal) coordinates.

Parameters:
  • implant_type (type) – The type of implant to create for the ensemble.

  • locs (np.ndarray with shape (n, 2), optional) – Array of physical locations (um) to create implants at. Not needed if using xrange, yrange, and xystep.

  • xrange (tuple of floats, optional) – Range of x and y coordinates to create implants at.

  • yrange (tuple of floats, optional) – Range of x and y coordinates to create implants at.

  • xystep (float, optional) – Spacing between implant centers.

property stim

Stimulus

A stimulus can be created from many source types, such as scalars, NumPy arrays, and dictionaries (see Stimulus for a complete list).

A stimulus can be assigned either in the ProsthesisSystem constructor or later by assigning a value to stim.

Note

Unless when using dictionary notation, the number of stimuli must equal the number of electrodes in earray.

Examples

Send a biphasic pulse (30uA, 0.45ms phase duration) to an implant made from a single DiskElectrode:

>>> from pulse2percept.implants import DiskElectrode, ProsthesisSystem
>>> from pulse2percept.stimuli import BiphasicPulse
>>> implant = ProsthesisSystem(DiskElectrode(0, 0, 0, 100))
>>> implant.stim = BiphasicPulse(30, 0.45)

Stimulate Electrode B7 in Argus II with 13 uA:

>>> from pulse2percept.implants import ArgusII
>>> implant = ArgusII(stim={'B7': 13})
check_stim(stim)[source]

Quality-check the stimulus

This method is executed every time a new value is assigned to stim.

If safe_mode is set to True, this function will only allow stimuli that are charge-balanced.

The user can define their own checks in implants that inherit from ProsthesisSystem.

Parameters:

stim (Stimulus source type) – A valid source type for the Stimulus object (e.g., scalar, NumPy array, pulse train).

property earray

Electrode array

property electrode_names

Return a list of all electrode names in the electrode array

property electrode_objects

Return a list of all electrode objects in the array

property electrodes

Return all electrode names and objects in the electrode array

Internally, electrodes are stored in an ordered dictionary. You can iterate over different electrodes in the array as follows:

for name, electrode in implant.electrodes.items():
    print(name, electrode)

You can access an individual electrode by indexing directly into the prosthesis system object, e.g. implant['A1'] or implant[0].

property eye

Implanted eye

A ProsthesisSystem can be implanted either in a left eye (‘LE’) or right eye (‘RE’). Models such as AxonMapModel will treat left and right eyes differently (for example, adjusting the location of the optic disc).

Examples

Implant Argus II in a left eye:

>>> from pulse2percept.implants import ArgusII
>>> implant = ArgusII(eye='LE')
property implants

Dict of implants

property n_electrodes

Number of electrodes in the array

This is equivalent to calling earray.n_electrodes.

plot(annotate=False, autoscale=True, ax=None, stim_cmap=False)[source]

Plot

Parameters:
  • annotate (bool, optional) – Whether to scale the axes view to the data

  • autoscale (bool, optional) – Whether to adjust the x,y limits of the plot to fit the implant

  • ax (matplotlib.axes._subplots.AxesSubplot, optional) – A Matplotlib axes object. If None, will either use the current axes (if exists) or create a new Axes object.

  • stim_cmap (bool, str, or matplotlib colormap, optional) – If not false, the fill color of the plotted electrodes will vary based on maximum stimulus amplitude on each electrode. The chosen colormap will be used if provided

Returns:

ax (matplotlib.axes.Axes) – Returns the axis object of the plot

preprocess_stim(stim)[source]

Preprocess the stimulus

This methods is executed every time a new value is assigned to stim.

No preprocessing is performed by default, but the user can define their own method in implants that inherit from return stim ProsthesisSystem.

A custom method must return a Stimulus object with the correct number of electrodes for the implant.

Parameters:

stim (Stimulus source type) – A valid source type for the Stimulus object (e.g., scalar, NumPy array, pulse train).

Returns:

stim_out (Stimulus object)

merge_stimuli()[source]

Constructs the combined stimulus for all implants in self._implants