User Manual: Inquisit Useful Field of View Test (UFOV)


___________________________________________________________________________________________________________________	

										USEFUL FIELD OF VIEW TEST (UFOV)
___________________________________________________________________________________________________________________	

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 11-28-2019
last updated:  12-02-2022 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 12-02-2022 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________	
This script implements a Millisecond Software's computerized version of the Useful Field of View Test (UFOV), 
a measure of processing speed and attention that is said to predict driving performance in older adults.

This script can be run with absolute screen/stimuli sizing. The default version of this script is sized 
for ipads IF the screen is large enough.  If the screen is not large enough, the script attempts to find 
the biggest 4:3 area of the screen and notes in the data file the dimensions of the presented canvas.  
Check section Editable Parameters for more info on this topic. 
Note that the screen sizes need to be set larger to run the suggested sizes by Edwards et al (2005)
(more info under section Editable Parameters)


References:

Ball, K., Beard, B., Roenker, D., Miller, R., & Griggs, D. (1988). Age and visual search: 
Expanding the useful field of view.  
Journal of the Optical Society of America. A, Optics and Image Science, 5(12), 2210-9.

Edwards, J. D., Vance, D. E., Wadley, V. G., Cissell, G. M., Roenker, D. L., & Ball, K. K. (2005). 
Reliability and validity of useful field of view test scores as administered by personal computer. 
Journal of Clinical and Experimental Neuropsychology, 27, 529–543.

UFOV Manual Version 6.1.4 (revised 6/09)

UFOV Assessment Manual: https://www.visualawareness.com/wp-content/uploads/2019/04/UFOV-Assessment-Manual.pdf
(version 6.20.2018)

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________	

This tests runs a Useful Field of View Procedure.
The test consists of 3 subtests:

Subtest1: Processing Speed 
This 2 forced-choice task estimates the processing threshold for the presentation of stimuli 
in the center of the screen.
Participants are asked: "what object was located in the center?"

Subtest2: Divided Attention
This choice task estimates the processing threshold for the presentation of stimuli in the center of the screen
while also having to pay attention to the location of a peripheral stimulus.
Task1: which object was presented in the center?
Task2: where was the peripheral object located?

Subtest3: Selective Attention
This choice task is similar to subtest2 but 'hides' the peripheral object within 47 distractor triangles.
This choice task estimates the processing threshold for the presentation of stimuli in the center of the screen
while also having to pay attention to the location of a peripheral stimulus that is hidden amongst distractor items.
Task1: which object was presented in the center?
Task2: where was the peripheral object located?

Note: the implemented procedure assumes a monitor refreshrate of 60 Hz

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

___________________________________________________________________________________________________________________	
DATA FILE INFORMATION 
___________________________________________________________________________________________________________________		
The default data stored in the data files are:

(1) Raw data file: 'usefulfieldofview_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. 

//Screen Setup:										
display.refreshrate:			the refreshrate of the current monitor (Note: default timings are based on a 60Hz refreshrate) 
display.refreshinterval:		the ms a frame is presented before it is refreshed (Note: for a 60Hz monitor, the refreshinterval is 16.67ms)

(parameter) runAbsoluteSizes:	true (1) = should run absolutely sized canvas (see parameters- canvasHeight_inmm)
								false (0) = should use proportionally sized canvas (uses width = 4/3*screenHeight)
								
canvasAdjustments:				NA: not applicable => parameters- runAbsoluteSize was set to 'false'
								0: parameters- runAbsoluteSize was set to 'true' and screen size was large enough
								1: parameters- runAbsoluteSize was set to 'true' BUT screen size was too small and 
								adjustments had to be made

activeCanvasHeight_inmm:		the width of the active canvas in mm 
activeCanvasWidth_inmm:			the height of the active canvas in mm 
display.canvasHeight:			the height of the active canvas in pixels
display.canvasWidth:			the width of the active canvas in pixels				

				
circleRadius_percent:			the radius of the circle (in canvas height percent) around the center used on the current monitor (= distance from peripheral stimulus to center)
stimImageSize_percent:			the image size of the car/truck stimuli (in canvas height percent) used on the current monitor
fixationBoxSize_percent:		the image size of fixation box (in canvas height percent) used on the current monitor


trialCount:						block trial counter
										
centerStim:						1 = car
								2 = truck
										
peripheralPosition:				1-8 (position of '1' is at 12 0'clock; positioning clockwise)

targetFrames:					the current frame number with which the staircase stimuli are presented 
staircase_currentDirection:		"down" or "up" 

response:						stores the response of the current trial
									center Stim trials: "car" vs. "truck" (the center stim selected by participant)
									peripheral position trials: "number1" - "number8" (the peripheral position selected by participant) 

correct:						1 = current response was evaluated to be correct
								0 = current response was evaluated to be incorrect
										
finalCorrect:					subtest1: 1 = correct center stim was selected; 0 = otherwise
								subtest2/3: 1 = correct center stim AND correct peripheral position was selected; 0 = otherwise
										
latency:						the response latency in ms (measured from onset of response buttons)
 
reversal:						1 = the current response indicates a reversal of the direction of the staircase
								0 = the current response does not indicate a reversal of the direction of the staircase
										
stopProcedure:					1 = staircase will stop running; 0 = staircase has not reached stop criterium yet  

threshold:						the estimated stimulus duration (in ms) threshold 
								(in most cases: mean of all collected thresholds by staircase) 

list.reversalPoints.itemCount:	stores the number of reversal points collected by staircase procedure

targetOnset_inms:				stores the timing of the centerStim onset in ms 
maskOnset_inms:					stores the timing of the mask onset in ms 
maskOffset_inms:				stores the timing of the mask offset in ms	(= onset of response buttons)	

count_consecutiveMaxFrames:		counts the number of frames that run the maxium frames (500ms) 
count_consecutiveMinFrames:		counts the number of frames that run the minimum frames (500ms) 								


(2) Summary data file: 'usefulfieldofview_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)
								
//Screen Setup:										
display.refreshrate:			the refreshrate of the current monitor (Note: default timings are based on a 60Hz refreshrate) 
display.refreshinterval:		the ms a frame is presented before it is refreshed (Note: for a 60Hz monitor, the refreshinterval is 16.67ms)

(parameter) runAbsoluteSizes:	true (1) = should run absolutely sized canvas (see parameters- canvasHeight_inmm)
								false (0) = should use proportionally sized canvas (uses width = 4/3*screenHeight)
								
canvasAdjustments:				NA: not applicable => parameters- runAbsoluteSize was set to 'false'
								0: parameters- runAbsoluteSize was set to 'true' and screen size was large enough
								1: parameters- runAbsoluteSize was set to 'true' BUT screen size was too small and 
								adjustments had to be made

activeCanvasHeight_inmm:		the width of the active canvas in mm 
activeCanvasWidth_inmm:			the height of the active canvas in mm 
display.canvasHeight:			the height of the active canvas in pixels
display.canvasWidth:			the width of the active canvas in pixels				

circleRadius_percent:			the radius of the circle (in canvas height percent) around the center used on the current monitor (= distance from peripheral stimulus to center)
stimImageSize_percent:			the image size of the car/truck stimuli (in canvas height percent) used on the current monitor
fixationBoxSize_percent:		the image size of fixation box (in canvas height percent) used on the current monitor

///Practice Performance:
practicePropCorrect_subtest1:	proportion correct of the last 4 practice trials for subtest1
practiceTrialCount_subtest1:	number of practice trials run for subtest1 (4-16)
practicePropCorrect_subtest2:	proportion correct of the last 4 practice trials for subtest2
practiceTrialCount_subtest2:	number of practice trials run for subtest2 (4-16)
practicePropCorrect_subtest3:	proportion correct of the last 4 practice trials for subtest3
practiceTrialCount_subtest3:	number of practice trials run for subtest3 (4-16)

///Test Performance:
subtest1_threshold: 			the estimated intensity thresholds (in ms) of subtest1
subtest2_threshold: 			the estimated intensity thresholds (in ms) of subtest2 
subtest3_threshold: 			the estimated intensity thresholds (in ms) of subtest3								
								

* 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 
___________________________________________________________________________________________________________________

(I) SubsetSelection Screen: optional (see setting of parameters.showSubtestSelectionScreen); 
by default it does not run

The subsetSelection screen provides test administrators access to select individual subtests to run.

(II) Subtest 1:
Main Task: Central stimulus: car or truck? 

(A) Practice: max 16 trials
- the duration of the center stimulus is: 20 frames (on a 60Hz monitor: ~333ms)
- after 20 frames the center stimulus is erased by a mask for 500ms
- two response buttons provided: a truck (on the left) vs. a car (on the right)
- no accuracy feedback provided
- every 4 trials, accuracy is checked: if performance is 3/4 correct or higher,
the test will begin. Otherwise another round of 4 practice trials is started until all
16 trials have run. The test will start after 16 trials regardless of final practice
performance.

(B) Test: variable trial number
- duration of stimulus presentation is 17ms - 500ms
- the (75%) threshold is estimated using an adaptive staircase procedure (see below for more details)
- no accuracy feedback


(III) Subtest 2: (Note: subtest 2 is only run if subtest 1 yielded a threshold lower than the maximum duration of 500ms)

Main Task: central stimulus check + peripheral stimulus on 8 possible radials 
(Note: the distance btw. peripheral stimulus and center is fixed)
- what was the center stimulus?
- on which radial was the peripheral stimulus (always a car) located?

(A) Practice: max 16 trials
- the duration of the center stimulus is: 20 frames (on a 60Hz monitor: ~333ms)
- after 20 frames the center stimulus is erased by a mask for 500ms
- two response buttons provided: a truck (on the left) vs. a car (on the right)
- no accuracy feedback provided
- every 4 trials, accuracy is checked: if performance is 3/4 = 0.75correct or higher,
the test will begin. Otherwise another round of 4 practice trials is started until all
16 trials have run. The test will start after 16 trials regardless of final practice
performance.
Note: correct performance = getting the center stimulus correct AND getting the radial correct on which
the peripheral stimulus was located

(B) Test: variable trial number
- duration of stimulus presentation is 17ms - 500ms
- the (75%) threshold is estimated using an adaptive staircase procedure (see below for more details)
- no accuracy feedback


(IV) Subtest 3: (Note: subtest 3 is only run if subtest 1/2 yielded a threshold lower than the maximum duration of 500ms)

Main Task: central stimulus check + peripheral stimulus on 8 possible radials. Peripheral
stimulus is 'hidden' amongst 47 distractor triangles. 
(Note: the distance btw, peripheral stimulus and center is fixed)
- what was the center stimulus?
- on which radial was the peripheral stimulus (always a car) located?

(A) Practice: max 16 trials
- the duration of the center stimulus is: 20 frames (on a 60Hz monitor: ~333ms)
- after 20 frames the center stimulus is erased by a mask for 500ms
- two response buttons provided: a truck (on the left) vs. a car (on the right)
- no accuracy feedback provided
- every 4 trials, accuracy is checked: if performance is 3/4 = 0.75correct or higher,
the test will begin. Otherwise another round of 4 practice trials is started until all
16 trials have run. The test will start after 16 trials regardless of final practice
performance.
Note: correct performance = getting the center stimulus correct AND getting the radial correct on which
the peripheral stimulus was located

(B) Test: variable trial number
- duration of stimulus presentation is 17ms - 500ms
- the (75%) threshold is estimated using an adaptive staircase procedure (see below for more details)
- no accuracy feedback


/////Implemented Staircase procedure in this script: best guess effort by Millisecond Software

This script uses an adaptive staircase procedure (see UFOV Assessment Manual - June 20, 2018, p.10) 
to estimate the threshold for each of the three subtests.
The stepsize adjustment procedure implemented in this script follows the description of the UFOV Manual (June 20, 2018)
and fills in missing information as best as possible.
Edwards et al (2005) describes the purpose of the UFOV staircase procedure to find 
the intensity threshold at which participants are 75% correct.

/////Adaptive Staircase Procedure:

Per UFOV Manual (June 20, 2018, p.10):
- the starting stepsize is 3 frames (50ms on a 60Hz monitor)
- after the first incorrect response (excluding the first response), the stepsize is reduced to 1 frame (16.67 ms on a 60 Hz monitor)
- 3 correct responses at the fastest presentation rate or 3 incorrect responses at 
the slowest presentation rate (for the slowest: if more than 10 trials were run) will stop the procedure


/////Starting Frames for Staircase: (Note: best guess effort by Millisecond Software)

Subtest1: 
staircase ('down') starts at 20 frames (on a 60Hz monitor: ~333ms) unless practice performance < 75% after 16 trials. 
In that case, staircase starts at 25 frames (on a 60Hz monitor: ~417ms)

Note:
From UFOV Manual Version 6.1.4 (p.8):
"Failure to adequately perform the Subtest after 16 practice trials indicates that the examinee's threshold is 
above the practice level and will be measured by UFOV."

Subtest2:
staircase ('down') increases the subtest1 threshold by 5 frames (on a 60Hz monitor: ~84ms)
Note: 
* if max/min frames are hit => use max/min frames
* if no subtest1 threshold were determined, use parameters.downward_startingFrames

Subtest3:
staircase ('down') increases the subtest3 threshold by 5 frames (on a 60Hz monitor: ~84ms)
Note: 
* if max/min frames are hit => use max/min frames
* if no subtest2 threshold were determined, use parameters.downward_startingFrames


Threshold Estimation IN THIS SCRIPT (best guess effort by Millisecond Software):
The staircase collects 9 (default) reversal points (reversal point = change of staircase direction).
The mean of these 9 reversals points is calculated in ms and used as the final threshold.

Note: a quality/validity check of the three thresholds at the end of the script checks that 
the thresholds increase from subtest to subtest (as they increase in difficulty).
If the threshold of a more difficult subtest is lower than the one from an easier one,
the lower threshold is assigned to the easier level as well.
(see UFOV Assessment Manual - June 20, 2018, p.6) 

___________________________________________________________________________________________________________________
STIMULI
___________________________________________________________________________________________________________________
truck/car/triangle/mask example stimuli are provided by Millisecond Software.
These are just demo stimuli - Replace with your own under section Editable Stimuli

Stimuli Sizing:
The distance btw. peripheral stimulus and center of monitor as well as the size of the fixation box
and car/truck stimuli are proportionally sized (proportional to canvasheight) in this script.
By setting an absolute canvassize under section Defaults, the stimuli can be absolutely sized across monitors.
Go to section Defaults for an example.

Edwards et al (2005):
* distance btw. center and peripheral stimulus ~ 11cm
* fixation box ~ 3cm x 3cm
*car/truck ~ 1.5cm * 2cm (Note: in this script parameters.stimImageSize_percent = 2cm is used to size the image 
size of the car/truck)

Participants are instructed to sit ~60cm from the screen (Edwards et al, 2005)
PC use a 15 inch viewing area (Edwards et al, 2005)

___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________	

The instructions are provided by Millisecond Software and based on the ones provided 
in the UFOV Manual Version 6.1.4.
They 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: