User Manual: Inquisit Bells Test


___________________________________________________________________________________________________________________	

												Bells Test
___________________________________________________________________________________________________________________	


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

Script Copyright © 02-03-2023 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
This script implements Millisecond Software's computerized version of the Bells test (Gauthier et al, 1989), 
a test for visual neglect and search strategy. Gauthier et al (1989) define visual neglect 
'as a lack of response or attendance to visual stimuli presented to the left or to the right of the median line
of the body and/or head' (p.50). 

Mancuso et al (2019) suggest a new standardization approach of the original paper&pencil Bells Test based 
on data collected with a large sample of Italian participants. They introduce three new measures
(ExecutionTime in seconds, Accuracy Score, and Asymmetry Score) that depend on age and level of schooling
to varying degrees.

The script provides the functionality to present the 'stimuli page' in roughly the same absolute size as the
original paper&pencil version of the Bells 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 Mancuso et al (2019) and Gauthier et al (1989) as well as 
additional information about the 'response path' (search path) taken to find the Bells. 
Screenshots of the taken path/numbered targets can be taken (optional setting) for further analyses. 
Please, use caution in comparing results obtained with this computerized version of the Bells Test to
results obtained with the original paper&pencil version.


****References*****
											
Gauthier, L., Dehaut, F., & Joanette, Y. (1989). The Bells Test: A quantitative and qualitative 
test for visual neglect. International Journal of Clinical Neuropsychology, 11(2), 49–54.

instructions and test sheet: https://strokengine.ca/en/assessments/bells-test/

Mancuso et al (2019). A New Standardization of the Bells Test: An Italian Multi-Center Normative
Study. Front. Psychol. 9:2745.
doi: 10.3389/fpsyg.2018.02745
___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________

The Bells Test provides participants with a black and white page of seemingly randomly distributed little objects
such as houses, saws, cars, trees, guns, sharks etc. Scattered around the page are 35 bells which are the 
search targets of the test. While the objects look to be randomly placed on the page, they are actually placed
in a strategic way: 
the page consists of 7 columns (left side: c1, c2, c3; center: c4; right side: c5, c6, c7).
Each of the columns contains 5 bells and about 40 distractors (35 bells + 280 distractors = 315 total objects).
Participants get 5 minutes (editable parameter) to find as many bells as they can.
One verbal reminder/hint is provided if participants try finish the test before all bells are found.

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

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

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

responseCounter: 			counts the number of responses (excluding 'submit' response)

target: 					1 = the current response was a target (bell)
							0 = the current response was not on a target response circle
							//Note: under each target (bell) lies a response circle with a 
							//parameters.responseCircleSize_inpct, if response is registered outside
							//of this responsecircle, 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.
							
otherRespCounter:			counts the number of times a response was registered that was not made on one of 
							the 35 target response circles
							Note: some other responses might simply be a missed target response circle
							
targetCounter: 				counts the number of times a response was registered on a new target (Max: 35)
							(repeatedly selecting the same target does not increase the count)
							
targetCounter_c1: 			counts the number of times a response was registered on a new target in column1	(Max: 5)
targetCounter_c2: 			counts the number of times a response was registered on a new target in column2	(Max: 5)
targetCounter_c3: 			counts the number of times a response was registered on a new target in column3	(Max: 5)
targetCounter_c4: 			counts the number of times a response was registered on a new target in column4	(Max: 5)
targetCounter_c5: 			counts the number of times a response was registered on a new target in column5	(Max: 5) 
targetCounter_c6: 			counts the number of times a response was registered on a new target in column6	(Max: 5)
targetCounter_c7: 			counts the number of times a response was registered on a new target in column7	(Max: 5)


//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 bellstest_path.iqx to visualize the path taken


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

ExecutionTime_insec:		bell search time in seconds

expectedExecutionTime_insec:	the execution time (in sec) that can be expected given the participant's age
								calculated using the formula suggested by Mancuso et al (2019, p.5)
								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 (2019, p.5)
								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)
								Note: According to Mancuso et al (2019, p.5) if participant takes longer than 
								the calculated maximumExecutationTime, the performance can be coded
								as 'pathological'
								
								Note that Gauthier et al (1989, p.50) et al did not consider execution/completion time to be 
								'a valuable indicator of success or neglect.
								

AccuracyScore:					the omission number - number of bells not selected ('Measure of Selective Attention')
								Range: 0-35
							
ExpectedAccuracyScore:			the expected number of omissions based on participant's age and number of years of schooling
								NA: no demographic information available (values could not be generated)
								
MaximumAccuracyScore:			the cut-off number of omissions
								NA: no demographic information available (values could not be generated)
							
