pulse2percept.topography.retina.montesano2020

Montesano2020Map

Module Attributes

SUPPORT_MAX_DVA

Radial support of the packaged field (dva); identity at and beyond it.

Classes

Montesano2020Map(**params)

Converts between visual angle and retinal eccentricity using two-dimensional RGC displacement [Montesano2020]

pulse2percept.topography.retina.montesano2020.SUPPORT_MAX_DVA = 15.0

Radial support of the packaged field (dva); identity at and beyond it.

class pulse2percept.topography.retina.montesano2020.Montesano2020Map(**params)[source]

Converts between visual angle and retinal eccentricity using two-dimensional RGC displacement [Montesano2020]

Retinal ganglion cell (RGC) bodies are displaced centrifugally from the receptive fields (RFs) they serve. The displacement depends on meridian as well as eccentricity. This map applies the [Montesano2020] field in degrees of visual angle (dva), then converts the displaced location to microns with Watson2014Map.

Displacement is radial: the visual-field polar angle is preserved. The anatomical meridian only selects which profile applies. The zone reaches 14.10 dva temporally and superiorly, 10.52 dva inferiorly, 9.54 dva nasally. Beyond 15 dva the map is the identity.

Added in version 0.11.0.

Parameters:

eye ({'right', 'left'}, optional) – Retinal laterality. Nasal retina is the positive-x visual field in a right eye, the negative-x one in a left eye; positive y is inferior retina in both. Case-insensitive on input; stored lowercase. Defaults to 'right'.

Notes

  • An independent reconstruction of [Montesano2020] as opposed to a port of the original code. The implementation was validated against that paper’s published figures and E2v fits, and cross-checked against the visualFields implementation by the same group, which it matches to 0.07 dva inside the displacement zone. See tools/generate_montesano2020_map.py.

  • This is based on population anatomy [Curcio1990] and not to be interpreted as a subject-specific eye.

property eye

Eye whose nasal/temporal anatomy is used

get_default_params()[source]

Required to inherit from Parametrized

dva_to_ret(xdva, ydva, coords='cart')[source]

Converts dva to retinal coords

Displaces RF to soma in the visual field, then converts to microns with Eq. A5 of [Watson2014].

Parameters:
  • xdva (double or array-like) – x,y coordinates in dva

  • ydva (double or array-like) – x,y coordinates in dva

  • coords ({'cart', 'polar'}) – Whether to return the result in Cartesian or polar coordinates

Returns:

xret, yret – Corresponding x,y coordinates in microns

Return type:

double or array-like

from_dva()[source]

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

get_param_units()[source]

Return storage units for physical parameters.

Subclasses should extend this mapping. Parameters not listed here take plain dimensionless values.

Added in version 0.10.0.

ret_to_dva(xret, yret, coords='cart')[source]

Converts retinal coords to dva

Inverts dva_to_ret(). Eq. A5 of [Watson2014] is inverted numerically, so this does not reproduce Watson2014Map.ret_to_dva(), which evaluates Eq. A6.

Parameters:
  • xret (double or array-like) – x,y coordinates in microns

  • yret (double or array-like) – x,y coordinates in microns

  • coords ({'cart', 'polar'}) – Whether to return the result in Cartesian or polar coordinates

Returns:

xdva, ydva – Corresponding x,y coordinates in dva

Return type:

double or array-like

set_params(**params)[source]

Set the parameters of this object

tissue_unit = um[source]

The unit of the tissue side of the map

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.

visual_unit = dva[source]

The unit of the visual field side of the map