Skip to content

Retinotopy tutorial

Nathan Witthoft edited this page Nov 21, 2016 · 5 revisions


This tutorial guides a user through the steps needed to identify visual field maps using the mrVista tools. It is intended to provide a broad overview of several stages of the process, from stimulus generation, through analysis, to visualizing maps and selecting ROIs. It also provides specific advice about software features that are relevant to retinotopic analyses.

We describe the analysis of an experiment based on rotating wedges and expanding rings. In more recent years, we have largely shifted to using newer methods based on population receptive field analyses, and in particular using stimuli with blanks or traveling bars (Dumoulin and Wandell, Neuroimage, 2008). Those methods are described in the PRF_Tutorial pages.

Another tutorial on using the retinotopy tools was put up by Xu Cui, and is available here.

Table of Contents

Background on traveling wave experiments

The vast majority of images in our visual field map publications were made using mrVista. A recent example is Brewer et al. (2005).

The mrVista code was designed to analyze visual field maps; in fact, Steve Engel gave it the original name mrLoadRet (for MR Load Retinotopy). We called the methods we introduced for measuring retinotopy 'traveling-wave' experiments, Engel et al. (1994).Others (Sereno et al. 1995) introduced the term 'phase-encoded' retinotopies, also a useful phrase.

The key idea in the traveling-wave experiment is to measure, at each point in cortex, the harmonic function that best correlates with the fMRI time series. The amplitude of this harmonic relative to other harmonics in the time series informs us about the reliability of the signal. This ratio measures the signal coherence. The phase of the best-fitting harmonic informs us about the location in the visual field that most effectively stimulates the cortical location. The mathematical analysis is provided in the appendix of Engel et al. (1997).

N.B. To properly measure coherence, the amplitude at the stimulus frequency is normalized by the sum of amplitudes across all frequencies. In many cases, only the amplitudes of frequencies near the stimulus frequency are used. This choice is made sometimes because dividing by the signal amplitudes at the 2nd and 3rd harmonics reduces the coherence although such signals are expected. The specific choice for measuring coherence must be described in the publication.

Run the Retinotopic Mapping Experiment

Retinotopic Mapping Stimuli

The main retinotopic stimulus is in the vistadisp repository. To run it, make sure this repository, as well as the PsychToolbox, is in your path, and type:

 ret

A menu will appear with a number of options for specifying the retintopy stimulus.

Example: To run counter-clockwise wedges with blanks, select "wedges (with blanks)". "Wedges (reverse) with blanks" will run clockwise. (Make sure you account for any flips induced by the display setup at the scanner.) To run expanding rings, select "Rings (expanding) with blanks". The default stimulus size, 'max', will present the stimuli up to a maximum eccentricity determined by the display settings. If there is an accurate display settings file saved (edit the code loadDisplayParams in the VISTADISP toolbox to see what is required; this would include an estimate of the distance of the display from the subjects' eyes, and the dimensions of the display), the code will estimate the visual angle subtended by this stimulus.

Analyze the Retinotopic Mapping Data

Initialize the Reference Anatomy

Two steps greatly facilitating identifying retinotopic maps using mrVista. First, there is collecting and initializing a high-quality T1-weighted anatomy, called the "reference anatomy" or "3DAnatomy". Second, there is segmenting out the gray and white matter of the anatomy, in order to restrict the data to gray matter and view on a surface representation.

The first step is fairly straightforward. The second step can be labor-intensive. (Depending on the quality of the anatomies and your experience in segmenting, it can take from a few hours to many days per subject.) For this tutorial, we will present the steps for the full analysis, including semgenting the gray matter. If this is prohibitively difficult, visual field maps can be selected based on reversals in the polar angle representations in the volume view, but be warned that this can be tricky. Many of these maps are in deep sulci, which are highly convoluted with respect to the 3D sampling grid of the anatomies.

Here is a brief rundown of the steps needed to initialize the anatomy, described in more detail on the linked pages above.

  1. Place the data for the T1 anatomy in its own folder for each subject.
  2. Convert the raw T1 files into a NIFTI file using createVolAnat.

Initialize the Functional Session

For most data sets, you can initialize the functional session with mrInit.

For certain other cases, such as data from scanners where every slice and time point is given as a separate DICOM file, you may want to use the Steps for initializing from the command line.

Link from the functional session folder to the Reference anatomy folder

Because you can have many functional sessions on the same subject, we usually have a single folder for each subject's high-quality reference anatomy, and for each functional session with that subject. These folders do not need to be near one another on your file system; but it helps to create a link from each functional session you analyze to the folder with the reference anatomy. We do this (on linux or mac systems) with the following commands:

  • cd [functional]
  • ln -s [path] 3DAnatomy
This creates a link named '3DAnatomy' containing the 3D anatomical image as well as any gray matter semgentations, 3-D Surface Mesh representations flattened gray matter patches, and ROIs that can be shared across many sessions.

Run the coherence analysis

The main step in using mrVista to analyze traveling-wave data is to find the best-fitting harmonic to the time series at each cortical location. We store the information about the best-fitting harmonic in a structure we call the corAnal, which is short for "correlation analysis".

To compute the corAnal information from traveling wave data, you need to have the proper analysis parameters set. These are usually set in mrInitRet, but can be edited later in mrVista using the menu option 'Edit' | 'Data Type' | 'Edit Data Type'. The parameters for the corAnal are listed under the 'blocked analysis parameters' section. (Note that for block-design experiments in which the block order does not cycle through continuously -- e.g. ABCABC -- the 'event-related' analyses are actually more applicable; this nomenclature is intended to distinguish analyses where you have to specify the onset of each event type versus the corAnal, where you only need to know the total number of cycles). The key parameter to set is the number of cycles per scan: the sinsuoid predictor will have this frequency.

A traveling wave analysis is most effective when the time series contains an integer number of cycles. It is common practice to acquire data from an extra half cycle or so, and trim the extra frames at the beginning of the scan when initializing. (The reason for discarding the initial frames is that magnetic gradients are not typically uniform at the start of a scan.) There are options to trim frames during the initialization step in mrInitRet, as well as afterwards using the menu Analysis | tSeries | Clip Frames from tSeries.

The corAnal is computed by selecting 'Analysis' | 'Traveling wave analyses' | 'Compute corAnal' for the current scan, all scans, or a user-selected set of scans. The computation is fairly fast, taking approximately 5 minutes for 10 scans on a 2Ghz Pentium machine. This calculation produces the coherence, phase and amplitude of the response to the traveling wave. These values are computed at every voxel location.

Also, it is possible to examine a mixed-frequency traveling wave. In this application a stimulus may map a parameter at one frequency (e.g., sweeping across visual eccentricity 8 times a scan), but may also include a blank stimulus at a separate, nonharmonic frequency (e.g., switching on and off 10 times a scan). Running two corAnals at these two principal frequencies can identify both the representation of polar angle and the response contrast of stimulus vs. no stimulus. To do this, you can run 'Analysis' | 'Traveling wave analyses' | 'Compute corAnal 2 Freq.'. This runs the correlation analysis for each frequency.

View the results of the coherence analysis

After a corAnal is computed, a file 'corAnal.mat' is saved in the view's data directory (e.g., 'Inplane/Original/corAnal.mat'). This saved file contains three fields which describe the results of the analysis: The signal coherence for each voxel ('view.co') which measures the goodness-of-fit of the sinusoid model; the amplitude of the best-fitting sinusoid ('view.amp'), and the phase of the best-fitting sinusoid ('view.ph'). The phase data are what is usually viewed during retinotopy experiments. The phase reflects the zero-crossing of the best fitting sinusoid within one stimulus cycle. A voxel with a phase of 0 radians has a BOLD response which is rising at the beginning of the cycle, and therefore whose most effective neural stimulation occurs approximately at the beginning of the cycle. Variations in the hemodynamic impulse response function between subjects may affect the relation between the phase and the actual best time within the cycle.

The different data fields in a corAnal can be toggled by using the View menu; further details are in the Inplane page.

Traveling Wave Coherence Traveling Wave Amplitude Traveling Wave Phase

Set View Options

The phase produced by the coherence analysis specifies the time in the stimulus cycle which corresponds to the zero-crossing point of best-fitting sinusoid. That is, if the phase is 0, the BOLD response was rising (halfway between peak and trough) right at the beginning of each cycle; if it's π radians, then it was rising halfway through the cycle; if it's 3 π / 2, it was rising three-quarters of the way along, and so on. If the sinusoid is a good approximation to the hemodynamic rise time, then this time corresponds approximately to the time when the neural populations contributing to the BOLD response in the region started being stimulated by the stimulus.

The next step in the tutorial is to provide a mapping from corAnal phase to a rough approximation of real-world units. Setting these parameters will cause the color bar in the view to reflect the mapped parameter (polar angle or eccentricity) rather than straight ahead phase. (Note that this is a simple mapping; a more sophisticated estimate can be produced by the population receptive field model.)

  1. Under the Colormap menu, select Set Retinotopy Parameters... and specify the retinotopic mapping scans in the Original data type.
  2. For each scan, you will be presented with two dialogs. The first asks whether the present scan mapped polar angle or eccentricity. The second allows you to provide parameters specifying where the stimulus was at the start of each cycle, its width, and what direction it proceeded.

Select a color map

There are a number of color maps available for the data overlays. A shortcut to these color maps can be accessed by right-clicking on the color map legend in the view window (Inplane, Volume, or Flat).

For this tutorial, we will use a color wheel in which the vertical and horizontal meridians are separate primary colors, to facilitate identifying the boundaries between retinotopic regions.

  • Select the polar-angle mapping scan.
  • Right-click on the colorbar and select Both Visual Fields Colorwheel.

Project Data Onto Gray Matter

Install a Segmentation

First, make sure the inplanes for the functional session are aligned to the volume anatomy. Next, open an inplane window. In this window, select the menu Segmentation | (Re-)installSegmentation. (Command line: installSegementation; )

The install segmentation routine will ask you to specify the location of the .gray and .class files for the right and left hemispheres, as produced in mrGray. If you don't wish to install a segmentation for one of these hemispheres, you can leave these files blank (select "Cancel" when prompted for that hemisphere). This step will produce a session/Gray subdirectory for the Gray view, with the file Gray/coords.mat, which contains the location of the gray matter coordinates and node/edge information for each hemisphere.

Transform data from inplane to gray view

Now that the gray segmentation is installed, you can open up a Gray view. Select Window | Open Gray 3-View Window or type mrVista 3view or mrVista 3. (This provides a view with 3 axes, showing the data in each orientation. You can also open a single-orientation-at-a-time window, using the menu Window | Older Window Types | Open Single-Orientation Gray Window, or typing mrVista gray.) Keep the inplane window open.

Make sure the gray window is pointing at the same data type as the inplane window. Now, from the gray view, select the menu Xform | Inplane -> Volume | CorAnal (all scans) (or the appropriate scan selection). This will transform the co, amp, and ph fields from the traveling wave analysis to the gray view. You can also transform parameter maps, such as the mean map or the spatial gradient, to the gray view; the easiest way is to select the menu Xform | Inplane -> Volume | All maps in data type | Trilinear interpolation. (You can also select "nearest-neighbor" interpolation if you're concerned a particular map should not be upsampled beyond the functional resolution; this will make the map as blocky as the functional data.) If you want to do time series analysis in the gray view, you can also select Xform | Inplane -> Volume | tSeries | (interpolation option).

(If you get an error that no inplane is selected, make sure there is an open Inplane window, and click inside it once to select it. This sets the global variable selectedINPLANE to that particular inplane view.)

Build a Mesh

Load a Mesh

Select Visual Field Map ROIs

Several papers describe the selection of visual field maps based on phase reversals in the polar angle representation. Some good ones include Engel et al., Nature, 1994; Larsson * Heeger, J. Neurosci, 2006; Wandell et al., Neuron, 2008. A copy of the 2007 Neuron review article by Wandell et al is available here, and can serve as a good in-depth guide to these regions and the original references which identified each region using fMRI.

The selection of reversals always starts at V1, which is located along the Calcarine Sulcus. V1 forms a full hemifield representation of the contralateral visual field: the left hemisphere represents the right visual field, and vice versa. The visual field representation is also "up/down-flipped": dorsal V1 ends with a phase reversal at the lower vertical meridian (LVM), and ventral V1 ends with a reversal at the upper vertical meridian (UVM).

Counting dorsally from V1, established visual field map reversals are:

  • V2d: this is a lower quarter field which extends from the lower vertical meridian to the horizontal meridian ("HM").
  • V3d: this is a lower quarter field which extends from the horizontal meridian back down to the lower vertical meridian.
  • V3a and V3b: These two regions proceed dorsally from the V3d lower vertical meridian to an upper vertical meridian; each is a hemifield representation. The two regions share a separate confluent fovea from V1-V4, often visible dorsally in the posterior intraparietal sulcus (IPS). V3a and V3b proceed in opposite directins along the cortical surface from the fovea.
  • V7: this hemifield extends from the upper vertical meridian to another lower vertical meridian along the IPS.
Anterior to V7, several groups have reported additional hemifield representations and uppwer/lower meridian reversals (IPS1-4) along the intraparietal sulcus, which are implicated in spatial attention.

V3d and V3a/b meet at a "Y" junction of lower visual field representation. There is some disagreement as to what comprises the third side of the "Y". We here adopt the conventions of Larsson and Heeger 2006, in describing two hemifield maps, LO-1 and LO-2, which we see in about half of all subject. There is also an assertion by Hansen et al., 2007, that where LO-1 would lie, there is actually a dorsal extension of V4, homologous to the situation in monkeys.

  • LO-1: A hemifield extending from the lower vertical meridian (the ventral part of the "Y" junction, shared with V3d and V3a/b) to an upper vertical meridian along lateral occipital complex. In many subjects, the map may not appear to cover an entire hemifield, and may instead show a reversal closer to the horizontal meridian.
  • LO-2: Extends from the anterior LO-1 boundary (which is an apparent reversal between the horizontal and upper vertical meridian) to a lower representation, close to or abutting hMT+.
LO-1 and LO-2 exhibit some overlap with, but are not equivalent to, the object-selective area LO, or the lateral occipital complex (as defined by Malach et al., 1995). For further details, see Sayres et al., 2008.

Counting ventrally from V1, we find the following field maps:

  • V2v: this is an upper quarter field which extends from the upper vertical meridian to the horizontal meridian.
  • V3v: this is a lower quarter field which extends from the horizontal meridian back down to the lower vertical meridian.
  • hV4:
  • VO-1:
  • VO-2:
Selection of visual field maps on a right hemisphere polar angle map. ''Left:'' Flat map representation; ''Right:'' 3D Mesh representation. Human MT+ complex and "Fusiform Face Area" are shown for reference.

Optional: Quantiatively fit visual fields using an atlas

For some applications, it may be desirable to define the boundaries of a visual field map quantiatively. In this case, we use the Retinotopic Atlas method, which is implemented on the Flat view, and which fits an a priori model of polar angle and eccentricity to the measured maps. We do not do this for all our projects, but we have in some cases (For examples, see Brewer et al, Nat. Neurosci, 2005; or Dougherty et al., J. Vis., 2003.)

To do this, you will need to do the following:

  • Create a Flattened Patch of Cortex near the field maps you want to model.
  • Install the flat patches for each hemisphere for your functional session, creating a Flat view in mrVista.
  • Transform the corAnal data from the Gray view to the Flat view, by opening a Flat window and using the "Xform" menu.
  • Follow the further instructions on the Atlas page for choosing the corners of the modeled visual fields, creating an idealized model, and fitting it to the data.
Also note that, when this process is done, the normalized atlas space may be used as a method of averaging data across subjects. However, the code for doing this is still being debugged, and care should be taken to avoid circular concerns when applying this method (since it aligns data by polar angle maps, the resulting polar angle averages are not independent of your averaging method).
Clone this wiki locally