AccuracyScoreFlag:				1 = the AccuracyScore surpassed the cut-off
								0 = the AccuracyScore did NOT surpass the cut-off
								NA: no demographic information available (values could not be generated)
								Note: According to Mancuso et al (2019, p.4) if participant makes more mistakes than the 
								the calculated maximumAccuracyScore, the performance can be coded
								as 'pathological'.

														
AsymmetryScore:					calculated as the differences in number of bells found on the right (c5,c6,c7)
								and the number of bells found on the left (c1,c2,c3)
								range: -15 to +15
								Positive Value: more values were found on the right (left-sided neglect)
								Negative Value: more values were found on the left (right-sided neglect)
								
AsymmetryScoreFlag:				1 = participant showed significant asymmetry in performance (> 2)
								0 = participant did NOT show significant asymmetry in performance (<= 2)							
								Note: Mancuso et al (2019): 'Individual performances
								in which the difference between left and right total
								omissions was equal to or above 3 should be considered
								pathological' (p.4). No dependency on age nor education was noted.								
														
//////suggested by Bells-Test-Instructions-Final-Version-Approuve-Yves.pdf (downloaded from: https://strokengine.ca/en/assessments/bells-test/)
leftOmissions:					number of bells not selected on the left side (c1,c2,c3); Range: 0-15
rightOmissions:					number of bells not selected on the left side (c5,c6,c7); Range: 0-15

								Bells-Test-Instructions-Final-Version-Approuve-Yves.pdf
								(https://strokengine.ca/en/assessments/bells-test/)
								'If the client has more than three omissions, then he/she is suspected of presenting with an
								attentional deficit. If the client omits six bells or more on the left or right half of the sheet,
								then he/she is suspected of presenting with a visual neglect.'
	
RealizationTime_insec:			the time (in seconds) that has passed before participant pressed submit despite yet to be selected targets
								(and received a hint)
								
								
////////////additional data
otherRespCounter:				counts the number of times participants selected a non-target
								could be a Commission Error or simply a 'missed' target (this happens when
								participants might miss the invisible response circle around target images).
								
targetCounter: 					counts the number of times a response was registered on a new target (Max: 35)
								(repeatedly selecting the same target does not increase the count)
							
targetCounter_c1: 				counts the number of times a response was registered on a new target in column1	(Max: 5)
targetCounter_c2: 				counts the number of times a response was registered on a new target in column2	(Max: 5)
targetCounter_c3: 				counts the number of times a response was registered on a new target in column3	(Max: 5)
targetCounter_c4: 				counts the number of times a response was registered on a new target in column4	(Max: 5)
targetCounter_c5: 				counts the number of times a response was registered on a new target in column5	(Max: 5) 
targetCounter_c6: 				counts the number of times a response was registered on a new target in column6	(Max: 5)
targetCounter_c7: 				counts the number of times a response was registered on a new target in column7	(Max: 5)

//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 bellstest_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 (bell) was selected, the number turns green. Otherwise it's red.
If a target (bell) was selected twice, the second mark is also green, but the
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 (2019) reported that age and education can have an impact on participants' performance,
this information can be collected when running the script)

(2) Intro:
The script provides the 'Bells Test Demonstration' page (https://strokengine.ca/en/assessments/bells-test/)
and asks participant to find each of the items.
For each item search, the name of the item is printed in blue on the screen and participants have to
select the correct item. If an incorrect item is selected, a red error message pops up that
asks them 'to try again'. If the correct item is selected, a green checkmark is briefly presented on screen.
The order of the items is fixed (the bell is presented as the 8th item).

(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 bells scattered around the page
- When they are done, they click the submit button
IF not all bells are found at this point: one verbal reminder (in the form of a soundfile) is 
played to ask them "Are you sure that all the bells are now circled?" and allows them to continue
looking for the missing bells.
- The test is over if the allotted time is up, or if participants submit their responses 
a second time (if a reminder was given)

(4) Path Feedback with screencapture (optional)
Once done with the test, the script can show participants the 'stimuli page' with all bells
circled in blue and with all responses made numbered in sequence (starting with '1').
Numbers in Green show correctly selected bells, numbers in red show responses that were
made outside of the bells 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
___________________________________________________________________________________________________________________

Stimuli Page: https://strokengine.ca/en/assessments/bells-test/

The original paper Bells Test (sized on DinA4) was printed out on a US legal-sized paper. 
To fit the stimuli on a W:H=4:3 sized page, white areas on the top/bottom and left/right around the stimuli 
were removed  while still retaining all the original stimuli as well as the center location of the orientation dot
on the bottom.
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'
the instructions are based on file 'Bells-Test-Instructions-Final-Version-Approuve-Yves.pdf'
downloaded from: https://strokengine.ca/en/assessments/bells-test/
___________________________________________________________________________________________________________________	
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: