User Manual: Inquisit Negative Priming


___________________________________________________________________________________________________________________	

							Negative Priming with Affective Stimuli
___________________________________________________________________________________________________________________	


Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 07-31-2024
last updated:  08-22-2024 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 08-22-2024 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
This Inquisit script implements a Negative Priming Procedure with affective stimuli. 
Negative Priming is generally characterized as the implicit memory effect in which actively suppressing 
information processing of a stimulus can impair processing of related material shortly there after.
Negative Affective Priming uses stimuli of different valences (positive vs. negative).
It has been used in the study of impaired cognitive processing in depression (Joorman & Gotlib, 2010)

The implemented Negative Affective Priming procedure is based on the published paradigm 
by Joorman & Gotlib (2010).

//////Reference:											

Joormann, J., & Gotlib, I. H. (2010). Emotion regulation in depression: Relation to cognitive inhibition.
Cognition and Emotion, 24(2), 281–298. 
https://doi.org/10.1080/02699930903407948

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________

Participants see two words on top of each other. One is the target word (printed in blue)
and one is the distractor (printed in red). The words come from different valence categories
(one is positive and the other negative). Participants are asked to ignore the red words.
Their task is to categorize the blue words as positive or negative via corresponding keyboard responses.

Test trials are divided into 2 parts:
Part1 are the Priming Trials (PTrials).
Part2 are the Target Trials (TTrials).

For Negative Priming (NP) trials, the valence of the ignored (red) word in 
the PTrial (=distractor) is the same as the valence of the (blue) target word in the TTrial.
The valence of the (blue) target in PTrials is opposite of the valence of the 
(blue) target in TTrials
=> negative priming is expected (slower responses in TTrials due to negative priming via the suppressed distractor of the same valence)
=> since the attended targets are of opposite valences there should not be any 'positive' valence priming effect

For Control (Ctrl) trials, the valence of the ignored (red) word in the PTrial
is neutral compared to the positive or negative target word in the TTrial.
The valence of the (blue) target in PTrials is opposite of the valence of the 
(blue) target in TTrials (same as in NP trials)
=> no negative priming is expected (neutral suppressed distractor should NOT negatively prime the target in the TTrial)
=> since the attended targets are of opposite valences there should not be any 'positive' valence priming effect in Ctrl trials either

Differences in TTrial Response Times in NP condition should be due to Negative Priming.

Note: Although PTrials and TTrials are individual trials from a participant's 
perspective, participants may nonetheless potentially catch on the predictable response pattern created 
by PTrials and TTrial always requiring opposite responses. Thus, this script
has the built functionality to add filler trials to obscure this response pattern.

___________________________________________________________________________________________________________________	
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: 'negativepriming_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

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.
							
						
blockCounter: 				tracks the number of blocks run
trialCounterPerBlock:		tracks the number of trials run per block (Test Trial = (PTrial + TTrial) count as one trial)
trialPhase: 				"P" (PTrial), "T" (TTrial), "F" (Filler)

/////IV: stays the same across PTtrial and TTrial
trialType: 					1 = NP; 2 = Ctrl (Main IV); 3 = Filler (ignored for data analyses)
targetValenceTTrial: 		1 = target in TTrial is negative; 2 = target in TTrial is positive
targetPositionPTrial: 		1 = target in PTrial is on top; 2 = target in PTrial is on the bottom
targetPositionTTrial: 		1 = target in TTrial is on top; 2 = target in TTrial is on the bottom

////changes btw. PTrial and TTrial
targetWord: 				the currently presented target word
distractorWord:				the currently presented distractor word 
targetValence: 				1 = the currently presented target is negative; 2 = the currently presented target is positive
distractorValence: 			1 = the currently presented distractor is negative; 2 = the currently presented distractor is positive; 3 = distractor is neutral
targetPosition: 			1 = current target is on top (distractor on bottom); 2 = current target is on the bottom (distractor on top)	
correctResp: 				stores the correct response key for the current trial

////DVs:
response:					the response of participant (scancode of response button)
responseText:				the response button pressed
								Example:
								response = 18 (scancode) => responseText = "E"
								
correct:					correctness of response (1 = correct, 0 = error)
latency:					response latency (in ms); measured from: onset of words

