Visual Search
Introduction

In my practicals I help students conduct experiments to test Treisman's Feature Integration Theory (FIT) of visual processing. The students are expected to:

  1. Read the relevant literature.
  2. Create a novel research hypothesis.
  3. Program an experiment (using E-Prime).
  4. Collect data.
  5. Analyse their data.
  6. Present their data to the class. (as a group)
  7. Write a report about their findings. (individual assignment).

This practical will be conducted accross 5 weeks..

  1. A short lecture introducing parallel and serial search, overview of previous research, and description of writing EPrime experiments. Teams are formed and the groups should go to the library to identify new topics to explore.
  2. Teams present idea for project to instructor. EPrime programming and pilot testing of paradigm.
  3. Present pilot data and begin testing participants in experiments
  4. Analyze data. I also give a brief review of statistics.
  5. Each team presents their findings to the rest of the class
  6. Project reports due in the school office.

Links

Visual Search Paradigm

Much of the evidence for FIT comes from visual search tasks. The students are encouraged to use this paradigm for their experiments. This paradigm requires creating a large number of stimuli for test. A sample display is shown on the above on the right. In this case, the subject's task would be to try to decide if a red Q is present as rapidly as possible. By varying the number of distractor items, we can infer how automatically the target is detected. A classic finding is that the target 'pops out' if it is defined by a unique single feature (e.g. looking for a red Q in a field of green Qs). In these 'pop out' case, the time to detect a target is not influenced by the number of distractors. In contrast, looking for items that are defined by a conjunction of features (as shown here - the target is defined by the combination of color and form) are directly dependent on the number of distractors.

Visearch

Experiments that use the visual search paradigm require a large number of displays to be generated: displays with a different number of distractors, some displays with or without targets, different colors, etc. While it is possible to generate these displays using a painting program, that would be very laborious. To aid my students, I wrote a simple program that generates bitmap images. Visearch is free, and you can download it by shift+clicking here. The targets can be symbols or letters (any character defined by a standard font). Here is a list of the settings (as displayed from left-to-right on the toolbar):

  1. Create image button: press this button to draw a display.
  2. Save to disk button: saves the bitmap.
  3. Font button: allows the user to select a typeface, size, style for the characters.
  4. BG button: background color.
  5. Stimulus radius: how far are the stimuli from the fixation (in pixels).
  6. 16/256 color selection: sets what type of bitmap will be created (16 color images are smaller).
  7. 2/4/8/16 Items: Number of items in the display (targets and distractors).
  8. Display size: smaller sizes use less memory.
  9. Target position: value 0..16. 0=target not present.
  10. Target color.
  11. Target identity: value 0..255 that defines the character used as the target.
  12. 1st Nontarget color.
  13. 1st Nontarget identity (0..255).
  14. Number of 2nd nontargets (0..16).
  15. 2nd nontarget color.
  16. 2nd Nontarget identity (0..255).
EPrime

Running the software

We will use E-Prime to test our experiments. The best way to learn about E-Prime is to try out a sample experiment. A pair of sample experiments are available from the web: shift+click here to download it (your computer may need an unzipping program to extract this file). It is important that you do not run your experiments from the network - as the timing will be poor.

To run the experiment, start EStudio (select Start/Programs/E-Prime/E-Studio). You can then select the "Open an existing experiment" option and choose "block.es" from the folder visearch folder. Choose "Run" from the "E-Run" menu to run the experiment. The experiment will start - press the '1' key when you see a diagonal bar, press '2' for displays where all the items are Os. To stop the experiment in the middle of a block, press <ctrl> <alt> <shift> at the same time.

The experiments

The sample visual search experiments are designed to look at the effects of target familiarity on visual search performance. The subjects look for a Q or upside-down Q in a field of Os. The main idea is to see if visual search performance when looking for unfamiliar upside-down Q's versus familiar Qs. I intentionally chose a flawed experiment: the main concept is learning how to program EPrime. I have included two variations of the experiment: "block.es" and "interlv.es". These two experiments are similar in most respects: they test the same hypothesis and they use the same stimuli. The differences are:

  • block.es: Subjects complete a block with Qs, followed by two blocks of upside down Qs, and finish with a final block of Qs. So the independent variable is "blocked". This particular design uses "ABBA" counterbalancing: the order of the conditions is reversed between the first two and final two blocks in an attempt to control for learning and fatigue effects. In reality, you would also want to create a "BAAB" version of this study for half of the subjects (start and end with upside down blocks) [why?].
  • interlv.es: Here the two experimental conditions are interleaved within the same block. Between trials the subject does not know if they will search for a familiar Q or an upside down Q. Interleaved designs are very effective at counterbalancing learning/fatigue effects. The interleave experiment also has an error feedback message.

These two sample experiments are a good starting point for learning about E-Prime. Feel free to modify your copies to test your own research hypothesis.

Creating a unique experiment

To run the experiment, start EStudio (select Start/Programs/E-Prime/E-Studio). You can then select the "Open an existing experiment" option and choose experiment you want to modify. You will see a screen that looks like this:

Here is a quick overview of the components that you can see on the screen:

  • "Toolbox" panel: here are new items that you can drag and drop on your experiment if you want to add a new image display, text display, etc.
  • "Structure" panel: a flow diagram of how the expeirment will run. Clicking on items here will cause their properties to be displayed in the next two panels. Click on the "TrialProc" icon two see the following:
  • The "Timeline for trialproc" window appears when you click on the "TrialProc" procedure. Here you can organize the flow of events during each procedure: e.g. each trial in TrialProc will start with a fix[ation], followed by a stimulus and conclude with error feedback. We can drag items from the toolbox to this window to modify the events.
  • Properties window: Shows properties for currently selected item of the "Structure", in this case we can modify details of TrialProc.

Lets examine the structure window:

This shows the order for events in the experiment. It runs somethings like this:

  1. Show initial instructions
  2. Repeat blocks [BlockProc] for the repititions specified in Blocklist (in my sample, 1 block).
  3. Repeat trials [TrialProc] for the repitions specified in TrialList (in my sample, 64 trials).
  4. For each trial, show a fix[ation], followed by a stimulus, and ending with feedback.
  5. End by showing the goodbye message.

Lets now take a look at trial list - this is the bit that you will have to modify to adapt the experiment for your designs (you may also need to adapt other components, depending on your design). Double clicking on the TrialList icon in the structure window shows us a window that looks like this:

.

The buttons on the top allow us to add/delete new columns or rows to our list. Benath that we are told the total number of trials in this list (64 trials). Beneath this is the list, with the following columns:

  1. ID: row number
  2. Weight: How many times does this stimuli appear per block. For example, the stimulus described in row 1 is presented 8 times per block, while condition 2 is only presented two times. The reason for this difference will become clear when we get to the "Stimulus" column.
  3. Procedure: Which procedure (stimuli order) will be used for this condition: in this study, all conditions use "TrialProc".
  4. Nested: ignore.
  5. Stimulus: name of bitmap to be used. Note that condition 1 uses stimulus 4_no (4 items, no target), while conditions 3-4 each show a target at a different position. This explains the 'weight' column: because there are four target positions, the number of no target conditions are presented four times as often as each type of target trial.
  6. Correct Answer: what should the subject press to be scored as a correct answer? In this study, the subject is supposed to press a '1' when a target is present, and a '2' when it is absent.
  7. Stat: This column will be used for analysis - even though there are 28 conditions in total, there are only 8 conditions for the purpose of analysis (4 or 8 targets, upside-down or not, target or none). This will allow us to easily analyse our data.

Other things you may want to change for your experiment:

  1. Stimulus duration: Click on 'Stimulus' in the structure panel, then select the "duration" property (currently 1000ms). Note that if you want the duration to vary between conditions, you will need to add a column to the TrialList.
  2. Feedback: Is this necessary? If not, delete this.
  3. Instructions: Are they appropriate for your study.
  4. How many blocks/trials per block do you need to run to have sufficient data? (You probably want at least 40 trials per condition per subject).

After modifying your data, make sure to save your new experiment. You may want to choose "Save as" from the "File" menu to give the program a new name.

Piloting your study

Before collecting data, it is important to test your design to validate and verify that everything works correctly. Choose "Run" from the "E-Run" menu to start the experiment. To test that you have correctly assigned the right target present and target absent keys, you may want to conduct one test run where you carefully enter the correct answer to each trial and then run another run where you enter only INCORRECT answers.

To examine your pilot data, choose "E-Data-Aid" from the "Tools" menu. Then open your data file (it is saved in the same folder as your experiment, and the name shows the subject number). Scroll over until you find a column that is labelled "Stimulus.ACC" - this column shows whether the subject made a correct (1) or incorrect (0) response. Now find the column labelled "Stimulus.RT" - this column lists the response time (in milliseconds) to each trial.

Collecting Data

After you have thoroughly tested your experiment, you are now ready to begin collecting data. For this practical, you will want to test at least 6 people - 12 would be better. Consider whether you can test yourselves. When you run each individual, give them a different subject number so that the old data will not be overwritten. Make sure to keep a backup copy of your data after each subject (copy it to a network drive.

Helpful Reminders:

  1. To abort an experiment partway through, press <Ctrl> <Alt> and <Shift> simultaneously.
  2. Run your experiment from the computers harddisk - running on the network will lead to poor timing. (Though you should backup your experiment and data to the disk).
  3. Putting in feedback messages may help you test that you have assigned the correct keys and also inform subjects of their mistakes. However, they can also be distracting.