User Manual: Inquisit Apples Test


___________________________________________________________________________________________________________________	

												Apples Test
___________________________________________________________________________________________________________________	


Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 02-01-2023
last updated:  03-29-2023 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 03-29-2023 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
This script implements Millisecond Software's computerized version of the Apples test (Bickerton et al, 2011), 
a test for visual neglect and search strategy.

Mancuso et al (2015) discuss four measures (ExecutionTime in seconds, Accuracy Score, left-right Asymmetry Score
for targets, and  Commission Asymmetry Score for left-open vs. right-open apples) that depend on age and 
level of schooling to varying degrees.

This script provides the functionality to present the 'apples page' in roughly the same absolute size as the
original paper&pencil version of the Apples Test 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 to present the 'stimuli page' and 
notes in the data file the dimensions of the presented 'stimuli page'. 
Current default sizes of the script are targeted towards ipad sizes (smaller than the original paper version). 
Check section Editable Parameters for more info on this topic.

Data Files will contain the suggested measures by Bickerton et al (2011)/Mancuso et al (2015) as well as 
additional information about the 'response path' (search path) taken to find the Apple targets. 
Screenshots of the taken path/numbered targets can be taken (optional setting) for further analyses. 

DISCLAIMER
Millisecond Software advises caution in comparing results obtained with this computerized version 
of the Apples Test to results obtained with the original paper&pencil version.


****References*****

Bickerton WL, Samson D et al (2011) Separating forms of neglect
using the Apples test: validation and functional prediction in chronic
and acute stroke. Neuropsychology 25(5):567											
https://doi.org/10.1037/a0023501

Mancuso, M., Rosadoni, S., Capitani, D., Bickerton, W. L., Humphreys, G. W., De Tanti, A., 
Zampolini, M., Galardi, G., Caputo, M., De Pellegrin, S., Angelini, A., Bartalini, B., 
Bartolo, M., Carboncini, M. C., Gemignani, P., Spaccavento, S., Cantagallo, A., 
Zoccolotti, P., & Antonucci, G. (2015). Italian standardization of the Apples Cancellation Test. 
Neurological Sciences, 36(7), 1233–1240. 
https://doi.org/10.1007/s10072-015-2088-2

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________

Participants are asked to select as many full apples as they can find on a page of 150 items that displays
50 full apples, 50 apples that have a piece missing on the left side, and 50 apples that have a piece
missing on the right side.
By default, participants have 5 minutes to complete the task.

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

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

(1) Raw data file: 'applestest_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:					with the current subject id
group: 						with the current group id
session:					with the current session id

age:						the age (in years) of the participant (if empty, no demographic information was collected)
education:					number of years in formal schooling (max: 16) (if empty, no demographic information was collected)