validRT:					1 = latency falls within 300 <= latency <= 2000 (see editable parameters)
							0 = latency falls outside of specified range

///////additional variables:
targetY: 					stores the vertical screen coordinate of the target
distractorY: 				stores the vertical screen coordinate of the distractor
							Note: 0% = top of the screen -> 100% bottom of the screen

////ratings of targets and distractors							
tValence: 					the valence rating assigned to the current target
tArousal: 					the arousal rating assigned to the current target 
tDominance: 				the dominance rating assigned to the current target 
tLength: 					the length of the current target
dValence: 					the valence rating assigned to the current distractor
dArousal: 					the arousal rating assigned to the current distractor
dDominance: 				the dominance rating assigned to the current distractor 
dLength: 					the length of the current distractor

//previous stimuli used (to check that no repeats across pTrials and tTrials)
prevDistractor:				stores the distractor stimulus from the previous trial
prevTarget:					stores the target stimulus from the previous trials

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

/////summary data//////
Notes: 
- summary variable based on TTrial performance only
- latency data based on validRTs only (300 <= latency <= 2000)

propCorrect:				proportion correct responses across all test trials (TTrial only)
meanCorrRT:					mean correct response time across all test trials (TTrial only)
								Note: extreme latency outliers removed (300 <= latency <= 2000)
								
propRTOutliers:				proportion removed latency data relative to all latency data (correct or incorrect responses)

propCorrectNP:				proportion correct responses across all NP trials (TTrial only)
meanCorrRTNP:				mean correct response time across all NP trials (TTrials only) - extreme outliers removed
propCorrectCtrl:			proportion correct responses across all Control trials (TTrial only)
meanCorrRTCtrl:				mean correct response time across all Control trials (TTrials only) - extreme outliers removed
							
___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	

/////////////////////////
(1) Practice:
/////////////////////////
- 10 practice trials
- practice trials are individual trials (NOT 2-part trials like the test trials)
- half the practice trials require a positive response (half a negative response)
- the valence of the distractor is opposite to the target valence
- half the practice trials present the target on top, half on the bottom (randomly selected)
- the trial order is randomly determined
- practice trials select from their own pool of stimuli
- error feedback is provided

/////////////////////////
(2) Test: 5 test blocks (editable parameter)
/////////////////////////

- Each test block runs 32 test trials (each test trial has 2 parts) and 16 filler trials (see editable parameters)
=> from a participant's perspective there are (2*32) + 16 = 80 individual trials to run
- the order of the trials is randomly generated for each block
- no feedback

***Test Trials ('double trials')***
2 trialtypes (NP vs. Ctrl) x 2 target valences in target trials (pos vs neg) x 2 target positions in PTrials (top vs. bottom) x 2 target positions in target trials (top vs.bottom)
=> minimum of 16 test trials per block for a balanced design (each test trial runs 2 individual trials)
=> with 32 test trials, each combination is run twice

- Half the test trials are NP trials, half are Ctrl trials

NP: 
distractor valence in PTrial = target valence in TTrial (negative priming)
target valence in PTrial opposite of target valence in TTrial (no positive priming)

Ctrl:
distractor valence in PTrial neutral and thus different than target valence in TTrial (no negative priming)
target valence in PTrial opposite of target valence in TTrial (no positive priming)


***Filler Trials ('single trials')***
number of filler trials can be controlled via an editable parameter.
By default, this script runs half as many filler trials as test trials
=> 0.5*32 = 16 Filler Trials

- filler trials randomly (with replacement) select neutral, positive or negative distractors
- filler trial select a different valence for their targets
- target screen position (top or bottom) is selected randomly with replacement


***Trial Sequence***
-> Fixation cross only for 500ms
-> Target and Distractor until response


///////Note on Stimuli Selection
- all neutral stimuli are selected randomly without replacement from the pool of neutral stimuli
(automatically resets once all stimuli have been selected)
- all negative stimuli are selected randomly without replacement from the pool of negative stimuli
(automatically resets once all stimuli have been selected)*
- all positive stimuli are selected randomly without replacement from the pool of positive stimuli
(automatically resets once all stimuli have been selected)*

*The script ensures that no stimuli are repeated in PTrials and TTrials,
thus the script forces a reset of the positive and negative selection lists if there are
not at least 2 different stimuli left to select.
Other consecutive trials can repeat stimuli however.

