User Manual: Inquisit Nasa Pointing Task


___________________________________________________________________________________________________________________	

								*Pointing Task*
								(optimized for the ipad)
___________________________________________________________________________________________________________________	

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 02-05-2022
last updated:  04-22-2022 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 04-22-2022 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
This script implements Millisecond Software's version of the NASA developed 'Pointing Task',
a measure of manual dexterity.

Researchers can select to run the task with an absolute screen size to ensure that distances
stay the same across devices. The default settings are optimized for ipad touchscreens.
See section Editable Parameters for more info.

References:
										
Bettina L. Beard (2020).
The Cognition and Fine Motor Skills Test Batteries: Normative Data and Interdependencies
Technical Memorandum (TM) 20205008023.
https://ntrs.nasa.gov/citations/20205008023	
Public Access

ipad App ('Fine Motor Skills'); free App from Apple App Store 
Note: the ipad App data/implementation may differ from the one collected by the Inquisit script

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________

description from Beard (2020):

"The Point test also measures manual dexterity. A ring of 16 squares is presented. The task is
to tap the highlighted square. The top square is always highlighted first. An arrow indicates if
the highlighted square will travel clockwise or counterclockwise around the ring. As soon as
the participant taps the highlighted square, it is de-emphasized and the square on the opposite
side of the ring is highlighted.Each block contained 18 trials."

___________________________________________________________________________________________________________________	
DURATION 
___________________________________________________________________________________________________________________	
the default set-up of this script takes appr. 7-8 minutes to complete

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

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

/*Parameter Settings*/																				
PointingMechanism:					"finger" vs. "stylus" 
PointingHand:						"dominant" vs. "nondominant" vs. "left" vs. "right"
runDiameter1:						true (1) or false (0)
runDiameter2:						true (1) or false (0)
runClockwise: 						true (1) of false (0)
runCounterClockwise: 				true (1) of false (0)					 
repetitions_percondition:			number of repetitions per condition 

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

display.canvasHeight:				the height of the active canvas ('playarea') on the current monitor in pixels
display.canvasWidth:				the width of the active canvas ('playarea') on the current monitor in pixels

px_per_mm:							the conversion factor to convert pixel data into mm-results for the current monitor
									(Note: the higher resolution of the current monitor 
									the more pixels cover the same absolute screen distance)	
									This factor is needed if you want to convert pixel data into absolute mm data									

playareaHeight_inmm:				the width of the play area in mm 
playareaWidth_inmm:					the height of the play area in mm 										
																				
circleDiameter1_inpx:				the circle1 diameter in canvas pixels 
circleDiameter1_inmm:				the circle1 diameter in mm size
circleDiameter2_inpx:				the circle2 diameter in canvas pixels 
circleDiameter2_inmm:				the circle2 diameter in mm size


//raw data: trial by trial
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.
									
conditionCounter:					counts the number of conditions run 
blockCounter:						counts the number of blocks run per condition									
																				
currentCondition:					1 = diameter1, clockwise; 2 = diameter1, counterclockwise;
									3 = diameter2, clockwise; 4 = diameter2, counterclockwise
									
conditionRepetition:				number of times the current condition has been presented									
																														
direction:							1 = clockwise; 2 = counterclockwise 
circleCondition:					1 = circle1 diameter; 2 = circle2 diameter 
circleDiameter_inpct:				the percentage height of the current circle diameter (relative to canvas height)

trialCount:							custom trialcounter (per block)
									Note: a trial ends with the lift-up movement of the current target box
									and a new trial is initiated right away.
									A trial in this implimentation can span several responses
									that will be noted in the data file.
									
box:								the number of the current target box (1-16)
									note: the top box is number 12 and numbering continues clockwise
									
respStatus:							down = first touch down on target box
									down-corrected = touch down on target box after a previous error down response
									down-outside = an error touch down somewhere outside the boxes
									down-wrg-box,X = an error touch down on an incorrect box (X = box number)
									up-inside = an up response from inside the target box (this response ends a trial)
									up-outside = an up response from an error location

//custom accuracy measure									
ACC:								1 = the current up response is from within target box; 
									0 = any other response 

//custom Latency Measures:
RespRT_ms:							the time (in ms) that passed from last response to current one
									Note: the first down response in a block will be at 0 because 
									there is no other previous response

SumRespRT_ms:						the continuous sum of all RespRT_ms

trialRT_ms:							the duration (in ms) of the trial; measured from start of trial until 
									the correct up-response from the target box
									Note: the first trial in a block starts with the first down response,
									thus trialRT_ms of the first trial (trialCount = 1) is likely shorter and is
									NOT considered for summary statistics.

//Coordinate Measures
mouse.x:							the x coordinate of the finger at the time of the currently measured response
mouse.y:							the y coordinate of the finger at the time of the currently measured response 

targetbox_x_inpx:					the x-coordinate of the current target box center  
targetbox_y_inpx:					the y-coordinate of the current target box center

error_x_inpx:						the difference btw. (targetbox_x_inpx - mouse.x) 
									positive = finger touched down to the left of target box center; 
									negative = finger touched down to the right of target box center;

error_y_inpx:						the difference btw. (targetbox_y_inpx - mouse.y) 
									positive = finger touched down above the target box center; 
									negative = finger touched down below target box center;
																		
error_inpx:							the pixels by which the ERROR DOWN-response missed the target box
									=> IF (leftborder of targetbox <= error_x_inpx <= rightborder of targetbox) => error_y_inpx represent the missed pixels (basically going straight up or down would have hit the box)
									=> IF (topborder of targetbox <= error_y_inpx <= bottomborder of targetbox) => error_x_inpx represent the missed pixels (basically going straight left or right would have hit the box)
									=> in any other case, the hypothenuse of sqrt = [pow(error_x_inpx,2) + pow(error_y_inpx,2)] represents the missed pixels
																		
errordistance_fingertarget_inpx: 	measured for each ERROR DOWN-response
									the pixel distance from the touch response to the CENTER of the target box

targetDistance_inpx:				the ideal pixel distance from center of previous box to target box
actualDistance_inpx:				the actual pixel distance from center of previous box at FIRST touchdown

downResponseCount:					counts the number of down responses made during the current trial 
upResponseCount:					counts the number of up responses made during the current trial	
									Note: only the up-response from within the target box ends a trial
									(see 'respStatus'), up until then participant can make many down and
									up responses
										
//Inquisit built-in variables
response:							the response of participant (scancode of response button)
									'lbuttondown' => touchdown
									'lbuttonup' => lift-up response

correct:							correctness of response
									1 = participant lifts finger off the target box
									0 = any other response

latency:							continuous trial latency (in ms); measured from: onset of blue box 
									until lift-off response from target box (= trial end)
									Note: the last up-response in a trial shows the complete trial duration in ms
									

(2) Summary data file: 'pointingtask_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)

/*Parameter Settings*/										
PointingMechanism:					"finger" vs. "stylus" 
PointingHand:						"dominant" vs. "nondominant" vs. "left" vs. "right"
runDiameter1:						true (1) or false (0)
runDiameter2:						true (1) or false (0)
runClockwise: 						true (1) of false (0)
runCounterClockwise: 				true (1) of false (0)					 
repetitions_percondition:			number of repetitions per condition 

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

display.canvasHeight:				the height of the active canvas ('playarea') on the current monitor in pixels
display.canvasWidth:				the width of the active canvas ('playarea') on the current monitor in pixels

px_per_mm:							the conversion factor to convert pixel data into mm-results for the current monitor
									(Note: the higher resolution of the current monitor 
									the more pixels cover the same absolute screen distance)
									This factor is needed if you want to convert pixel data into absolute mm data									

/playareaHeight_inmm:				the width of the play area in mm 
/playareaWidth_inmm:				the height of the play area in mm 										
																				
circleDiameter1_inpx:				the circle1 diameter in canvas pixels 
circleDiameter1_inmm:				the circle1 diameter in mm size
circleDiameter2_inpx:				the circle2 diameter in canvas pixels 
circleDiameter2_inmm:				the circle2 diameter in mm size

//Latency Data//
//Note: the first trial in a block is excluded from summary variables
//as the trial duration starts with first down response (all other trials start after the last up response)

//across clockwise and counterclockwise direction, by radius1 and radius2
medianRT_r1: 			median RT (in ms) for radius1 condition trials