//Screen Setup:
(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
stimuliPageWidth_inmm:				the width of the stimuli page in mm 
stimuliPageHeight_inmm:				the height of the stimuli page in mm

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. 
								
response:					the response of participant (the name of the response area)						
latency:					response latency (in ms); measured from: onset of trial
								

practiceBlockCounter:		number of times the practice was run 
practiceFeedback:			the practice feedback at the end of the practice block
							1 = all correct
							2 = try again
							3 = thank you (premature termination of script; practice was unsuccessful twice in a row)
								
responseCounter: 			counts the number of responses (excluding 'submit' response)

target: 					1 = the current response was a target (full apple)
							0 = the current response was not on a target response circle
							
foil: 						1 = the current response was a foil (apple with missing piece)
							0 = the current response was not on a foil response circle							
							
																				
targetCounter: 				counts the number of times a response was registered on a new target (Max: 50)
							(repeatedly selecting the same target does not increase the count)
							
targetCounter_c1r1: 		counts the number of times a response was registered on a new target in column1,row1 (Max: 5)
targetCounter_c1r2: 		counts the number of times a response was registered on a new target in column1,row2 (Max: 5)
targetCounter_c2r1: 		counts the number of times a response was registered on a new target in column2,row1 (Max: 5)
targetCounter_c2r2: 		counts the number of times a response was registered on a new target in column2,row2 (Max: 5)
targetCounter_c3r1: 		counts the number of times a response was registered on a new target in column3,row1 (Max: 5)
targetCounter_c3r2: 		counts the number of times a response was registered on a new target in column3,row2 (Max: 5)
targetCounter_c4r1: 		counts the number of times a response was registered on a new target in column4,row1 (Max: 5)
targetCounter_c4r2: 		counts the number of times a response was registered on a new target in column4,row2 (Max: 5)
targetCounter_c5r1: 		counts the number of times a response was registered on a new target in column5,row1 (Max: 5)
targetCounter_c5r2: 		counts the number of times a response was registered on a new target in column5,row2 (Max: 5)

foilCounter:				counts the number of times a response was registered on a new foil (Max: 100)
							(repeatedly selecting the same foil does not increase the count)
							
foilCounter_c1_l:			counts the number of times a response was registered on a new LEFT-open foil in column1 (10)	
foilCounter_c1_r:			counts the number of times a response was registered on a new RIGHT-open foil in column1 (10)	
foilCounter_c2_l:			counts the number of times a response was registered on a new LEFT-open foil in column2 (10)	
foilCounter_c2_r:			counts the number of times a response was registered on a new RIGHT-open foil in column2 (10)
foilCounter_c3_l:			counts the number of times a response was registered on a new LEFT-open foil in column3 (10)	
foilCounter_c3_r:			counts the number of times a response was registered on a new RIGHT-open foil in column3 (10)
foilCounter_c4_l:			counts the number of times a response was registered on a new LEFT-open foil in column4 (10)	
foilCounter_c4_r:			counts the number of times a response was registered on a new RIGHT-open foil in column4 (10)
foilCounter_c5_l:			counts the number of times a response was registered on a new LEFT-open foil in column5 (10)	
foilCounter_c5_r:			counts the number of times a response was registered on a new RIGHT-open foil in column5 (10)

otherRespCounter:			counts the number of times a response was registered that was not made on one of 
							the target NOR foil response circles
							Note: some other responses might simply be a missed target response circle
							
							//Note: under each target (apple) as well as foil lies a response circle with a 
							//parameters.responseCircleSize_inpct, if response is registered outside
							//of these responsecircles, the script counts it as an 'other' response.
							//In some cases, these 'other' responses may simply be inaccurate screen
							//responding. Check screenshots of response path if in doubt.

//response Coordinates
path_x: 					a variable that stores the horizontal coordinates of the response in canvas percentages in sequential order
path_y: 					a variable that stores the vertical coordinates of the response in canvas percentages in sequential order
targets:					a variable that stores whether the responses were on a target (1) or elsewhere (0)in sequential order 
							Note: these values can be used in script applestest_path.iqx to visualize the path taken


(2) Summary data file: 'applestest_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)
														
age:						the age (in years) of the participant (if empty, no demographic information was collected)
education:					number of years in formal schooling (max: 16) (if empty, no demographic information was collected)
											
//Screen Setup:
(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
stimuliPageWidth_inmm:				the width of the stimuli page in mm 
stimuliPageHeight_inmm:				the height of the stimuli page in mm					


/////////general DVs:
//suggested by Mancuso M et al (2015)

ExecutionTime_insec:			apple search time in seconds

expectedExecutionTime_insec:	the execution time (in sec) that can be expected given the participant's age
								and education (Note: Inquisit uses 16 years of education as the maximum)
								calculated using the formula suggested by Mancuso et al (2015)
								NA: no demographic information available (values could not be generated)
								
maximumExecutionTime_insec:		the cut-off execution time (in sec)
								if participant takes longer than this, the performance can be coded
								as 'pathological' according to Mancuso et al (2015)
								NA: no demographic information available (values could not be generated)							
								
ExecutionTimeFlag:				1 = the ExecutionTime_insec surpassed the cutoff (maximumExecutationTime_insec) 								
								0 = the ExecutionTime_insec did NOT surpass the cutoff	
								NA: no demographic information available (values could not be generated)
															
AccuracyScore:					number of correctly identified apples ('Measure of Selective Attention')
								Range: 0-50
								Mancuso et al (2015): a performance showing 6 or more (left and right) omission
								errors should be considered pathological.
								=> Accuracy score <= 44 should be considered pathological							
														
AsymmetryScore_hits:			score for egocentric neglect
								calculated as the differences in number of apples (targets) found on the right (c5r2,c5r2,c4r1,c4r2)
								and the number of apples found on the left (c1r1,c1r2,c2r1,c2r2)
								range: -20 to +20
								Positive Value: more values were found on the right (left-sided neglect)
								Negative Value: more values were found on the left (right-sided neglect)
								Mancuso et al (2015): if the difference between left and right total omissions
								is equal or above 3, the performance should be considered pathological.								
																								
leftOmissions:					number of apples NOT selected on the left side (c1r1,c1r2,c2r1,c2r2); Range: 0-20
rightOmissions:					number of apples NOT selected on the left side (c5r1,c5r2,c4r1,c4r2); Range: 0-20


AsymmetryScore_commissions:	  	score for allocentric neglect	
								calculated as the number of commission errors on left-open apples - number of commission errors on right-open apples
								Range: 0-50
								
								Positive values indicate left neglect (more left-open than right-open commission errors)
									=> if more left-open apples were 'confused' with targets than right-open ones,
									participant had a harder time distinguishing left-open apples from targers	
									('neglected' to see the left missing piece)							
								
								Negative values indicate right neglect (more right-open than left-open commission errors)	
									=> if more right-open apples were 'confused' with targets than left-open ones,
									participant had a harder time distinguishing right-open apples from targers 
									('neglected' to see the right missing piece)
			
								Mancuso et al (2015): the difference btw. apples crossed out with a left opening 
								minus the number of apples crossed out with a right opening >= 2
								should be considered as pathological.			
								
////////////additional data
targetCounter: 				counts the number of times a response was registered on a new target (Max: 50)
							(repeatedly selecting the same target does not increase the count)
							
targetCounter_c1r1: 		counts the number of times a response was registered on a new target in column1,row1 (Max: 5)
targetCounter_c1r2: 		counts the number of times a response was registered on a new target in column1,row2 (Max: 5)
targetCounter_c2r1: 		counts the number of times a response was registered on a new target in column2,row1 (Max: 5)
targetCounter_c2r2: 		counts the number of times a response was registered on a new target in column2,row2 (Max: 5)
targetCounter_c3r1: 		counts the number of times a response was registered on a new target in column3,row1 (Max: 5)
targetCounter_c3r2: 		counts the number of times a response was registered on a new target in column3,row2 (Max: 5)
targetCounter_c4r1: 		counts the number of times a response was registered on a new target in column4,row1 (Max: 5)
targetCounter_c4r2: 		counts the number of times a response was registered on a new target in column4,row2 (Max: 5)
targetCounter_c5r1: 		counts the number of times a response was registered on a new target in column5,row1 (Max: 5)
targetCounter_c5r2: 		counts the number of times a response was registered on a new target in column5,row2 (Max: 5)

foilCounter:				counts the number of times a response was registered on a new foil (Max: 100)
							(repeatedly selecting the same foil does not increase the count)
							
foilCounter_c1_l:			counts the number of times a response was registered on a new LEFT-open foil in column1 (10)	
foilCounter_c1_r:			counts the number of times a response was registered on a new RIGHT-open foil in column1 (10)	
foilCounter_c2_l:			counts the number of times a response was registered on a new LEFT-open foil in column2 (10)	
foilCounter_c2_r:			counts the number of times a response was registered on a new RIGHT-open foil in column2 (10)
foilCounter_c3_l:			counts the number of times a response was registered on a new LEFT-open foil in column3 (10)	
foilCounter_c3_r:			counts the number of times a response was registered on a new RIGHT-open foil in column3 (10)
foilCounter_c4_l:			counts the number of times a response was registered on a new LEFT-open foil in column4 (10)	
foilCounter_c4_r:			counts the number of times a response was registered on a new RIGHT-open foil in column4 (10)
foilCounter_c5_l:			counts the number of times a response was registered on a new LEFT-open foil in column5 (10)	
foilCounter_c5_r:			counts the number of times a response was registered on a new RIGHT-open foil in column5 (10)

otherRespCounter:			counts the number of times a response was registered that was not made on one of 
							the target NOR foil response circles
							Note: some other responses might simply be a missed target response circle
							
							//Note: under each target (apple) as well as foil lies a response circle with a 
							//parameters.responseCircleSize_inpct, if response is registered outside
							//of these responsecircles, the script counts it as an 'other' response.
							//In some cases, these 'other' responses may simply be inaccurate screen
							//responding. Check screenshots of response path if in doubt.

//response Coordinates
path_x: 	a variable that stores the horizontal coordinates of the response in canvas percentages in sequential order
path_y: 	a variable that stores the vertical coordinates of the response in canvas percentages in sequential order
targets:	a variable that stores whether the responses were on a target (1) or elsewhere (0) in sequential order 
			Note: these values can be used in script applestest_path.iqx to visualize the path taken
			
			
//////////////////////////			
Screenshot Data:			
//////////////////////////
If a screenshot was taken, the script marks all responses with a number (in order from first to last response)
If a target area (full apple) was selected, the number turns green. Otherwise it's red.
If a target (full apple) was selected twice, the second mark is also green and marked as a separate response, 
but the redundant selection is not counted as a new target selection.							
___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	

(1) Demographic Information (Optional, see section Editable Parameters)
- script collects age and education information about the participant
(Note: Since Mancuso et al (2015) reported that age and education can have an impact on participants' execution time,
this information can be collected when running the script)

(2) Practice:
Participants practice to cross out the full apples while leaving the open apples alone.
7 example apples are provided on the vertical center line.
Practice can be repeated once.
If practice is failed twice in a row, the script terminates prematurely.

(3) Test: Max allotted time = 5minutes (editable parameter)
- participants are presented the 'stimuli page' and a submit button
(the 'stimuli page' is presented with 95% of the width of the active canvas to allow for some
room to provide the submit button)
- participants use the mouse/finger to select the apples scattered around the page
- When they are done, they click the submit button
- The test is over if the allotted time is up, or if participants submit their responses
- the apples page contains 150 apple images total and is divided into 5 columns
with 2 rows each. Each column contains the same number of foils and targets.

(4) Path Feedback with screencapture (optional)
Once done with the test, the script can show participants the 'stimuli page' with all apples
circled in blue and with all responses made numbered in sequence (starting with '1').
Numbers in Green show correctly selected apples, numbers in red show responses that were
made outside of the apples response circles. The taken path is marked by a turquoise dotted line.
A screenshot of this feedback page (with subject ID) can be taken for further analyses
(optional)
___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________

The original paper Apples Test (sized on DinA4) was re-created by Millisecond Software for this script 
as a W:H=4:3 image to reduce pixelation of the apples. 
Placement and size of the apples as well as apple appearance was attempted to be kept as similar as possible
to the original. The resulting image is stored under 'stimulipage.png'. This image could be replaced with
an image of the original apples test. 
To check if the coded responsecircles that lie under the stimuli, still align with the stimuli,
set parameters.showResponseCirclePlacements to true. 


The 'stimuli page' run by the script is sized to be 95% of the width of the active canvas 
to allow for response buttons to be placed on the screen.

The script can be run with an absolutely sized stimuli page that approaches the actual size of the paper version
of the task (provided the screen is large enough).
___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________

provided by Millisecond Software - can be edited under section 'Editable Instructions'
Practice instructions modelled after Mancuso et al (2015)
___________________________________________________________________________________________________________________	
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: