User Manual: Inquisit Visual Approach/Avoidance by the Self Task (VAAST) with images


___________________________________________________________________________________________________________________	

								Visual Approach/Avoidance by the Self Task (VAAST)
								(Template with Picture Stimuli)
___________________________________________________________________________________________________________________	


Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 03-16-2023
last updated:  06-19-2024 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 06-19-2024 Millisecond Software
___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
This script implements Millisecond Software's version of the Visual Approach/Avoidance by the Self Task (VAAST)
described by Aubé et al (2019). The VAAST is a cognitive test of spontaneous approach/avoidance tendencies towards
two categories of stimuli. According to Aubé et al (2019) 'The VAAST simulates approach and avoidance movements 
of the whole self by manipulating the visual information provided to the participants'.
This implementation uses picture stimuli of the categories "flowers" and "insects" as
default examples. The running hypothesis is that people 'approach flowers and avoid insects' (compatible pairings) 
faster than that they 'approach insects and avoid flowers' (incompatible pairings).

The VAAST is provided by the authors as a PsyToolkit script, providing background stimuli,
instructions and a step-by-step R script to analyze the data from the PsyToolkit
output. The PsyToolkit is accessible to any researcher without cost.

The original script can be accessed here:
word stimuli: https://www.psytoolkit.org/experiment-library/vaast_words.html
image stimuli: https://www.psytoolkit.org/experiment-library/vaast_images.html

The Inquisit script provides the code to run the task on an absolutely sized screen if needed.
Check section Editable Parameters for more information.
By default, the script uses the biggest 16:9 (the W:H dimensions of the background images) 
canvas on the current monitor  (thus absolute sizing is turned off by default).
The Inquisit script does not provide further help with data analyses (with 
the exception of several summary variables). 

DISCLAIMER:
While Millisecond Software thrives to replicate the task as faithfully as possible to the original,
differences between the implementations may exist. 


***Reference***										

Aubé, B., Rougier, M., Muller, D., Ric, F., & Yzerbyt, V. (2019). The online-VAAST: A short and online tool 
to measure spontaneous approach and avoidance tendencies. Acta Psychologica, 201, 102942–102942. 
https://doi.org/10.1016/j.actpsy.2019.102942

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________

In each VAAST trial a stimulus (here: pictures of flowers or insects) appear superimposed on a background
(here: a street scene). Depending on instructions, participants have to press the 'approach' key
or 'avoidance' key as fast as possible. For example, in one condition they are told to press the 'approach' key
for flowers and the 'avoidance' key for insects ('compatible condition'). In a second condition, 
participants are told to press the 'approach' key for insects and the 'avoidance' key for 
flowers ('incompatible' condition).

When participants press the 'approach' key the background zooms in and the target picture itself gets larger. 
When they press the 'avoidance' key the opposite happens: the background zooms out
and the target picture gets smaller. According to Aubé et al (2019) 'This visual feedback gives
participants the impression that they are moving toward or away from the stimulus in the street, 
pretty much as in real life.'

The procedure runs the compatible and incompatible condition back to back. The order in which these conditions
are run is determined by groupnumber assignment in this script.
Group1: runs compatible -> incompatible
Group2: runs incompatible -> compatible
(if a random assignment is needed, go to section Experiment and follow instructions)
___________________________________________________________________________________________________________________	
DURATION 
___________________________________________________________________________________________________________________	
the default set-up of the script takes appr. 15 minutes to complete

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

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

//Screen Setup:
(parameter) runAbsoluteSizes:	true (1) = should run absolutely sized canvas (see parameters- canvasHeight_inmm)
								false (0) = should use proportionally sized canvas (uses width = 16/9*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 (by default: lightGray area) 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

computer.hasKeyboard:			1 = an external keyboard was detected; 0 = no external keyboard detected

blockOrder:						1 = compatible (approach cat1 - flower) -> incompatible (avoid cat1- flower)
								2 = incompatible (avoid cat1 - flower) -> compatible (approach cat1- flower)

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. 
									
								Note: trialcode 'showtime_cat1' and trialcode 'showtime_cat2' store the response data
								
trialCounter: 					custom trial counter per block

compatible:						1 = response to stimuli is compatible (hypothesis-consistent)
								0 = otherwise
																								
stimuli:						stores the currently presented image 
valence:						valence of currently presented image (1 = cat1, flower; 2 = cat2, insect)
randomFixation:					the duration (in ms) of the fixation cross, sampled from 800 to 2000 in 100ms steps 

firstKey:						3 = the start key (here; H) was pressed and released before the start of the trial
 
response:						the response of participant (scancode of response button)
responseText:					name of response key pressed
movement:					 	1 = approach, 2 = avoidance
correct:						correctness of response (1 = correct, 0 = error)
latency:						response latency (in ms); measured from: onset of images

//debug columns: store the first and second static stimuli presented in a trial
stimulusitem.1
stimulusitem.2

*****Note: 
These are the variables that are akin to the output variables of the Psychotool script
(https://www.psytoolkit.org/experiment-library/vaast_images.html#_data_output_file)

blockOrder
blockcode
stimuli
valence
randomFixation
firstKey
movement
correct
latency

(2) Summary data file: 'vaast_images_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:
(parameter) runAbsoluteSizes:	true (1) = should run absolutely sized canvas (see parameters- canvasHeight_inmm)
								false (0) = should use proportionally sized canvas (uses width = 16/9*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 (by default: lightGray area) 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

computer.hasKeyboard:			1 = an external keyboard was detected; 0 = no external keyboard detected

blockOrder:						1 = compatible (approach cat1 - flower) -> incompatible (avoid cat1- flower)
								2 = incompatible (avoid cat1 - flower) -> compatible (approach cat1- flower)

//////summary data//////
propCorrect_cat1_app:			proportion correct responses for cat1 images (here: flower) under APPROACH instructions (compatible)
meanCorrRT_cat1_app:			mean correct response time (in ms) for cat1 images (here: flower) under APPROACH instructions
propCorrect_cat1_av:			proportion correct responses for cat1 images (here: flower) under AVOID instructions (incompatible)
meanCorrRT_cat1_av:				mean correct response time (in ms) for cat1 images (here: flower) under AVOID instructions

propCorrect_cat2_app:			proportion correct responses for cat2 images (here: insect) under APPROACH instructions (incompatible)
meanCorrRT_cat2_app:			mean correct response time (in ms) for cat2 images (here: insect) under APPROACH instructions
propCorrect_cat2_av:			proportion correct responses for cat2 images (here: insect) under AVOID instructions (compatible)
meanCorrRT_cat2_av:				mean correct response time (in ms) for cat2 images (here: insect) under AVOID instructions

propCorrect_compatible:			proportion correct responses for compatible image-instruction trials
meanCorrRT_compatible:			mean correct response time (in ms) for compatible image-instruction trials

propCorrect_incompatible:		proportion correct responses for incompatible image-instruction trials
meanCorrRT_incompatible:		mean correct response time (in ms) for incompatible image-instruction trials

compatibility_diffRT:			the difference (meanCorrRT_incompatible - meanCorrRT_compatible)
								positive: participant was faster to respond to compatible trials than to incompatible ones
								negative: participant was faster to respond to incompatible trials than to compatible ones
								
								Note: 'compatible' image-instructions pairings are the hypothesis-consistent pairings 
								(e.g. people approach flower images and avoid insect images)
								whereas the 'incompatible' image-instructions pairings are hypothesis-inconsistent.
							
___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	

(1) Keyboarch Check: this script checks if an attached external keyboard can be found.
If no external keyboard can be detected, participants get a brief note that a 'keyboard is required' 
and the tasks aborts prematurely.

(2) Introduction to the Task

(3) Compatible Condition (see below for condition order information)
instructions: 'approach flower images and avoid insect images'

*Practice* 
10 trials (5 flower, 5 insect; order is randomly determinded),
error feedback provided (when response is incorrect, no zooming happens. Instead, the image ERROR is presented)
/////NOTE: 	the number of trials run depends on the number of items under item.cat1_images_training/item.cat2_images_training
/////NOTE: 	by default, a reminder to press and release the startkey is presented by default after 5s if no startkey has 
			been pressed during practice (check parameters.runStartKeyReminder_duringPractice for more info)

*Test*
40 trials (20 flower, 20 insect; order is randomly determined)
no errorfeedback
/////NOTE: 	the number of trials run depends on the number of items under item.cat1_images/item.cat2_images
/////NOTE: 	by default, NO reminder to press and release the startkey is presented during test trials 
			(check parameters.runStartKeyReminder_duringTest for more info)

(4) Incompatible Condition
instructions: 'approach insect images and avoid flower images'

*Practice* 
10 trials (5 flower, 5 insect; order is randomly determinded) (Note: the same images are used as in the Compatible Practice)
error feedback provided (when response is incorrect, no zooming happens. Instead, the image ERROR is presented)
/////NOTE: the number of trials run depends on the number of items under item.cat1_images_training/item.cat2_images_training

*Test*
40 trials (20 flower, 20 insect; order is randomly determined) (Note: the same images are used as in the Compatible Practice)
no errorfeedback
/////NOTE: the number of trials run depends on the number of items under item.cat1_images/item.cat2_images

(5) END


////////Trial Procedure://///////
-Start Screen that presents an O superimposed on the start street scene. 
	=> Participants need to press the H key AND release it 
	(in this script; releasing the Startkey frees the index fingers to get ready to respond to the stimulus.
	This is different from the official demo)
	
-Upon release of the H key, a fixation cross appears on the street scene. 
	=> The duration of the fixation cross is randomly determined (800-2000ms, with step interval = 100ms)
	
-An image appears on the street scene. 
	=> Participants have to decide as fast as possible whether to press the Y-key for APPROACH or the N-key for AVOID
	
-As soon as response is registered, the feedback screen is presented:
	=> Approach Key (Y) -> street scene is zoomed in AND image gets larger
	=> Avoid Key (N) -> street scene is zoomed out AND image gets smaller
	- the image is erased after 500ms
	- after another 500ms (iti), the trial ends and the next one starts.


//////Blockorder Information: group assignment///////
This script can be used to counterbalance the order of the two conditions 'Compatible->Incompatible' 
and 'Incompatible->Compatible' by using different groupnumbers.
Group '1': runs compatible -> incompatible
Group '2': runs incompatible -> compatible
(if a random assignment is preferred, go to section Experiment and follow instructions to change from
a groupassignment based on groupnumber to a random assignment)

___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________

//////////imageS/////////////
flower and insect images taken from:
https://pixabay.com/

Pixabay License Information:
Free to use under the Pixabay license
No attribution required


Practice: 5 flower, 5 insect images
Test: 20 flower, 20 insect images
(the same images are run in the Compatible and Incompatible Conditions)

Note:
*the images are provided as placeholders only, they can easily be replaced by others
under section Editable Stimuli.

*The number of images provided controls the number of trials run in each block.


//////////BACKROUNDS/////////////
background images from:
https://www.psytoolkit.org/experiment-library/vaast_images.html

___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________

instructions based on:
https://www.psytoolkit.org/experiment-library/vaast_images.html

The instructions in this script 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: