pulse2percept.topography.base

Grid2D, VisualFieldMap

Classes

CoordinateGrid(x, y[, z]) Datatype for storing a grid of coordinates Basically an overriden namedtuple with custom __eq__ method
Grid2D(x_range, y_range[, step, grid_type]) 2D spatial grid
VisualFieldMap(**params) Base template class for a visual field map (retinotopy)
class pulse2percept.topography.base.CoordinateGrid(x, y, z=None)[source]

Datatype for storing a grid of coordinates Basically an overriden namedtuple with custom __eq__ method

class pulse2percept.topography.base.Grid2D(x_range, y_range, step=1, grid_type='rectangular')[source]

2D spatial grid

This class generates and stores 2D mesh grids of coordinates across different regions (visual field, retina, cortex). The grid is uniform in visual field, and transformed with a retinotopic mapping to obtain the grid in other regions.

New in version 0.6.

Parameters:
  • x_range ((x_min, x_max)) – A tuple indicating the range of x values (includes end points)
  • y_range (tuple, (y_min, y_max)) – A tuple indicating the range of y values (includes end points)
  • step (int, double, tuple) – Step size. If int or double, the same step will apply to both x and y ranges. If a tuple, it is interpreted as (x_step, y_step).
  • grid_type ({'rectangular', 'hexagonal'}) – The grid type

Notes

  • The grid uses Cartesian indexing (indexing='xy' for NumPy’s meshgrid function). This implies that the grid’s shape will be (number of y coordinates) x (number of x coordinates).
  • If a range is zero, the step size is irrelevant.

Examples

You can iterate through a grid as if it were a list. Notice, the grid is indexed in (x, y) order, starting in the upper left of the grid (following image convention)

>>> grid = Grid2D((0, 1), (2, 3))
>>> for x, y in grid:
...     print(x, y)
0.0 3.0
1.0 3.0
0.0 2.0
1.0 2.0
plot(style='hull', autoscale=True, zorder=None, ax=None, figsize=None, fc=None, use_dva=False, legend=False, surface=None)[source]

Plot the extension of the grid

Parameters:
  • style ({'hull', 'scatter', 'cell'}, optional) –
    • ‘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
  • zorder (int, optional) – The Matplotlib zorder at which to plot the grid
  • 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 (str or valid matplotlib color, optional) – Facecolor, or edge color if style=scatter, of the plotted region Defaults to gray
  • use_dva (bool, optional) – Whether dva or transformed points should be plotted. If True, will not apply any transformations, and if False, will apply all transformations in self.vfmap
  • legend (bool, optional) – Whether to add a plot legend. The legend is always added if there are 2 or more regions. This only applies if there is 1 region.
  • surface (str, optional) – Name of the surface to plot (only for vfmaps that accept a surface argument)
plot3D(style='scatter', ax=None, surface='midgray', color_by='region', **kwargs)[source]

Plots grid points in 3D space. Note, you must have a 3D visual field map to use this method. :param style:

  • ‘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.
Parameters:
  • 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
  • surface (str, optional) – Name of the cortical surface to plot (only with neuropythy vfmap)
  • color_by (str, optional) – What to color the points by. Options are ‘region’ (default), ‘eccentricity’, or ‘angle’
  • kwargs (dict) – Additional keyword arguments to pass to plt.figure() (figsize) or ax.scatter() or ax.plot_trisurf()
class pulse2percept.topography.base.VisualFieldMap(**params)[source]

Base template class for a visual field map (retinotopy)

build(**build_params)[source]

Build the model

Every model must have a `build method, which is meant to perform all expensive one-time calculations. You must call build before calling predict_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 a FreezeError. Example: model.build(param1=val)
from_dva()[source]

Returns a dict containing the region(s) that this visuotopy maps to, and the corresponding mapping function(s).

get_default_params()[source]

Required to inherit from BaseModel

is_built

A flag indicating whether the model has been built

set_params(**params)[source]

Set the parameters of this model

to_dva()[source]

Returns a dict containing the region(s) that this visuotopy maps from, and the corresponding inverse mapping function(s). This transform is optional for most models.