'Me-not Me' Reaction Time Task SCRIPT INFO Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC Date: 09-20-2017 last updated: 02-14-2018 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC Script Copyright © 02-14-2018 Millisecond Software BACKGROUND INFO *Purpose* This script implements a computerized version of the the 'Me-not me' reaction time task similarly to the one described in: Aron, A, Tudor, M, Aron, E, & Nelson, G. (1991). Close relationships as including other in the self. Journal of Personality and Social Psychology, 60(Feb 91), 241-253. Slotter, E.B. ; Gardner, W.L. & Simpson, J. (2009). Where Do You End and I Begin? Evidence for Anticipatory, Motivated Self–Other Integration Between Relationship Partners. Journal of Personality and Social Psychology, Vol.96(6), pp.1137-1151 *Task* Participants are presented a series of trait descriptors, one at a time in the middle of the screen, and are asked to sort the traits as fast as possible via a keypress into category 'me' (-> applies to me a lot) or 'not me' (-> doesn't really apply to me). DATA FILE INFORMATION: The default data stored in the data files are: (1) Raw data file: 'menotme_raw*.iqdat' (a separate file for each participant)* build: Inquisit build computer.platform: the platform the script was run on date, time, subject, group: date and time script was run with the current subject/groupnumber blockcode, blocknum: the name and number of the current block trialcode, trialnum: the name and number of the currently recorded trial (Note: not all trials that are run might record data; by default data is collected unless /recorddata = false is set for a particular trial/block) /countCategorizationBlocks: running total of all test categorization blocks /countCategorizationTrials: running total of the trials within each categorization block stimulusitem: the presented stimuli in order of trial presentation /valence: valence of the presented trait: "positive" vs. "negative" vs. "neutral" response: scancode of the selected response key (e.g. 18 = E; 23 = I) /response: response category selected: "me" vs. "not me" latency: the response latency (in ms); measured from: (2) Summary data file: 'menotme_summary*.iqdat' (a separate file for each participant)* script.startdate: date script was run script.starttime: time script was started script.subjectid: subject id number script.groupid: group id number script.elapsedtime: time it took to run script (in ms) computer.platform: the platform the script was run on /completed: 0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run) /meanRT_me: mean latency (in ms) of 'me' categorization across all trait words /meanRT_notme: mean latency (in ms) of 'notme' categorization across all trait words /meanRT_me_positive: mean latency (in ms) of 'me' categorization across all positive trait words /meanRT_me_negative: mean latency (in ms) of 'me' categorization across all negative trait words /meanRT_me_neutral: mean latency (in ms) of 'me' categorization across all neutral trait words /meanRT_notme_positive: mean latency (in ms) of 'not me' categorization across all positive trait words /meanRT_notme_negative: mean latency (in ms) of 'not me' categorization across all negative trait words /meanRT_notme_neutral: mean latency (in ms) of 'not me' categorization across all neutral trait words * separate data files: to change to one data file for all participants (on Inquisit Lab only), go to section "DATA" and follow further instructions EXPERIMENTAL SET-UP (1) Practice Block: 5 practice traits are presented to practice the procedure The practice block turns into the test block without further instructions (2) Test Block: * by default the test blocks runs once (see editable parameters.nrCategorizationBlocks) * by default, each test block runs 45 items (15 positively valenced descriptors, 15 neutral descriptors, 15 negatively valenced descriptors) => number of traits presented adapts automatically to the number of traits listed under item.traits (see section Editable Stimuli) * order of traits is selected randomly Trial Sequence: trait presented until categorization response -> ITI (default:1000ms) STIMULI trait words for this script were selected from: Anderson, N. H. (1968). Likableness ratings of 555 personality-trait words. Journal of Personality and Social Psychology. 9, 272-279. Positive Traits: likeability score > 450 Neutral Traits: 350 > likeability score > 250 Negative Traits: 150 > likeability score (the likeability scores of the default practice traits in this script fall outside these ranges) The traits can easily be adapted under section Editable Stimuli. 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: /leftKey: the scancode of the left response key /leftKey_label: the label of the left response key (here: E) /rightKey: the scancode of the right response key /rightKey_label: the label of the right response key (here: I) Note: scancodes under 'Tools -> keyboard scancodes' /leftcategory: 1 = category 'me'; 2 = category 'not me' (left category is assigned 'me' category) /leftcategory_label: label of left category ('me') /rightcategory: 1 = category 'me'; 2 = category 'not me' (right category is assigned 'not me' category) /rightcategory_label: label of right category ('not me') /traitSize: size of trait descriptor proportional to canvas height (default: 8%) /iti: intertrial duration (in ms) (default: 1000ms) /readyDuration: duration (in ms) of the 'get ready' trial (default: 5000ms) /nrCategorizationBlocks: number of times the categorization blocks runs (default: 1) ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** /leftKey = 18 /leftKey_label = "E" /rightKey = 23 /rightKey_label = "I" /leftcategory = 1 /leftcategory_label = "me" /rightcategory = 2 /rightcategory_label = "not me" /traitSize = 8% /iti = 1000 /readyDuration = 5000 /nrCategorizationBlocks = 1 ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** Anderson (1968): 1-15: trait word ratings > 450 (positive) 16-30: 350 < trait word ratings < 250 (neutral) 31-45: 150 > trait word ratings (negative) !script automatically adapts trials to number of items !If the traits are edited, make sure to change item.traitvalences (below) accordingly (if of interest) /1 = "sincere" /2 = "reliable" /3 = "open-minded" /4 = "cheerful" /5 = "tactful" /6 = "energetic" /7 = "polite" /8 = "efficient" /9 = "cooperative" /10 = "patient" /11 = "courageous" /12 = "observant" /13 = "creative" /14 = "helpful" /15 = "humorous" /16 = "outspoken" /17 = "perfectionistic" /18 = "reserved" /19 = "bold" /20 = "suave" /21 = "cautious" /22 = "shrewd" /23 = "impulsive" /24 = "emotional" /25 = "conservative" /26 = "skeptical" /27 = "eccentric" /28 = "opinionated" /29 = "naive" /30 = "unpredictable" /31 = "deceitful" /32 = "conceited" /33 = "selfish" /34 = "intolerant" /35 = "humorless" /36 = "careless" /37 = "irrational" /38 = "unreliable" /39 = "aimless" /40 = "superficial" /41 = "jealous" /42 = "nosey" /43 = "hostile" /44 = "lazy" /45 = "distrustful" /1 = "positive" /2 = "positive" /3 = "positive" /4 = "positive" /5 = "positive" /6 = "positive" /7 = "positive" /8 = "positive" /9 = "positive" /10 = "positive" /11 = "positive" /12 = "positive" /13 = "positive" /14 = "positive" /15 = "positive" /16 = "neutral" /17 = "neutral" /18 = "neutral" /19 = "neutral" /20 = "neutral" /21 = "neutral" /22 = "neutral" /23 = "neutral" /24 = "neutral" /25 = "neutral" /26 = "neutral" /27 = "neutral" /28 = "neutral" /29 = "neutral" /30 = "neutral" /31 = "negative" /32 = "negative" /33 = "negative" /34 = "negative" /35 = "negative" /36 = "negative" /37 = "negative" /38 = "negative" /39 = "negative" /40 = "negative" /41 = "negative" /42 = "negative" /43 = "negative" /44 = "negative" /45 = "negative" /1 = "diligent" /2 = "charming" /3 = "idealistic" /4 = "sentimental" /5 = "cynical" ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / txcolor = black / screencolor = white / windowsize = (100%, 100%) Thank you! / 1 = "Words describing traits will appear one by one in the middle of the screen. Sort these traits into the two categories at the top: If a trait applies to you a lot, press the '<%values.meKey_label%>' button (for 'me'). Otherwise, press the '<%values.notmeKey_label%>' button (for 'not me'). This is a timed sorting task. GO AS FAST AS YOU CAN. Press to start the sorting task." ******************************* General Helper Instructions ****************************** / items = ("Get Ready: ~n<%expressions.buttoninstruct1%>") / fontstyle = ("Arial", 3.00%, false, false, false, false, 5, 1) / size = (80%, 40%) **************************************************************************************************** general instruction expressions: adjust the instruction text depending on device used to run script **************************************************************************************************** /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) { "Place your index fingers over the '<%values.meKey_label%>' and <%values.notmeKey_label%> buttons";} else { "Put your index fingers on the on '<%values.meKey_label%>' and '<%values.notmeKey_label%>' keys on your keyboard";} ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 5.0.7.0 or higher /canvasaspectratio = (4,3) /minimumversion = "5.0.7.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = white / txcolor = black / screencolor = white ************************************************************************************************************** ************************************************************************************************************** DATA ************************************************************************************************************** ************************************************************************************************************** Note: data file explanations under User Manual Information at the top To change from one data file per participant to one data file for all participants, set /separatefiles = false *********************** raw data file *********************** / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, blockcode, blocknum, trialcode, trialnum, values.countCategorizationBlocks, values.countCategorizationTrials, stimulusitem, values.valence, response, values.response, latency) *********************** summary data file *********************** /columns = (script.startdate, script.starttime, script.subjectid, script.groupid, script.elapsedtime, computer.platform, values.completed, expressions.meanRT_me, expressions.meanRT_notme, expressions.meanRT_me_positive, expressions.meanRT_me_negative, expressions.meanRT_me_neutral, expressions.meanRT_notme_positive, expressions.meanRT_notme_negative, expressions.meanRT_notme_neutral) / separatefiles = true ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /completed: 0 = script was not completed; 1 = script was completed (all conditions run) /countCategorizationTrials: running total of the trials within each categorization block /countCategorizationBlocks: running total of all test categorization blocks /response: response category selected: "me" vs. "not me" /valence: valence of the presented trait: "positive" vs. "negative" vs. "neutral" /meKey: helper variable: stores scancode of 'me' key /meKey_Label: helper variable: stores label of 'me' key /notmeKey: helper variable: stores scancode of 'not me' key /notmeKey_Label: helper variable: stores label of 'not me' key /skipIntro: true (1) = the intro and practice trials are skipped false (0) = the intro and practice trials are run /completed = 0 /countCategorizationTrials = 0 /countCategorizationBlocks = 0 /response = "" /valence = "" /meKey = 0 /meKey_Label = "" /notmeKey = 0 /notmeKey_Label = "" /skipIntro = 0 ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /meanRT_me: mean latency (in ms) of 'me' categorization across all trait words /meanRT_notme: mean latency (in ms) of 'notme' categorization across all trait words /meanRT_me_positive: mean latency (in ms) of 'me' categorization across all positive trait words /meanRT_me_negative: mean latency (in ms) of 'me' categorization across all negative trait words /meanRT_me_neutral: mean latency (in ms) of 'me' categorization across all neutral trait words /meanRT_notme_positive: mean latency (in ms) of 'not me' categorization across all positive trait words /meanRT_notme_negative: mean latency (in ms) of 'not me' categorization across all negative trait words /meanRT_notme_neutral: mean latency (in ms) of 'not me' categorization across all neutral trait words /meanRT_me = list.latencies_me.mean /meanRT_notme = list.latencies_notme.mean /meanRT_me_positive = list.latencies_me_pos.mean /meanRT_me_negative = list.latencies_me_neg.mean /meanRT_me_neutral = list.latencies_me_neu.mean /meanRT_notme_positive = list.latencies_notme_pos.mean /meanRT_notme_negative = list.latencies_notme_neg.mean /meanRT_notme_neutral = list.latencies_notme_neu.mean ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** / items = instructions / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 50%) / vjustify = center / hjustify = left / size = (80%, 50%) / skip = [ values.skipIntro == 1; ] / stimulusframes = [1 = instructions] / validresponse = (57) / recorddata = false ************************************* General Helper Instruction Trials/Blocks ************************************* This trial is used when participants are asked to place their fingers on specific response buttons. On the touchscreen, this trial presents the (inactive) response buttons to the participants. / skip = [ values.skipIntro == 1; ] / stimulusframes = [1 = getReady] / trialduration = parameters.readyDuration / validresponse = (parameters.leftKey, parameters.rightKey) / beginresponsetime = parameters.readyDuration / errormessage = false / recorddata = false / posttrialpause = 500 ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** / items = traits / select = noreplace / fontstyle = ("Arial", parameters.traitSize, false, false, false, false, 5, 1) / position = (50%, 50%) / vjustify = center / hjustify = center / size = (80%, parameters.traitSize*1.5) / items = practiceTraits / select = noreplace / fontstyle = ("Arial", parameters.traitSize, false, false, false, false, 5, 1) / position = (50%, 50%) / vjustify = center / hjustify = center / size = (80%, parameters.traitSize*1.5) /1 = "<%parameters.leftcategory_label%>" /2 = "<%parameters.rightcategory_label%>" / items = anchors / select = 1 / select = noreplace / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / position = (20%, 10%) / vjustify = center / hjustify = center / size = (20%, 5%) / txcolor = blue / items = anchors / select = 2 / select = noreplace / fontstyle = ("Arial", 5%, false, false, false, false, 5, 1) / position = (80%, 10%) / vjustify = center / hjustify = center / size = (20%, 5%) / txcolor = blue ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial Note: list stores the latency of correct responses for each relevant trial ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** / skip = [ values.skipIntro == 1; ] / stimulustimes = [0 = practiceTrait] / validresponse = (values.meKey, values.notmeKey) / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ if (trial.categorizationPractice.response == values.meKey){ values.response = "me"; } else { values.response = "not me"; }; ] / branch = [ if (trial.categorizationPractice.trialcount < item.practiceTraits.itemcount){ trial.categorizationPractice; }; ] / posttrialpause = parameters.iti / ontrialbegin = [ values.countCategorizationTrials += 1; ] / stimulustimes = [0 = trait] / validresponse = (values.meKey, values.notmeKey) / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ values.valence = item.traitvalences.item(text.trait.currentitemnumber); if (trial.categorization.response == values.meKey){ list.latencies_me.appenditem(trial.categorization.latency); values.response = "me"; if (values.valence == "positive"){ list.latencies_me_pos.appenditem(trial.categorization.latency); } else if (values.valence == "negative"){ list.latencies_me_neg.appenditem(trial.categorization.latency); } else { list.latencies_me_neu.appenditem(trial.categorization.latency); }; } else { list.latencies_notme.appenditem(trial.categorization.latency); values.response = "not me"; if (values.valence == "positive"){ list.latencies_notme_pos.appenditem(trial.categorization.latency); } else if (values.valence == "negative"){ list.latencies_notme_neg.appenditem(trial.categorization.latency); } else { list.latencies_notme_neu.appenditem(trial.categorization.latency); }; }; ] / branch = [ if (values.countCategorizationTrials < item.traits.itemcount){ trial.categorization; }; ] / posttrialpause = parameters.iti ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** / bgstim = (left, right) / onblockbegin = [ values.countCategorizationBlocks += 1; values.countCategorizationTrials = 0; ] / trials = [1 = instructions; 2 = getReady; 3 = categorizationPractice; 4 = categorization] / onblockend = [ values.skipIntro = 1; ] / branch = [ if (values.countCategorizationBlocks < parameters.nrCategorizationBlocks){ block.meCategorization; }; ] ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** / onexptbegin = [ if (parameters.leftcategory == 1){ values.meKey = parameters.leftKey; values.meKey_Label = parameters.leftKey_label; values.notmeKey = parameters.rightKey; values.notmeKey_Label = parameters.rightKey_label; } else { values.meKey = parameters.rightKey; values.meKey_Label = parameters.rightKey_label; values.notmeKey = parameters.leftKey; values.notmeKey_Label = parameters.leftKey_label; }; ] / blocks = [ 1 = meCategorization; ] / onexptend = [ values.completed = 1; ] / postinstructions = (end) ************************************************************************************************************** End of File **************************************************************************************************************