Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: June 07, 2017
Last Modified: July 01, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements the Psychomotor Vigilance Test-Brief (PVT-B), a basic simple response time test based on the classic Psychomotor Vigilance Test (PVT) The implemented procedure is based on Basner et al (2011).
The PVT-B shortens the PVT from 10 to 3 minutes.
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
4 minutes
Participants are instructed to press the Procedure
1. Habituation Phase: ~10S (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.
the Habituation Phase can be skipped or its duration adjusted (see parameters settings)
2. Test Phase: ~3 Min (Block Is Terminated After The Last Trial Cycle Within The Designated Timeframe)
Trial Sequence:
ISI (randomly selected from 0-3s)-> 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.
target stimulus is a red stopwatch counter (counts in milliseconds)
provided by Millisecond - can be edited
in script "psychomotorvigilancetest_instructions_inc.iqjs"
File Name: psychomotorvigilancetest_summary*.iqdat
| 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) |
| meanRT355 | Mean valid response latency of responses with latencies <= 355ms (in ms; measured from onset of target) |
| reciprocalMeanRT355 | Its reciprocal (see Thoman et al, 2014, p.1020) |
| medianRT355 | Median valid response latency of responses with latencies <= 355ms (in ms; measured from onset of target) |
| maxRT355 | The maximum valid response latency of responses with latencies <= 355ms (in ms; measured from onset of target) |
| minRT355 | The minimum valid response latency of responses with latencies <= 355ms (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 |
| tenthPercentile355 | 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 <= 355ms |
| ninetiethPercentile355 | 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 <= 355ms |
| rangeRT355 | The difference in ms btw. 10th percentile RT and 90th percentile RT of valid latencies <= 355ms |
| numberOfLapses | Stores the total number of lapses (responses with latencies > 355ms) 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 355ms 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. |
File Name: psychomotorvigilancetest_raw*.iqdat
| 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 |
|
| 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 <= 355ms) vs. "lapse" (= valid response with latency > 355ms) 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 |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design Parameters |
||
| skipHabituationPeriod | True: no habituation/familiarization period, the testing period starts right away false: the habituation/familiarization period is run (duration see below) | false |
Timing Parameters |
||
| minISI | Minimum isi (in ms) | 0 |
| maxISI | Maximum isi (in ms) | 4000 |
| 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 lapse in the PVT-B | 355 |
| 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 (10sec) | 10000 |
| taskDuration | The duration (in ms) of the test phase | 180000 |
| falseStartFeedbackDuration | The duration (in ms) of the false Start warning/feedback | 300 |
| readyDuration | The duration (in ms) of the 'get Ready' trial | 2000 |