-
Notifications
You must be signed in to change notification settings - Fork 42
Retinal overview
Three main classes define retinal processing: the coneMosaic, the bipolarLayer and the rgcLayer. The cone mosaic class has many properties that are special, and we describe this class elsewhere.
The bipolarLayer and rgcLayer classes share certain properties, and the organization and computations used to implement these two layers will guide the implementations of the lateral geniculate nucleus and V1. We describe the general concepts here; more details are provided in the linked wiki pages.
The data and computations of the principal layers are organized by two main classes: the cellLayer class and the cellMosaic class. These are defined in the isettools/cell directory. These classes are extremely general, and they include only a minimal set of parameters that we expect all layers and mosaics will use.
Conceptually, the layer is a container that holds multiple mosaics. Each mosaic is an array of neurons with similar properties. The bipolar and retinal ganglion cell layers have five pre-defined types of cell mosaics, each specified by its own parameters and computational methods. Users can experiment by adjusting the number of mosaics, the mosaic properties and computational methods.
A bipolar layer is a subclass of the general @cellLayer class. The bipolarLayer takes the cone mosaic, with a computed photocurrent, as its input. The layer is created by the call
bpL = bipolarLayer(coneMosaic);
A retinal ganglion cell layer is a subclass of the general @cellLayer class. The rgcLayer takes a @bipolarLayer with multiple mosaics as its input.
rgcL = rgcLayer(bipolarLayer);
The bipolar mosaics are created by specifying a mosaic cell type and its parameters. The predefined bipolar cell types are {'on midget', 'off midget', 'on diffuse', 'off diffuse', 'onsbc'}
The default parameters for each of these types are selected based on the (limited) information we have in the literature. Many critical parameters can be controlled by the user at the time the mosaic is created. A mosaic is created as
bpMosaicParams = struct( ... list of parameter names and values ... );
bpL.mosaic{ii} = bipolarMosaic(coneMosaic, cellType, bpMosaicParams);
The retinal ganglion cell mosaics are created in a similar way. The five types of RGC mosaics are
RGC: {'on midget', 'off midget', 'on parasol', 'off parasol', 'onsbc'}.
and the creation process is
rgcMosaicParams = struct( ... list of parameter names and values ... );
rgcL.mosaic{ii} = rgcMosaic(coneMosaic, cellType, bpMosaicParams);
Two brief scripts illustrate a simple form of the computational pipeline.
The scripts s_rgcGrid and builds a simple scene comprising a grid pattern. This is passed through the optics and imaged with some eye movements on the retinal mosaic. The cone photocurrent is calculated and then bipolar and ganglion cell responses are calculated.