z_RT_r1: 				z-score of medianRT_r1 using norming data from Beard (2020, p.22) for fingers only
						Notes: see Beard (2020, Appendix F, p.67/68) for a complete overview of their results
						For the pointing task:
						1. it didn't seem to matter whether to run 1 or 2 repetitions
						2. it didn't seem to matter whether to use fingers or stylus
						3. it didn't seem to matter whether to use the long version or the short version
						4. the radius of the circle mattered => this z-score computation assumes that the boxes 
						were approx. 2 cm (Millisecond's assumption. Beard (2020) refers to 'in' - however
						a circle with boxes 2 inches apart from each other wouldn't fit on an ipad) away from each other
						Norming sample described in Beard (2020, p.8)
						Keep in mind: The norming sample may not be the appropriate comparison group for your participants 
						and/or study design

p_RT_r1:				percentile of z_RT_r1
						!The norming sample may not be the appropriate comparison group for your participants 
						and/or study design!

medianRT_r2: 			median RT (in ms) for radius2 condition trials

z_RT_r2: 				z-score of medianRT_r2 using norming data from Beard (2020, p.22) for fingers only
						Notes: see Beard (2020, Appendix F, p.67/68) for a complete overview of their results
						For the pointing task:
						1. it didn't seem to matter whether to run 1 or 2 repetitions
						2. it didn't seem to matter whether to use fingers or stylus
						3. it didn't seem to matter whether to use the long version or the short version
						4. the radius of the circle mattered => this z-score computation assumes that the boxes were 
						approx. 1.5 cm (Millisecond's assumption. Beard (2020) refers to 'in' - however
						a circle with boxes 1.5 inches apart from each other wouldn't fit on an ipad) away from each other
						Norming sample described in Beard (2020, p.8)
						Keep in mind: The norming sample may not be the appropriate comparison group for your participants 
						and/or study design
						
p_RT_r2:				percentile of z_RT_r2
						!The norming sample may not be the appropriate comparison group for your participants and/or study design!


//by direction:
medianRT_1_c:			median RT (in ms) in clockwise, circle1 condition across all blocks for radius 1 condition
medianRT_1_cc:			median RT (in ms) in counterclockwise, circle1 condition across all blocks for radius 1 condition
medianRT_2_c:			median RT (in ms) in clockwise, circle2 condition across all blocks for radius 2 condition
medianRT_2_cc:			median RT (in ms) in counterclockwise, circle2 condition across all blocks for radius 2 condition
*median RT = median time (in ms) it took for participant to successfully complete a trial 
(=successful up response from target box)

//Error Data//
//across clockwise and counterclockwise direction:
median_pixelError_r1:		median pixel errors in circle1 condition
median_pixelError_r2:		median pixel errors in circle2 condition
(see 'error_inpx' - under raw data- for explanation of how each pixel error was computed in this script.
Because this computation might be different from Beard (2022), the norming data on p.23 was not
used in this script)
 
//Pixel Error Data
median_pixelError_1_c:		median pixel errors in clockwise, circle1 condition across all blocks
median_pixelError_1_cc:		median pixel errors in counterclockwise, circle1 condition across all blocks
median_pixelError_2_c:		median pixel errors in clockwise, circle2 condition across all blocks
median_pixelError_2_cc:		median pixel errors in counterclockwise, circle2 condition across all blocks
									
___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	

By default, this script runs 4 different conditions with 1 repetition per condition:
2 circle radii x 2 directions (clockwise vs. counterclockwise) x 1 reps
The order of the resulting 4 conditions is selected at random.
Each condition runs 5 blocks of 18 trials each (20 blocks total), followed by a self-paced break.
By default, participants receive optional performance feedback at script conclusion.

Check section 'Editable Parameters' for parameters that control
- circle diameter conditions to run
- rotation (clockwise, counterclockwise) conditions to run
- block/trial/repetition numbers
- performance feedback settings
- automated task demo

You can easily customize the experimental design by changing them.
___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________

provided by Millisecond Software - can be edited under section 'Editable Stimuli'
___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________

provided by Millisecond Software - can be edited under section 'Editable Instructions'.
The instructions are based on Beard (2020, p.58 - Appendix D)
___________________________________________________________________________________________________________________	
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: