pulse2percept.models.cortex.base¶
CortexSpatial
, ScoreboardSpatial
, ScoreboardModel
Classes
CortexSpatial (**params) |
Abstract base class for cortical models |
ScoreboardModel (**params) |
Cortical adaptation of scoreboard model from [Beyeler2019] (standalone model) |
ScoreboardSpatial (**params) |
Cortical adaptation of scoreboard model from [Beyeler2019] |
-
class
pulse2percept.models.cortex.base.
CortexSpatial
(**params)[source]¶ Abstract base class for cortical models
This is an abstract class that cortical models can subclass to get cortical implementation of the following features. 1) Updated default parameters for cortex 2) Handling of multiple visual regions via regions property 3) Plotting, including multiple visual regions, legends, vertical
divide at longitudinal fissure, etc.- regions : list of str, optional
- The regions to simulate. Options are any combination of ‘v1’, ‘v2’, ‘v3’. Default: [‘v1’].
- rho : double, optional
- Exponential decay constant describing current spread size (microns).
- xrange : (x_min, x_max), optional
- A tuple indicating the range of x values to simulate (in degrees of visual angle). In a right eye, negative x values correspond to the temporal retina, and positive x values to the nasal retina. In a left eye, the opposite is true.
- yrange : tuple, (y_min, y_max), optional
- A tuple indicating the range of y values to simulate (in degrees of visual angle). Negative y values correspond to the superior retina, and positive y values to the inferior retina.
- xystep : int, double, tuple, optional
- Step size for the range of (x,y) values to simulate (in degrees of
visual angle). For example, to create a grid with x values [0, 0.5, 1]
use
xrange=(0, 1)
andxystep=0.5
. - grid_type : {‘rectangular’, ‘hexagonal’}, optional
- Whether to simulate points on a rectangular or hexagonal grid
- vfmap :
VisualFieldMap
, optional - An instance of a
VisualFieldMap
object that provides retinotopic mappings. By default,Polimeni2006Map
is used. - n_gray : int, optional
- The number of gray levels to use. If an integer is given, k-means
clustering is used to compress the color space of the percept into
n_gray
bins. If None, no compression is performed. - noise : float or int, optional
- Adds salt-and-pepper noise to each percept frame. An integer will be interpreted as the number of pixels to subject to noise in each frame. A float between 0 and 1 will be interpreted as a ratio of pixels to subject to noise in each frame.
- n_threads : int, optional
- Number of CPU threads to use during parallelization using OpenMP. Defaults to max number of user CPU cores.
Important
If you change important model parameters outside the constructor (e.g., by directly setting
model.xrange = (-10, 10)
), you will have to callmodel.build()
again for your changes to take effect.-
build
(**build_params)[source]¶ Build the model
Performs expensive one-time calculations, such as building the spatial grid used to predict a percept. You must call
build
before callingpredict_percept
.Important
Don’t override this method if you are building your own model. Customize
_build
instead.Parameters: build_params (additional parameters to set) – You can overwrite parameters that are listed in get_default_params
. Trying to add new class attributes outside of that will cause aFreezeError
. Example:model.build(param1=val)
-
find_threshold
(implant, bright_th, amp_range=(0, 999), amp_tol=1, bright_tol=0.1, max_iter=100)[source]¶ Find the threshold current for a certain stimulus
Estimates
amp_th
such that the output ofmodel.predict_percept(stim(amp_th))
is approximatelybright_th
.Parameters: - implant (
ProsthesisSystem
) – The implant and its stimulus to use. Stimulus amplitude will be up and down regulated untilamp_th
is found. - bright_th (float) – Model output (brightness) that’s considered “at threshold”.
- amp_range ((amp_lo, amp_hi), optional) – Range of amplitudes to search (uA).
- amp_tol (float, optional) – Search will stop if candidate range of amplitudes is within
amp_tol
- bright_tol (float, optional) – Search will stop if model brightness is within
bright_tol
ofbright_th
- max_iter (int, optional) – Search will stop after
max_iter
iterations
Returns: amp_th (float) – Threshold current (uA), estimated so that the output of
model.predict_percept(stim(amp_th))
is withinbright_tol
ofbright_th
.- implant (
-
is_built
¶ A flag indicating whether the model has been built
-
plot
(use_dva=False, style=None, autoscale=True, ax=None, figsize=None, fc=None, **kwargs)[source]¶ Plot the model :param use_dva: Plot points in visual field. If false, simulated points will be
plotted in cortexParameters: - style ({'hull', 'scatter', 'cell'}, optional) –
Grid plotting style: * ‘hull’: Show the convex hull of the grid (that is, the outline of
the smallest convex set that contains all grid points).- ’scatter’: Scatter plot all grid points
- ’cell’: Show the outline of each grid cell as a polygon. Note that this can be costly for a high-resolution grid.
- 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.
- figsize ((float, float), optional) – Desired (width, height) of the figure in inches
- fc (matplotlib color, optional) – Face color for the grid cells. If None, will use the default matplotlib color cycle.
- kwargs (dict, optional) – Additional keyword arguments are passed on to Grid2D.plot()
Returns: ax (
matplotlib.axes.Axes
) – Returns the axis object of the plot- style ({'hull', 'scatter', 'cell'}, optional) –
-
predict_percept
(implant, t_percept=None)[source]¶ Predict the spatial response
Important
Don’t override this method if you are creating your own model. Customize
_predict_spatial
instead.Parameters: - implant (
ProsthesisSystem
) – A valid prosthesis system. A stimulus can be passed viastim
. - t_percept (float or list of floats, optional) – The time points at which to output a percept (ms).
If None,
implant.stim.time
is used.
Returns: percept (
Percept
) – A Percept object whosedata
container has dimensions Y x X x T. Will return None ifimplant.stim
is None.- implant (
-
class
pulse2percept.models.cortex.base.
ScoreboardModel
(**params)[source]¶ Cortical adaptation of scoreboard model from [Beyeler2019] (standalone model)
Implements the scoreboard model described in [Beyeler2019], where percepts from each electrode are Gaussian blobs. The percepts resulting from different cortical regions (e.g. v1/v2/v3) are added linearly. The
rho
parameter modulates phosphene size.Note
Use this class if you want a standalone model. Use
ScoreboardSpatial
if you want to combine the spatial model with a temporal model.Parameters: - rho (double, optional) – Exponential decay constant describing phosphene size (microns).
- regions (list of str, optional) – The regions to simulate. Options are ‘v1’, ‘v2’, or ‘v3’. Default: [‘v1’]
- xrange ((x_min, x_max), optional) – A tuple indicating the range of x values to simulate (in degrees of visual angle). In a right eye, negative x values correspond to the temporal retina, and positive x values to the nasal retina. In a left eye, the opposite is true.
- yrange (tuple, (y_min, y_max), optional) – A tuple indicating the range of y values to simulate (in degrees of visual angle). Negative y values correspond to the superior retina, and positive y values to the inferior retina.
- xystep (int, double, tuple, optional) – Step size for the range of (x,y) values to simulate (in degrees of
visual angle). For example, to create a grid with x values [0, 0.5, 1]
use
xrange=(0, 1)
andxystep=0.5
. - grid_type ({'rectangular', 'hexagonal'}, optional) – Whether to simulate points on a rectangular or hexagonal grid
- vfmap (
VisualFieldMap
, optional) – An instance of aVisualFieldMap
object that provides retinotopic mappings. By default,Polimeni2006Map
is used. - n_gray (int, optional) – The number of gray levels to use. If an integer is given, k-means
clustering is used to compress the color space of the percept into
n_gray
bins. If None, no compression is performed. - noise (float or int, optional) – Adds salt-and-pepper noise to each percept frame. An integer will be interpreted as the number of pixels to subject to noise in each frame. A float between 0 and 1 will be interpreted as a ratio of pixels to subject to noise in each frame.
- n_threads (int, optional) – Number of CPU threads to use during parallelization using OpenMP. Defaults to max number of user CPU cores.
- important :: (.) – If you change important model parameters outside the constructor (e.g.,
by directly setting
model.xrange = (-10, 10)
), you will have to callmodel.build()
again for your changes to take effect.
-
build
(**build_params)[source]¶ Build the model
Performs expensive one-time calculations, such as building the spatial grid used to predict a percept.
Parameters: build_params (additional parameters to set) – You can overwrite parameters that are listed in get_default_params
. Trying to add new class attributes outside of that will cause aFreezeError
. Example:model.build(param1=val)
Returns: self
-
find_threshold
(implant, bright_th, amp_range=(0, 999), amp_tol=1, bright_tol=0.1, max_iter=100, t_percept=None)[source]¶ Find the threshold current for a certain stimulus
Estimates
amp_th
such that the output ofmodel.predict_percept(stim(amp_th))
is approximatelybright_th
.Parameters: - implant (
ProsthesisSystem
) – The implant and its stimulus to use. Stimulus amplitude will be up and down regulated untilamp_th
is found. - bright_th (float) – Model output (brightness) that’s considered “at threshold”.
- amp_range ((amp_lo, amp_hi), optional) – Range of amplitudes to search (uA).
- amp_tol (float, optional) – Search will stop if candidate range of amplitudes is within
amp_tol
- bright_tol (float, optional) – Search will stop if model brightness is within
bright_tol
ofbright_th
- max_iter (int, optional) – Search will stop after
max_iter
iterations - t_percept (float or list of floats, optional) – The time points at which to output a percept (ms).
If None,
implant.stim.time
is used.
Returns: amp_th (float) – Threshold current (uA), estimated so that the output of
model.predict_percept(stim(amp_th))
is withinbright_tol
ofbright_th
.- implant (
-
has_space
¶ Returns True if the model has a spatial component
-
has_time
¶ Returns True if the model has a temporal component
-
is_built
¶ Returns True if the
build
model has been called
-
predict_percept
(implant, t_percept=None)[source]¶ Predict a percept
Important
You must call
build
before callingpredict_percept
.Parameters: - implant (
ProsthesisSystem
) – A valid prosthesis system. A stimulus can be passed viastim
. - t_percept (float or list of floats, optional) – The time points at which to output a percept (ms).
If None,
implant.stim.time
is used.
Returns: percept (
Percept
) – A Percept object whosedata
container has dimensions Y x X x T. Will return None ifimplant.stim
is None.- implant (
-
set_params
(params)[source]¶ Set model parameters
This is a convenience function to set parameters that might be part of the spatial model, the temporal model, or both.
Alternatively, you can set the parameter directly, e.g.
model.spatial.verbose = True
.Note
If a parameter exists in both spatial and temporal models(e.g.,
verbose
), both models will be updated.Parameters: params (dict) – A dictionary of parameters to set.
-
class
pulse2percept.models.cortex.base.
ScoreboardSpatial
(**params)[source]¶ Cortical adaptation of scoreboard model from [Beyeler2019]
Implements the scoreboard model described in [Beyeler2019], where percepts from each electrode are Gaussian blobs. The percepts resulting from different cortical regions (e.g. v1/v2/v3) are added linearly. The
rho
parameter modulates phosphene size.Note
Use this class if you want to combine the spatial model with a temporal model. Use
ScoreboardModel
if you want a a standalone model.Parameters: - rho (double, optional) – Exponential decay constant describing phosphene size (microns).
- regions (list of str, optional) – The regions to simulate. Options are ‘v1’, ‘v2’, or ‘v3’. Default: [‘v1’]
- xrange ((x_min, x_max), optional) – A tuple indicating the range of x values to simulate (in degrees of visual angle). In a right eye, negative x values correspond to the temporal retina, and positive x values to the nasal retina. In a left eye, the opposite is true.
- yrange (tuple, (y_min, y_max), optional) – A tuple indicating the range of y values to simulate (in degrees of visual angle). Negative y values correspond to the superior retina, and positive y values to the inferior retina.
- xystep (int, double, tuple, optional) – Step size for the range of (x,y) values to simulate (in degrees of
visual angle). For example, to create a grid with x values [0, 0.5, 1]
use
xrange=(0, 1)
andxystep=0.5
. - grid_type ({'rectangular', 'hexagonal'}, optional) – Whether to simulate points on a rectangular or hexagonal grid
- vfmap (
VisualFieldMap
, optional) – An instance of aVisualFieldMap
object that provides retinotopic mappings. By default,Polimeni2006Map
is used. - n_gray (int, optional) – The number of gray levels to use. If an integer is given, k-means
clustering is used to compress the color space of the percept into
n_gray
bins. If None, no compression is performed. - noise (float or int, optional) – Adds salt-and-pepper noise to each percept frame. An integer will be interpreted as the number of pixels to subject to noise in each frame. A float between 0 and 1 will be interpreted as a ratio of pixels to subject to noise in each frame.
- n_threads (int, optional) – Number of CPU threads to use during parallelization using OpenMP. Defaults to max number of user CPU cores.
- important :: (.) – If you change important model parameters outside the constructor (e.g.,
by directly setting
model.xrange = (-10, 10)
), you will have to callmodel.build()
again for your changes to take effect.
-
build
(**build_params)[source]¶ Build the model
Performs expensive one-time calculations, such as building the spatial grid used to predict a percept. You must call
build
before callingpredict_percept
.Important
Don’t override this method if you are building your own model. Customize
_build
instead.Parameters: build_params (additional parameters to set) – You can overwrite parameters that are listed in get_default_params
. Trying to add new class attributes outside of that will cause aFreezeError
. Example:model.build(param1=val)
-
find_threshold
(implant, bright_th, amp_range=(0, 999), amp_tol=1, bright_tol=0.1, max_iter=100)[source]¶ Find the threshold current for a certain stimulus
Estimates
amp_th
such that the output ofmodel.predict_percept(stim(amp_th))
is approximatelybright_th
.Parameters: - implant (
ProsthesisSystem
) – The implant and its stimulus to use. Stimulus amplitude will be up and down regulated untilamp_th
is found. - bright_th (float) – Model output (brightness) that’s considered “at threshold”.
- amp_range ((amp_lo, amp_hi), optional) – Range of amplitudes to search (uA).
- amp_tol (float, optional) – Search will stop if candidate range of amplitudes is within
amp_tol
- bright_tol (float, optional) – Search will stop if model brightness is within
bright_tol
ofbright_th
- max_iter (int, optional) – Search will stop after
max_iter
iterations
Returns: amp_th (float) – Threshold current (uA), estimated so that the output of
model.predict_percept(stim(amp_th))
is withinbright_tol
ofbright_th
.- implant (
-
is_built
¶ A flag indicating whether the model has been built
-
plot
(use_dva=False, style=None, autoscale=True, ax=None, figsize=None, fc=None, **kwargs)[source]¶ Plot the model :param use_dva: Plot points in visual field. If false, simulated points will be
plotted in cortexParameters: - style ({'hull', 'scatter', 'cell'}, optional) –
Grid plotting style: * ‘hull’: Show the convex hull of the grid (that is, the outline of
the smallest convex set that contains all grid points).- ’scatter’: Scatter plot all grid points
- ’cell’: Show the outline of each grid cell as a polygon. Note that this can be costly for a high-resolution grid.
- 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.
- figsize ((float, float), optional) – Desired (width, height) of the figure in inches
- fc (matplotlib color, optional) – Face color for the grid cells. If None, will use the default matplotlib color cycle.
- kwargs (dict, optional) – Additional keyword arguments are passed on to Grid2D.plot()
Returns: ax (
matplotlib.axes.Axes
) – Returns the axis object of the plot- style ({'hull', 'scatter', 'cell'}, optional) –
-
predict_percept
(implant, t_percept=None)[source]¶ Predict the spatial response
Important
Don’t override this method if you are creating your own model. Customize
_predict_spatial
instead.Parameters: - implant (
ProsthesisSystem
) – A valid prosthesis system. A stimulus can be passed viastim
. - t_percept (float or list of floats, optional) – The time points at which to output a percept (ms).
If None,
implant.stim.time
is used.
Returns: percept (
Percept
) – A Percept object whosedata
container has dimensions Y x X x T. Will return None ifimplant.stim
is None.- implant (