Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 07, 2017
Last Modified: January 22, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements a Psychomotor Vigilance Test, a basic simple response time test. The implemented procedure is based on Basner & Dinges (2011) and Thomann et al (2014).
Thomann, J.; R. Baumann, C.R.; Landolt, H.-P.; & Werth, E (2014). Psychomotor Vigilance Task Demonstrates Impaired Vigilance in Disorders with Excessive Daytime Sleepiness. Journal of Clinical Sleep Medicine, Vol. 10, 1019-1024.
Mathias Basner, MD, PhD, MSc, David F. Dinges, PhD, Maximizing Sensitivity of the Psychomotor Vigilance Test (pvt) to Sleep Loss, Sleep, Volume 34, Issue 5, 1 May 2011, Pages 581–591, https://doi.org/10.1093/sleep/34.5.581
12 minutes
Participants are instructed to press the 1. Habituation Phase: ~1 min (Block is terminated after the last trial cycle within the designated timeframe) target stimulus is a red stopwatch counter (counts in milliseconds) provided by Millisecond - can be edited File Name: psychomotorvigilancetest_summary*.iqdat File Name: psychomotorvigilancetest_raw*.iqdat The procedure can be adjusted by setting the following parameters.
Procedure
- same task as actual test but performance is not used for summary statistics
the Habituation Phase seamlessly turns into the Test Phase without giving participants any further warning.
During the first trial only, a reminder to press spacebar is presented on screen.
2. Test Phase: ~10 min (Block is terminated after the last trial cycle within the designated timeframe)
Trial Sequence:
ISI (randomly selected from 2-10s)-> target stim until response-> RT feedback (1000ms)
If a response is made before the target stim appears, a short error message is flashed onto the screen
and a new trial is started.
Stimuli
Instructions
in script "psychomotorvigilancetest_instructions_inc.iqjs"
Summary Data
Data Fields
Name Description
inquisit.version
Inquisit version number
computer.platform
Device platform: win | mac |ios | android
computer.touch
0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities
computer.hasKeyboard
0 = no external keyboard detected; 1 = external keyboard detected
startDate
Date the session 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
Summary Variables For Test Block Only (Excludes Habituation Phase): (See Thoman Et Al, 2014, P.1020)
meanRT
Mean valid response latency (in ms; measured from onset of target)
reciprocalMeanRT
Its reciprocal (see Thoman et al, 2014, p.1020)
sdRT
Standard deviation of valid response latencies (measure of variability)
medianRT
Median valid response latency (in ms; measured from onset of target)
maxRT
The maximum valid response latency (in ms; measured from onset of target)
minRT
The minimum valid response latency (in ms; measured from onset of target)
meanRT500
Mean valid response latency of responses with latencies <= 500ms (in ms; measured from onset of target)
reciprocalMeanRT500
Its reciprocal (see Thoman et al, 2014, p.1020)
medianRT500
Median valid response latency of responses with latencies <= 500ms (in ms; measured from onset of target)
maxRT500
The maximum valid response latency of responses with latencies <= 500ms (in ms; measured from onset of target)
minRT500
The minimum valid response latency of responses with latencies <= 500ms (in ms; measured from onset of target)
tenthPercentile
In this script: the 10th percentile RT is taken as the value that sits at the 10%index (rounded to the nearest integer)
in the sorted RT list
Example: the sorted RT list (from slowest to fastest) contains 120 values
the 10th percentile would be the value sitting at index 12 (120*10%) of this sorted list
ninetiethPercentile
In this script: the 90th percentile RT is taken as the value that sits at the 90%index (rounded to the nearest integer)
in the sorted RT list
Example: the sorted RT list (from slowest to fastest) contains 120 values
the 90th percentile would be the value sitting at index 108 (120*90%) of this sorted list
rangeRT
The difference in ms betw. 10th percentile RT and 90th percentile RT
tenthPercentile500
In this script: the 10th percentile RT is taken as the value that sits at the 10%index (rounded to the nearest integer)
in the sorted RT list of valid latencies <= 500ms
ninetiethPercentile500
In this script: the 90th percentile RT is taken as the value value that sits at the 90%index (rounded to the nearest integer)
in the sorted RT list of valid latencies <= 500ms
rangeRT500
The difference in ms btw. 10th percentile RT and 90th percentile RT of valid latencies <= 500ms
numberOfLapses
Stores the total number of lapses (responses with latencies > 500ms) during the test block
transformedNumberOfLapses
NumberOfLapses transformed with (sqrt(numberOfLapses) + sqrt(numberOfLapses+1)) (see Thoman et al, 2014, p.1020)
meanLapseRT
The average lapse in ms (average ms above 500ms for lapses)
cumulativeLapseRT
The sum of all lapse times during the test block
countFalseStarts
Counts the number of false starts during the test block
falseRT
Ratio of
'number of times participant responded BEFORE target appeared' to
'the number of times participant responded AFTER target appeared'
this ratio is presented as a percentage.Raw Data
Data Fields
Name Description
build
Inquisit version number
computer.platform
Device platform: win | mac |ios | android
computer.touch
0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities
computer.hasKeyboard
0 = no external keyboard detected; 1 = external keyboard detected
date
Date the session was run
time
Time the session was run
subject
Participant ID
group
Group number
session
Session number
blockcode
The name the current block (built-in Inquisit variable)
blocknum
The number of the current block (built-in Inquisit variable)
trialcode
The name of the currently recorded trial (built-in Inquisit variable)
trialnum
The number of the currently recorded trial (built-in Inquisit variable)
trialnum is a built-in Inquisit variable; it counts all trials run
even those that do not store data to the data file.
Parameter Values For Lapsert And Isi
Parameters.Lapsert
Parameters.Minisi
Parameters.Maxisi
isi
The currently randomly selected interstimulus interval in ms (randomly sampled from 2-10s)
response
The participant's response (scancode of response button): 57 = spacebar press
responseCategory
"false start" (= response before target occurs) vs.
"no lapse" (= valid response with latency <= 500ms)
vs. "lapse" (= valid response with latency > 500ms)
vs. "lapse-overrun" (= valid response with latency >= parameters.)
clock.target.stimulusOnset
The onset time of the clock measured from onset of trial (in ms)
latency
The response latency (in ms); measured from onset of trial
rt
Stores the latency of the response measured from onset of target stim
(calculated as the difference btw. latency - clock.target.stimulusOnset)
countFalseStarts
Counts the number of times an invalid (early) response is made in the current block
Parameters
Name Description Default
minISI
Minimum isi (in ms) 2000
maxISI
Maximum isi (in ms) 10000
rtFeedbackDuration
The duration (in ms) of the RT feedback
!!! in this script the feedback Duration is NOT included in the ISI1000
lapseRT
Any valid response latency > lapseRT is considered a lapse 500
responseTimeoutDuration
The max. response time (in ms)
timed-out responses are considered 'lapsed-overrun' and valid
(see Basner & Dinges, 2011)30000
habituationDuration
The duration (in ms) of the habituation phase 60000
taskDuration
The duration (in ms) of the test phase 600000
falseStartFeedbackDuration
The duration (in ms) of the false Start warning/feedback 300
readyDuration
The duration (in ms) of the 'get Ready' trial 2000