___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________

provided by Millisecond Software - can be edited and/or replaced under section 'Editable Stimuli'

The stimuli are NOT original to Joorman & Gotlib (2010)*
They were generated for the Inquisit script as follows:

Words taken from the Affective Norms of English words (Bradley & Lang,1999)

Bradley, MM.; Lang, PJ. Affective norms for English words (ANEW): Technical Manual and Affective
Ratings. Gainesville, FL: The Center for Research in Psychophysiology, University of Florida; 1999.

/////////////////////
////Positive items:
/////////////////////
- valence rating >= 7
- arousal rating: 4 <= arousal <= 6 (midlevel arousal)
- dominance rating: 4 <= arousal <= 6 (midlevel dominance)
- word length: 4 <= word length <= 6 (target and distractor should be within 2 letters of each other, and neither too short nor too long)

Of the determined 41 stimuli, Millisecond selected the 32 words with the highest valence:

Mean Valence: 7.52
Mean Arousal: 5.01
Mean Dominance: 5.55
Mean word length: 5.13

/////////////////////
////Neutral items:
/////////////////////
- 4.5 <=valence rating <= 5.5
- arousal rating: 4 <= arousal <= 6 (midlevel arousal)
- dominance rating: 4 <= arousal <= 6 (midlevel dominance)
- word length: 4 <= word length <= 6 (target and distractor should be within 2 letters of each other, and neither too short nor too long)

Of the determined 38 stimuli, Millisecond selected the 16 words with a valence closest to 5:

Mean Valence: 5.01
Mean Arousal: 4.64
Mean Dominance: 4.90
Mean word length: 5.13


/////////////////////
////Negative items:
/////////////////////
- valence rating <= 3.5
- arousal rating: 4 <= arousal <= 6 (midlevel arousal)
- dominance rating: 4 <= arousal <= 6 (midlevel dominance)
- word length: 4 <= word length <= 6 (target and distractor should be within 2 letters of each other, and neither too short nor too long)

Of the determined 39 stimuli, Millisecond selected the 32 with the lowest valence rating:

Mean Valence: 2.73
Mean Arousal: 5.02
Mean Dominance: 4.42
Mean word length: 5.38

/////////////////////
////Practice items:
/////////////////////
The 7 positive and negative practice items were chosen from the pool
of 'rejected' positive and negative items :)


*Note: stimuli generation in Joorman & Gotlib (2010, p.5)
___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________

provided by Millisecond Software - 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:

//////////// exp design elements
/ numberOfBlocks = 5				//number of test blocks to run
/ numberTTrialsPerBlock = 32		//number of TTrials run per block
									//should be a multiple of 16 
									//Note: if there are 32 TTrials in a block, there are also 32 PTrials 
									//in a block (so from a participant's perspective there are 64 test trials)!

/ ratioFillerToTTrial = 0.5			//script adds an additional (0.5*TTrials) number of filler trials to each block
									//by default: 0.5*32 = 16 filler trials (filler trials are single trials not double ones!)
									//for a total of 32 TTrials per block there will be: 32 PTrials + 32 TTrials + 16 filler trials = 80 single trials from participant perspective)
											
/ targetColor = blue				//the color of the target words (require a response)
/ distractorColor = red				//the color of the distractor words (should be ignored)

//latency outlier removal
/ minLatency = 300					//the minimum acceptable response time (in ms)
/ maxLatency = 2000					//the maximum acceptable response time (in ms)

////////////////sizing and position parameters
/ wordHeightPct = 8%				//the relative height of the words (relative to canvas height)

//positions: the percent vertical active canvas position (top = 0 -> bottom = 100%)
/ topY = 35%						//top canvas position
/ bottomY = 65%						//bottom canvas position

/////////////////timing parameters
/ getreadyDuration = 3000			//the duration (in ms) of the get-ready trial
/ fixationDurationMS = 500			//the duration (in ms) of the fixation cross

//////////////////responseKeys:
/ leftResponseKey = "A"				//the assigned left response key (left side on QWERTY keyboard)
/ rightResponseKey = "L"			//the assigned right response key (right side on QWERTY keyboard)
/ positiveResponseKey = parameters.rightResponseKey
/ negativeResponseKey = parameters.leftResponseKey