User Manual: Inquisit Psychomotor Vigilance Test


___________________________________________________________________________________________________________________	

										*PSYCHOMOTOR VIGILANCE TEST*
___________________________________________________________________________________________________________________	


Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 06-07-2017
last updated:  08-13-2024 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 08-13-2024 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________	
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

___________________________________________________________________________________________________________________
TASK DESCRIPTION
___________________________________________________________________________________________________________________	

Participants are instructed to press the <Spacebar> 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.

___________________________________________________________________________________________________________________	
DURATION 
___________________________________________________________________________________________________________________	
the default set-up of the script takes appr. 12 minutes to complete

___________________________________________________________________________________________________________________	
DATA OUTPUT DICTIONARY
___________________________________________________________________________________________________________________	
The fields in the data files are:

(1) Raw data file: 'psychomotorvigilancetest_raw*.iqdat' (a separate file for each participant)*

build:							The specific Inquisit version used (the 'build') that was run
computer.platform:				the platform the script was run on (win/mac/ios/android)
date, time: 					date and time script was run 
subject, group: 				with the current subject/groupnumber
session:						with the current session id

blockCode, blockNum:			the name and number of the current block (built-in Inquisit variable)
trialCode, trialNum: 			the name and number of the currently recorded trial (built-in Inquisit variable)
									Note: trialNum is a built-in Inquisit variable; it counts all trials run; even those
									that do not store data to the data file such as feedback trials. Thus, trialNum 
									may not reflect the number of main trials run per block.
									
//parameter settings 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


(2) Summary data file: 'psychomotorvigilancetest_summary*.iqdat' (a separate file for each participant)*

inquisit.version:				Inquisit version run
computer.platform:				the platform the script was run on (win/mac/ios/android)
startDate:						date script was run
startTime:						time script was started
subjectId:						assigned subject id number
groupId:						assigned group id number
sessionId:						assigned session id number
elapsedTime:					time it took to run script (in ms); measured from onset to offset of script
completed:						0 = script was not completed (prematurely aborted); 
								1 = script was completed (all conditions run)

///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.
								
* separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section
"DATA" and follow further instructions

___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	

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
Note: 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)

Note: 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 Software - can be edited under section Editable Instructions

___________________________________________________________________________________________________________________	
EDITABLE CODE 
___________________________________________________________________________________________________________________	
check below for (relatively) easily editable parameters, stimuli, instructions etc. 
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment.

The parameters you can change are: