Skip to content
Brian Wandell edited this page Jul 23, 2017 · 3 revisions

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 cellLayer and cellMosaic classes

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.

The bipolar layer

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);

The rgc layer

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);

Adding mosaics to a layer

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 rgcMosaic

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);

Computing

Example scripts

Two brief scripts illustrate a simple form of the computational pipeline.

Ganglion cell script

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.

Clone this wiki locally