Psychomotor Vigilance Test

Technical Manual

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

Created: January 07, 2017

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

Script Copyright © Millisecond Software, LLC

Background

This script implements a Psychomotor Vigilance Test, a basic simple response time test.

The implemented procedure is based on: 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

Duration

12 minutes

Description

Participants are instructed to press the as fast as possible after a red stopwatch appears on screen. A valid response (response occurs after stopwatch appears) is followed by reaction time feedback. An invalid response (response occurs before stopwatch appears) is followed by a brief error message.

Procedure

1. Habituation Phase: ~1 min (Block is terminated after the last trial cycle within the designated timeframe)
- 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

target stimulus is a red stopwatch counter (counts in milliseconds)

Instructions

provided by Millisecond - can be edited
in script "psychomotorvigilancetest_instructions_inc.iqjs"

Summary Data

File Name: psychomotorvigilancetest_summary*.iqdat

Data Fields

NameDescription
inquisit.version Inquisit version number
computer.platform Device platform: win | mac |ios | android
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)
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

File Name: psychomotorvigilancetest_raw*.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 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

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
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 ISI
1000
lapseRT Any valid response latency > lapseRT is considered a lapse500
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