Apples Cancellation Test

Technical Manual

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond

Created: January 21, 2013

Last Modified: January 19, 2025 by K. Borchert (katjab@millisecond.com), Millisecond

Script Copyright © Millisecond Software, LLC

Background

This script implements Millisecond'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. Default settings default back to proportional sizing. Go to 'defaults' setting for more info.

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

Duration

7 minutes

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.

Procedure

(1) Demographic Information (Optional, see section Editable Parameters)
- script collects age and education information about the participant
( 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 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). See section 'defaults' for more information.

Instructions

provided by Millisecond - can be edited in script applesttest_instructions_inc.iqjs
Practice instructions modelled after Mancuso et al (2015)

Summary Data

File Name: applestest_summary*.iqdat

Data Fields

NameDescription
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
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)
stimuliPageWidthMM The width of the stimuli page in mm
stimuliPageHeightMM The height of the stimuli page in mm
executionTimeSec Apple search time in seconds
expectedExecutionTimeSec The execution time (in sec) that can be expected given the participant's age
and education ( 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)
maximumExecutionTimeSec 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 ExecutionTimeSec surpassed the cutoff (maximumExecutationTimeSec)
0 = the ExecutionTimeSec 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
asymmetryScoreHits 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
asymmetryScoreCommissions 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.
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)
targetCounterC1r1 Counts the number of times a response was registered on a new target in column1,row1 (Max: 5)
targetCounterC1r2 Counts the number of times a response was registered on a new target in column1,row2 (Max: 5)
targetCounterC2r1 Counts the number of times a response was registered on a new target in column2,row1 (Max: 5)
targetCounterC2r2 Counts the number of times a response was registered on a new target in column2,row2 (Max: 5)
targetCounterC3r1 Counts the number of times a response was registered on a new target in column3,row1 (Max: 5)
targetCounterC3r2 Counts the number of times a response was registered on a new target in column3,row2 (Max: 5)
targetCounterC4r1 Counts the number of times a response was registered on a new target in column4,row1 (Max: 5)
targetCounterC4r2 Counts the number of times a response was registered on a new target in column4,row2 (Max: 5)
targetCounterC5r1 Counts the number of times a response was registered on a new target in column5,row1 (Max: 5)
targetCounterC5r2 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)
foilCounterC1L Counts the number of times a response was registered on a new LEFT-open foil in column1 (10)
foilCounterC1R Counts the number of times a response was registered on a new RIGHT-open foil in column1 (10)
foilCounterC2L Counts the number of times a response was registered on a new LEFT-open foil in column2 (10)
foilCounterC2R Counts the number of times a response was registered on a new RIGHT-open foil in column2 (10)
foilCounterC3L Counts the number of times a response was registered on a new LEFT-open foil in column3 (10)
foilCounterC3R Counts the number of times a response was registered on a new RIGHT-open foil in column3 (10)
foilCounterC4L Counts the number of times a response was registered on a new LEFT-open foil in column4 (10)
foilCounterC4R Counts the number of times a response was registered on a new RIGHT-open foil in column4 (10)
foilCounterC5L Counts the number of times a response was registered on a new LEFT-open foil in column5 (10)
foilCounterC5R 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
Notes
- some other responses might simply be a missed target response circle
- under each target (apple) as well as foil lies a response circle with a
parameters.responseCircleSize_Pct, 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.
pathX A variable that stores the horizontal coordinates of the response in canvas percentages in sequential order
pathY 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
these values can be used in script applestest_path.iqjs to visualize the path taken

Raw Data

File Name: applestest_raw*.iqdat

Data Fields

NameDescription
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
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)
stimuliPageWidthMM The width of the stimuli page in mm
stimuliPageHeightMM The height of the stimuli page in mm
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.
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
0 = all correct
1 = try again
2 = 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, but it does increase the responseCounter)
targetCounterC1r1 Counts the number of times a response was registered on a new target in column1,row1 (Max: 5)
targetCounterC1r2 Counts the number of times a response was registered on a new target in column1,row2 (Max: 5)
targetCounterC2r1 Counts the number of times a response was registered on a new target in column2,row1 (Max: 5)
targetCounterC2r2 Counts the number of times a response was registered on a new target in column2,row2 (Max: 5)
targetCounterC3r1 Counts the number of times a response was registered on a new target in column3,row1 (Max: 5)
targetCounterC3r2 Counts the number of times a response was registered on a new target in column3,row2 (Max: 5)
targetCounterC4r1 Counts the number of times a response was registered on a new target in column4,row1 (Max: 5)
targetCounterC4r2 Counts the number of times a response was registered on a new target in column4,row2 (Max: 5)
targetCounterC5r1 Counts the number of times a response was registered on a new target in column5,row1 (Max: 5)
targetCounterC5r2 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)
foilCounterC1L Counts the number of times a response was registered on a new LEFT-open foil in column1 (10)
foilCounterC1R Counts the number of times a response was registered on a new RIGHT-open foil in column1 (10)
foilCounterC2L Counts the number of times a response was registered on a new LEFT-open foil in column2 (10)
foilCounterC2R Counts the number of times a response was registered on a new RIGHT-open foil in column2 (10)
foilCounterC3L Counts the number of times a response was registered on a new LEFT-open foil in column3 (10)
foilCounterC3R Counts the number of times a response was registered on a new RIGHT-open foil in column3 (10)
foilCounterC4L Counts the number of times a response was registered on a new LEFT-open foil in column4 (10)
foilCounterC4R Counts the number of times a response was registered on a new RIGHT-open foil in column4 (10)
foilCounterC5L Counts the number of times a response was registered on a new LEFT-open foil in column5 (10)
foilCounterC5R 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
Notes
- some other responses might simply be a missed target response circle
- under each target (apple) as well as foil lies a response circle with a
parameters.responseCircleSize_Pct, 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.
pathX A variable that stores the horizontal coordinates of the response in canvas percentages in sequential order
pathY 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
these values can be used in script applestest_path.iqjs to visualize the path taken

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
Color Parameter
canvasColor Display color of the actively used portion of the screen (the 'canvas')
if set to a color other than the screenColor, you can distinguish the active canvas
from the inactive portion of the screen
lightGray
screenColor Color of the screen not used by the canvas ('inactive screen')lightGray
defaultTextColor Default color of text itemsblack
Sizing Parameters
responseCircleSizePct under each target/foil (apple) lies a response circle with a
parameters.responseCircleSize_Pct (5.5%) - proportional to canvas height
This response circle CANNOT reasonably be much bigger as otherwise
some response circle overlap will occur that could make
distinguishing which apple was selected impossible
5.5%
Timing Arameters
testDurationInmin The max. duration of the test (in minutes)5
Feedback
showPathFeedback •true*: at the end of the task, the script presents the stimulipage
with all target locations circled and draws the response path.
Participants' reponse locations are marked with numbers that refer to the
order in which those locations were selected. Selected target locations
are marked by green numbers, other locations by red numbers.
*false*: no response feedback is provided
true
takePathScreenshot this parameter is only relevant if parameters.showPathFeedback = true
*true*: script takes a screenshot of the feedback/response path page
as additional data
*false*: no screenshot is taken of the response path
( this project folder provides a stand-alone 'post-hoc' location
drawing script. This additional script draws the response path
but requires some copy-paste manual labor)
true
runDemographicInformation •true*: script collects age and education information
*false*: no demographic information is collected
Mancuso et al (2015) report that
-Execution Time is affected by age & education
true
maxPracticeAttempts The number of times practice can be repeated
if participants still make mistakes after the second time, abort the script
2
Debug Variable
showResponseCirclePlacements True = the script runs a procedure to show test administrators
the response circles under the individual apple stimuli (Debug Mode)
false = the regular testing procedure is run
this setting is useful if you use a different applestest image
than the one that comes with this script but still need to see if the
response circles still align with the stimuli
false