Rapid Visual Information Processing - RVIP

Technical Manual

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond

Last Modified: December 03, 2025 by K. Borchert (katjab@millisecond.com), Millisecond

Script Copyright © Millisecond Software, LLC

Background

This script implements the Rapid Visual Information Processing Task (RVIP), a measures of processing speed and performance. The implemented procedure is based on Wesnes & Wartburton (1984) and adapted to run as part of the Cognitive Demand Battery (CDB) (Kennedy et al, 2008).

References

Rvip Procedure:
Wesnes, K. & Wartburton, D.M (1984), Effects of scopolamine and nicotine on human rapid information processing performance. Psychopharmacology, 82, 147-150.

Cognitive Demand Battery (Cdb):
Kennedy, D. O., Haskell, C. F., Robertson, B., Reay, J., Brewster-Maund, C., Luedemann, J., Maggini, S., Ruf, M., Zangara, A., & Scholey, A. B. (2008). Improved cognitive performance and mental fatigue following a multi-vitamin and mineral supplement with added guaraná ( Paullinia cupana). Appetite, 50(2), 506–513. https://doi.org/10.1016/j.appet.2007.10.007

Duration

5 minutes.

Description

A participant is presented with a series of digits (1-9) on a computer screen. The presentation time is 100 digits/min (or 1digit/600ms). The participant's task is to press a response key (here: Spacebar) as soon as they detect a series of three consecutive odd or three consecutive even digits. By default, the task runs for 5 minutes and generates a unique sequence of digits with roughly 8% targets and target distances from 5-20.

Procedure

(1) Test:
This customized script calculates the number of digits for the test sequence based on
parameters.totalTaskDurationMin.

If parameters.UseExistingSequence = false:
The script attempts to generate a unique digit sequence for the test.
The targetProportion is set around 0.8 and the distances btw. targets is btw. 5-20
(more information about the algorithm see below)

If parameters.UseExistingSequence = true:
The script cut the original RVIP test sequence according to the calculated number of digits

TrialSequence:
A new digit is presented every 600ms.
The response to the last digit of a target sequence is scored as a Hit if the participant reacts
within 1500ms (target response window described in Wesnes & Wartburton (1984), can be changed by
experimenter in this script) of onset of the last digit of a target sequence.
Any response that occurs later is scored as a False Alarm.

Algorithm Description Of Sequence Generator (See Script Cdb_Sequencealgorithm.Iqjs):
- the script attempts to generate a unique digitsequence (digits 1-9) for expressions.numberOfDigits
(depends on parameters.taskDurationMin) within 500 attempts
- the digit sequence should contain roughly 8% (see parameters.propTargets) targets
(targets = three odd or three even consecutive digits)
accepted target proportions: targetProportion-0.005 < targetProportion < targetProportion + 0.005
=> btw. 0.075 - 0.085
- the distance btw. target sequences are randomly selected (with replacement) from 5-20

IN CASE no unique sequence can be generated within 500 attempts:

1. for parameters.taskDurationMin = 5
If no unique sequence can be generated within 500 attempts, the script randomly samples from
a pregenerated list of emergency digitsequences and leaves a note in the data file (values.flag = 1).
These pre-generated sequence use targetProp ~ 0.08
( if that proportion is changed the emergency lists are suspended)

2. for any other parameters.taskDurationMin
The script will use the original fixed sequence of the RVIP (see list.digitsequence) and cut it to the necessary
digit sequence. Values.flag will be 2 in the datafile and no further information about the sequence will be
stored.

This script procedure does not run a practice run.

Instructions

to edit instructions, go to section Editable Instructions

Summary Data

File Name: cdb_rvip_summary*.iqdat

Data Fields

NameDescription
inquisit.version Inquisit version number
computer.platform Device platform: win | mac |ios | android
startdate Date script was run
startTime Time the session was run
subjectId Participant ID
groupId Group number
sessionId Session number
elapsedTime Session duration in ms
completed 0 = Test was not completed
1 = Test was completed
Parameter
taskDurationMin The set task duration in minutes
propCorrect Proportion correct target detection (test)
sumTargets Counts how many targets have been presented (test)
sumHit Counts the number of Hits (test)
sumFA Counts the number of False Alarms (test)
meanRTHit Determines the mean hit RT (in ms) - measured from onset of last target digit (test only)
stdHit Determines standard deviation of hit RTs (test only)
medianRTHit Determines the median hit RT (in ms) - measured from onset of last target digit (test only)
Test Digit Sequence Information
flag 0 = a unique sequence could be generated
1 = a unique sequence could NOT be generated within 500 attempts
and an emergency sequence from an existing pool was used instead
(for totalTaskDurations_inmin = 3, 6 or 9 with targetProp = 0.08
and presentationtime = 600ms)
2 = a unique sequence could NOT be generated within 500 attempts
and the original RVIP sequence (see list.digitsequence in this script)
was shortened for the requested totalTaskDurations_inmin.
NA = no unique sequence was requested
sequenceLength The length of the test digit sequence
propTargets Proportion of targets in target sequence as calculated by (number of targets/number of digits)
meanTargetDistance The mean digit distances btw. target sequences
targetPositions The target positions in the sequence (target position = position of last digit of the trio)
sequence The digit sequence used for test
if the original RVIP sequence was simply shortened, you will find additional "NA" values in your datafile

Raw Data

File Name: cdb_rvip.iqdat

Data Fields

NameDescription
build Inquisit version number
computer.platform Device platform: win | mac |ios | android
date Date the session was run
time Time the session was run
subject Participant ID
group Group number
session Session number
blockCode Name of the current block
blockNum Number of the current block
trialCode Name of the current trial
trialNum Number of the current trial
Parameter
taskDurationMin The set task duration in minutes
focusDigit3 The three digits that need to be checked to see if they are all odd or all even
focusDigit2
focusDigit1
digit The digit presented in the current trial
btwTargetsCounter Counts the number of digits between target trials
target 0 = no target presented
1 = target presented (the third digit in a row of either all odd or all even digits)
while the current digit may not be a target, the trial might still accept
target responses if the previous target is still active
targetStartTime The script elapsed time (in ms) the last target was presented
startTrialTime The script elapsed time the current trial started (in ms)
targetResponseWindow Time window during which a target is active (here: up until 1500ms after onset of a target, consistent with Wesnes & Wartburton (1984))
targetResponseEndTime Starttrial of a target-trial + interval (in ms)
targetActive 0 = target not active
1 = target still active (even though the currently presented digit itself might not be a target)
response The participant's response (e.g. scancode of response key)
57 = spacebar
0 = no response
correct The correctness of the response (1 = correct; 0 = incorrect)
responseTime The script elapsed time when a spacebar response is made (in ms)
rtHit The response latency (in ms) for the current Hit
=> calculated as difference between responseTime-targetstarttime
=> thus measures the time it took to hit spacebar after a target was presented
(latency measured from onset of last target)
latency The trial latency (in ms) (for the current trial)
measures the response time of hitting the spacebar measured
from onset of current digit (if no response, this variable stores the trial duration)
hit 1 = spacebar press was registered during the current trial while a target was still active
0 = no spacebar press was registered during the current trial while a target was still active
"" (empty): no active target during the current trial
fa 1 = spacebar press was registered during the current trial while no target was active
0 = no spacebar press was registered during the current trial while no target was active
"" (empty): the target was still active during the current trial
sumTargets Counts how many targets have been presented
sumHit Counts the number of Hits
sumFA Counts the number of False Alarms
Test Digit Sequence Information
flag 0 = a unique sequence could be generated
1 = a unique sequence could NOT be generated within 500 attempts
and an emergency sequence from an existing pool was used instead
(for totalTaskDurations_inmin = 3, 6 or 9 with targetProp = 0.08
and presentationtime = 600ms)
2 = a unique sequence could NOT be generated within 500 attempts
and the original RVIP sequence (see list.digitsequence in this script)
was shortened for the requested totalTaskDurations_inmin.
NA = no unique sequence was requested
sequenceLength The length of the test digit sequence
propTargets Proportion of targets in target sequence as calculated by (number of targets/number of digits)
meanTargetDistance The mean digit distances btw. target sequences
targetPositions The target positions in the sequence (target position = position of last digit of the trio)
sequence The digit sequence used for test
if the original RVIP sequence was simply shortened, you will find additional "NA" values in your datafile

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
Duration Parameters
taskDurationMin The task duration in minutes5
getReadyDuration The duration (in ms) of the get-ready-trial 2000
targetResponseWindow The time window (in ms) during which a target is active
(here: up until 1500ms after onset of a target, consistent with Wesnes & Wartburton (1984))
1500
presentationTime How long (in ms) a stimulus is presented before the next one replaces it (= frequency of showing a stimulus)
(here: 100 digits/ 1min => 600ms per stimulus, consistent with Wesnes & Wartburton (1984).)
600
Sizing Parameters
digitHeight Controls the size of the digits (percentage of screen height)10%
Sequence Generation
useExistingSequence True = the script uses the current default sequence and simply runs the number of digits
calculated to be appropriate for the current set totalTaskDuration
false = the script generates a unique sequence with parameters.propTarget
false
propTargets The target targetProportion used when generating a unique sequence
( final sequence should be 0.075 <= propTargets <= 0.085)
0.08
Debugging
debugmode True (1): the script is run in debugmode (target alerts are presented on screen)
false (0): the script is run in test mode (default)
0