Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+xPlease do not paste entire scrrpts into a post's body. This is error-prone and difficult to work with. Please also don't attach each and every individual file separately. Instead, please put everything -- the script and any files such as images that the script requires --- in a ZIP archive and attach the archive. Thanks. Explain the reasoning behind your /branch logic in the various practice <block> elements. It makes no sense to me on its face. For example, what is <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block>
<block repeatPractice> / trials = [1=repeatPractice] / branch = [ if (values.practice2WRuns > 0) { return block.practice2W; } else { return block.practice1; }; ] </block> supposed to do exactly and why? If performance in <block practice1> was inadequate, you /branch to <block repeatPractice>. So far, so good. But why should <block repeatPractice> ever have to then /branch to an entirely different block <block practice2W>? If you land in <block repeatPractice>, you always want to return to <block practice1>, that is the one that was failed. If performance in <block practice1> is adequate, then no /branch to <block repeatPractice> occurs and that is exactly what you should want to happen. The script then moves on to the next block specified in the <expt>'s /blocks, which is <block practice2WIntro>. <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; </expt> Hi Dave, about this: <block repeatPractice> / trials = [1=repeatPractice] / branch = [ if (values.practice2WRuns > 0) { return block.practice2W; } else { return block.practice1; }; ] </block>Actually, I don't know why this branch. It was already in script and I just change logically the names of the blocks, trying to have a logical stream of what I desire to have. I was hoping to have a good stream of info in the script doing like this, but I didn't know if Iwas on the right way or not. In my innocent way to face this problem, I thought that this part of the branch '[ if (values.practice2WRuns > 0) { return block.practice2W;} else {return block.practice1;};]' would say to me that if practice runs of practice2W would be >0, I will be omved to the next practice block, otherwise I would have been moved back to the former practice block. acutally, I don't knw if it's right or not. No. The progression from one type of practice block to another is coded in your <expt> element's /blocks. <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> You do not need or want conditional branching to advance from one type to another. All you need branching for is to repeat the current type of practice block if it was failed. <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block>
<block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] // makes no sense // branch = [ // if (values.practice2WRuns > 0) { // return block.practice2W; // } else { // return block.practice1; // }; //] </block>
[...]
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] // makes no sense // branch = [ // if (values.practice2WRuns > 0) { // return block.practice2F; // } else { // return block.practice2W; // }; //] </block>
[...]
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] // makes no sense // branch = [ // if (values.practice2FRuns > 0) { // return block.testStart; // } else { // return block.practice2F; // }; //] </block> It is running. Thank you very much! But I have a new problem. I have this code for the trials in every test block, and I would like that every block has its passages, as instructions, etc. I put the trials in each block to do that as a sequence. Then, in 'exp' I put the list of the blocks to be run. <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block>
<block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>
*******************
<expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt>
<monkey> / latencydistribution = normal(5
I have a question and two help requests. The question is: How come that I do not have the instructions of the 'testEF' block after the 'testEW' block? Help requests are: 1. Then, I would like that each practice block run with its test block- 'practice2WIntro' and 'practice2W' with 'testEW' - 'practice2FIntro' and 'practice2F' with 'testEF'.
2. I would like that this packages of blocks are radomly selected. I'm sorry because I am not good and used to scripts and I'm annoying you for every little issue. Big thanks again beforehand! First, code snippets are not useful. I don't have the current state of the code from you, all I have is outdated code you posted here previously. In other words, I have no idea what you are referrng to with > I have this code for the trials in every test block, and I would like that every block has its passages, as instructions, etc. > I put the trials in each block to do that as a sequence. and what you mean by "passages", which is not a term that has any meaning in Inquisit. Provide the current code and *clear* descriptions. Second, please decide how you want things to work before asking questions You implemented a fixed practice block progression and asked questions about doing that, which I answered, but now you want something else entirely. This is not an efficient process, so please make final decisions and then I'll be happy to answer further questions.
|
|
|
Igor Iarrobino
|
|
Group: Forum Members
Posts: 19,
Visits: 50
|
Sorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf
|
|
|
Igor Iarrobino
|
|
Group: Forum Members
Posts: 19,
Visits: 50
|
+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done. Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htmVideos stop upon response by default.
|
|
|
Igor Iarrobino
|
|
Group: Forum Members
Posts: 19,
Visits: 50
|
+x+x+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done. Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htmVideos stop upon response by default. Dear Dave, thank you for your answer and tips. I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!But I won't bother you about my work stress anymore. If you can suggest a script to be easily modified, I would be extremely glad! Otherwise, I thank you a lot again for your help so far. Have a nice day
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done. Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htmVideos stop upon response by default. Dear Dave, thank you for your answer and tips. I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!But I won't bother you about my work stress anymore. If you can suggest a script to be easily modified, I would be extremely glad! Otherwise, I thank you a lot again for your help so far. Have a nice day You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need.
|
|
|
Igor Iarrobino
|
|
Group: Forum Members
Posts: 19,
Visits: 50
|
+x+x+x+x+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done. Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htmVideos stop upon response by default. Dear Dave, thank you for your answer and tips. I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!But I won't bother you about my work stress anymore. If you can suggest a script to be easily modified, I would be extremely glad! Otherwise, I thank you a lot again for your help so far. Have a nice day You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need. Hello Dave, I found something to modify and I did it. Actually, I have some problems, as always. I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli. Stimuli are videos of morphed emotional faces of 3 kinds. I modified the script this way: Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber. Could you check this before please? Thank you.Then, I tried to insert a list of stimuli for each block to be run in random order. Could you check also this please? Thank you.At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash. Could you check also this please? Thank you.If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding! Finger crossed!! Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder): https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ EMOTIONAL MORPHING ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024. Script Copyright © 02-17-2022 Millisecond Software ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ The set-up of the script takes appr. 10 minutes to complete Note: the test can easily be aborted by pressing "Ctrl+Alt+A" __________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'simplereactiontime_cogdras_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, group: with the current subject/groupnumber 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. stimulusitem: the presented stimuli in order of trial presentation response: the participant's response (scancode of response buttons) latency: the response latency (in ms); measured from: onset of videoclip iti: the intertrial interval (in ms) run at the end of the current trial (2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)* inquisit.version: the Inquisit build/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) 011_RT; 100DIS; 100APP: the mean response time (in ms) in the 3 blocks (measured from onset of videos in the center of the screen) * 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. 3 Test blocks: - 20 trials - 24 trials - 24 trials Trial sequence: - videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip.... ___________________________________________________________________________________________________________________ STIMULI ___________________________________________________________________________________________________________________ ADFES videoclip and morphed mixed emotions made ad-hoc _________________________________________________________________________________________________________________ INSTRUCTIONS ___________________________________________________________________________________________________________________ provided by Millisecond Software - edited by IGOR IARROBINO ___________________________________________________________________________________________________________________ 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: </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** <parameters> /spacekey = "C" /rightkey = "P" //the space-response key (here: SPACEBAR) /responsekey = parameters.spacekey //the assignment of space to responsekey (here SPACEBAR) /nokey = parameters.rightkey </parameters> <expressions> /iti = rand(1000, 1500) //selects the intertrial interval randomly somewhere from 1000 to 2500ms </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** <list practice0100_itemnumbers> / items = (1, 2, 3, 4, 5) / replace = false / resetinterval = 0 </list> <item practicevideo_0100> /1="Anger.1.mp4" /2="Disgust.2.mp4" /3="Fear.3.mp4" /4="Happy.4.mp4" /5="Sad.1.mp4" </item> <video practicevideo_0100> /items = item.practicevideo_0100 / position = (50%, 50%) / size = (80%, 80%) </video> <list practice100DIS_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item practicevideo_100DIS> /1="A DIS.1.mp4" /2="A DIS.8.mp4" /3="D DIS.2.mp4" /4="D DIS.7.mp4" /5="F DIS.3.mp4" /6="F DIS.6.mp4" </item> <video practicevideo_100DIS> /items = item.practicevideo_100DIS / position = (50%, 50%) / size = (80%, 80%) </video> <list practice100APP_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item practicevideo_100APP> /1="A APP.4.mp4" /2="A APP.5.mp4" /3="D APP.1.mp4" /4="D APP.8.mp4" /5="F APP.2.mp4" /6="F APP.7.mp4" </item> <video practicevideo_100APP> /items = item.practicevideo_100APP / position = (50%, 50%) / size = (80%, 80%) </video> //main stimulus that appreas in the middle of the screen <list 0100_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) / replace = false / resetinterval = 0 </list> <item video_0100> /1="Anger.1.mp4" /2="Anger.2.mp4" /3="Anger.3.mp4" /4="Anger.4.mp4" /5="Disgust.1.mp4" /6="Disgust.2.mp4" /7="Disgust.3.mp4" /8="Disgust.4.mp4" /9="Fear.1.mp4" /10="Fear.2.mp4" /11="Fear.3.mp4" /12="Fear.4.mp4" /13="Happy.1.mp4" /14="Happy.2.mp4" /15="Happy.3.mp4" /16="Happy.4.mp4" /17="Sad.1.mp4" /18="Sad.2.mp4" /19="Sad.3.mp4" /20="Sad.4.mp4" </item> <video video_0100> /items = item.video_0100 / position = (50%, 50%) / size = (80%, 80%) </video> <list 100DIS_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item video_100DIS> /1="A DIS.1.mp4" /2="A DIS.2.mp4" /3="A DIS.3.mp4" /4="A DIS.4.mp4" /5="A DIS.5.mp4" /6="A DIS.6.mp4" /7="A DIS.7.mp4" /8="A DIS.8.mp4" /9="D DIS.1.mp4" /10="D DIS.2.mp4" /11="D DIS.3.mp4" /12="D DIS.4.mp4" /13="D DIS.5.mp4" /14="D DIS.6.mp4" /15="D DIS.7.mp4" /16="D DIS.8.mp4" /17="F DIS.1.mp4" /18="F DIS.2.mp4" /19="F DIS.3.mp4" /20="F DIS.4.mp4" /21="F DIS.5.mp4" /22="F DIS.6.mp4" /23="F DIS.7.mp4" /24="F DIS.8.mp4" </item> <video video_100DIS> /items = item.video_100DIS / position = (50%, 50%) / size = (80%, 80%) </video> <list 100APP_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item video_100APP> /1="A APP.1.mp4" /2="A APP.2.mp4" /3="A APP.3.mp4" /4="A APP.4.mp4" /5="A APP.5.mp4" /6="A APP.6.mp4" /7="A APP.7.mp4" /8="A APP.8.mp4" /9="D APP.1.mp4" /10="D APP.2.mp4" /11="D APP.3.mp4" /12="D APP.4.mp4" /13="D APP.5.mp4" /14="D APP.6.mp4" /15="D APP.7.mp4" /16="D APP.8.mp4" /17="F APP.1.mp4" /18="F APP.2.mp4" /19="F APP.3.mp4" /20="F APP.4.mp4" /21="F APP.5.mp4" /22="F APP.6.mp4" /23="F APP.7.mp4" /24="F APP.8.mp4" </item> <video video_100APP> /items = item.video_100APP / position = (50%, 50%) / size = (80%, 80%) </video> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> </instruct> <text header> / items = ("MORPHING") / voiceover = false / position = (50%, 10%) / size = (80%, 10%) / vjustify = center / fontstyle = ("Arial", 6%, true, false, false, false, 5, 1) </text> <text intro0100> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena. Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text intro100DIS> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione. Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text intro100APP> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione. Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text continue> / items = ("<%expressions.continueInstructions%>") / position = (50%, 95%) / size = (45%, 5%) / vjustify = center / fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1) / txbgcolor = black / txcolor = white / erase = false </text> <expressions> /continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare." </expressions> <text start> / items = ("Prema '<%parameters.responsekey%>' per iniziare.") / position = (50%, 95%) / size = (40%, 5%) / vjustify = center / fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1) / txbgcolor = black / txcolor = white / erase = false </text> <text getReadyInstructions> / items = ("Pronti: <%expressions.readyInstruct%>") / fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1) / position = (50%, 50%) / size = (80%, 40%) / vjustify = center / voiceover = false </text> <expressions> /readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera." </expressions> <text finish> / items = ("Grazie per aver partecipato all'esperimento!") / voiceover = false / fontstyle = ("Arial", 10%, true, false, false, false, 5, 1) / position = (50%, 50%) / size = (80%, 10%) / vjustify = center / valign = center / halign = center </text> <text exit> / items = ("<%expressions.continueInstructions%>") / voiceover = false / fontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / position = (50%, 95%) / size = (40%, 5%) / vjustify = center / valign = center / halign = center / txbgcolor = black / txcolor = white </text> ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = lightGray / txcolor = black / screencolor = lightGray / inputdevice = keyboard / quitcommand = (Ctrl+Alt+30) </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startDate, script.startTime, script.subjectId, script.groupId, script.sessionId, script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT) </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** <values> /countTrials = 0 /ITI = "" /0100_RT = "" /100DIS_RT = "" /100APP_RT = "" </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** <expressions> /0100_RT = list.RT0100.mean /100DIS_RT = list.RT100DIS.mean /100APP_RT = list.RT100APP.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <trial intro0100> / stimulusframes = [1 = header, intro0100, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> <trial intro100DIS> / stimulusframes = [1 = header, intro100DIS, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> <trial intro100APP> / stimulusframes = [1 = header, intro100APP, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> This trial is used when participants are asked to place their fingers on specific response buttons. <trial getReady> / stimulusframes = [1 = clearScreen, getReadyInstructions, start] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false / posttrialpause = expressions.iti // responsemessage = (parameters.leftkey, clearScreen, 0) </trial> <trial finish> / stimulusframes = [1 = clearScreen, finish] / recorddata = false / timeout = 250 </trial> ************************************************************************************************************** ************************************************************************************************************** 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 <list practiceRT0100> </list> <list RT0100> </list> <list practiceRT100DIS> </list> <list RT100DIS> </list> <list practiceRT100APP> </list> <list RT100APP> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** <trial practice0100> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_0100] / validresponse = (parameters.spacekey,parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT0100.appendItem(trial.practice0100.latency) ] </trial> <trial 0100> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_0100] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT0100.appendItem(trial.0100.latency) ] </trial> <trial practice100DIS> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_100DIS] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT100DIS.appendItem(trial.practice100DIS.latency) ] </trial> <trial 100DIS> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_100DIS] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT100DIS.appendItem(trial.100DIS.latency) ] </trial> <trial practice100APP> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_100APP] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT100APP.appendItem(trial.practice100APP.latency) ] </trial> <trial 100APP> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_100APP] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT100APP.appendItem(trial.100APP.latency) ] </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block practice0100> / trials = [ 1 = intro0100; 2 = getReady; 3-7 = practice0100; ] / branch = [ return block.0100; ] </block> <block 0100> / trials = [ 1 = intro0100; 2 = getReady; 3-22 = 0100; ] </block> <block practice100DIS> / trials = [ 1 = intro100DIS; 2 = getReady; 3-8 = practice100DIS; ] / branch = [ return block.100DIS; ] </block> <block 100DIS> / trials = [ 1 = intro100DIS; 2 = getReady; 3-26 = 100DIS; ] </block> <block practice100APP> / trials = [ 1 = intro100APP; 2 = getReady; 3-8 = practice100APP; ] / branch = [ return block.100APP; ] </block> <block 100APP> / trials = [ 1 = intro100APP; 2 = getReady; 3-26 = 100APP; ] </block> <block finish> / trials = [ 1 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / blocks = [ 1 = noreplace(practice0100, practice100DIS, practice100APP ); 2 = finish; ] / onexptend = [ values.0100_RT = expressions.0100_RT; values.100DIS_RT = expressions.100DIS_RT; values.100APP_RT = expressions.100APP_RT; ] </expt> ************************************************************************************************************** End of File **************************************************************************************************************
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done. Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htmVideos stop upon response by default. Dear Dave, thank you for your answer and tips. I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!But I won't bother you about my work stress anymore. If you can suggest a script to be easily modified, I would be extremely glad! Otherwise, I thank you a lot again for your help so far. Have a nice day You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need. Hello Dave, I found something to modify and I did it. Actually, I have some problems, as always. I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli. Stimuli are videos of morphed emotional faces of 3 kinds. I modified the script this way: Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber. Could you check this before please? Thank you.Then, I tried to insert a list of stimuli for each block to be run in random order. Could you check also this please? Thank you.At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash. Could you check also this please? Thank you.If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding! Finger crossed!! Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder): https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ EMOTIONAL MORPHING ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024. Script Copyright © 02-17-2022 Millisecond Software ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ The set-up of the script takes appr. 10 minutes to complete Note: the test can easily be aborted by pressing "Ctrl+Alt+A" __________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'simplereactiontime_cogdras_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, group: with the current subject/groupnumber 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. stimulusitem: the presented stimuli in order of trial presentation response: the participant's response (scancode of response buttons) latency: the response latency (in ms); measured from: onset of videoclip iti: the intertrial interval (in ms) run at the end of the current trial (2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)* inquisit.version: the Inquisit build/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) 011_RT; 100DIS; 100APP: the mean response time (in ms) in the 3 blocks (measured from onset of videos in the center of the screen) * 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. 3 Test blocks: - 20 trials - 24 trials - 24 trials Trial sequence: - videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip.... ___________________________________________________________________________________________________________________ STIMULI ___________________________________________________________________________________________________________________ ADFES videoclip and morphed mixed emotions made ad-hoc _________________________________________________________________________________________________________________ INSTRUCTIONS ___________________________________________________________________________________________________________________ provided by Millisecond Software - edited by IGOR IARROBINO ___________________________________________________________________________________________________________________ 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: </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** <parameters> /spacekey = "C" /rightkey = "P" //the space-response key (here: SPACEBAR) /responsekey = parameters.spacekey //the assignment of space to responsekey (here SPACEBAR) /nokey = parameters.rightkey </parameters> <expressions> /iti = rand(1000, 1500) //selects the intertrial interval randomly somewhere from 1000 to 2500ms </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** <list practice0100_itemnumbers> / items = (1, 2, 3, 4, 5) / replace = false / resetinterval = 0 </list> <item practicevideo_0100> /1="Anger.1.mp4" /2="Disgust.2.mp4" /3="Fear.3.mp4" /4="Happy.4.mp4" /5="Sad.1.mp4" </item> <video practicevideo_0100> /items = item.practicevideo_0100 / position = (50%, 50%) / size = (80%, 80%) </video> <list practice100DIS_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item practicevideo_100DIS> /1="A DIS.1.mp4" /2="A DIS.8.mp4" /3="D DIS.2.mp4" /4="D DIS.7.mp4" /5="F DIS.3.mp4" /6="F DIS.6.mp4" </item> <video practicevideo_100DIS> /items = item.practicevideo_100DIS / position = (50%, 50%) / size = (80%, 80%) </video> <list practice100APP_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item practicevideo_100APP> /1="A APP.4.mp4" /2="A APP.5.mp4" /3="D APP.1.mp4" /4="D APP.8.mp4" /5="F APP.2.mp4" /6="F APP.7.mp4" </item> <video practicevideo_100APP> /items = item.practicevideo_100APP / position = (50%, 50%) / size = (80%, 80%) </video> //main stimulus that appreas in the middle of the screen <list 0100_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) / replace = false / resetinterval = 0 </list> <item video_0100> /1="Anger.1.mp4" /2="Anger.2.mp4" /3="Anger.3.mp4" /4="Anger.4.mp4" /5="Disgust.1.mp4" /6="Disgust.2.mp4" /7="Disgust.3.mp4" /8="Disgust.4.mp4" /9="Fear.1.mp4" /10="Fear.2.mp4" /11="Fear.3.mp4" /12="Fear.4.mp4" /13="Happy.1.mp4" /14="Happy.2.mp4" /15="Happy.3.mp4" /16="Happy.4.mp4" /17="Sad.1.mp4" /18="Sad.2.mp4" /19="Sad.3.mp4" /20="Sad.4.mp4" </item> <video video_0100> /items = item.video_0100 / position = (50%, 50%) / size = (80%, 80%) </video> <list 100DIS_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item video_100DIS> /1="A DIS.1.mp4" /2="A DIS.2.mp4" /3="A DIS.3.mp4" /4="A DIS.4.mp4" /5="A DIS.5.mp4" /6="A DIS.6.mp4" /7="A DIS.7.mp4" /8="A DIS.8.mp4" /9="D DIS.1.mp4" /10="D DIS.2.mp4" /11="D DIS.3.mp4" /12="D DIS.4.mp4" /13="D DIS.5.mp4" /14="D DIS.6.mp4" /15="D DIS.7.mp4" /16="D DIS.8.mp4" /17="F DIS.1.mp4" /18="F DIS.2.mp4" /19="F DIS.3.mp4" /20="F DIS.4.mp4" /21="F DIS.5.mp4" /22="F DIS.6.mp4" /23="F DIS.7.mp4" /24="F DIS.8.mp4" </item> <video video_100DIS> /items = item.video_100DIS / position = (50%, 50%) / size = (80%, 80%) </video> <list 100APP_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item video_100APP> /1="A APP.1.mp4" /2="A APP.2.mp4" /3="A APP.3.mp4" /4="A APP.4.mp4" /5="A APP.5.mp4" /6="A APP.6.mp4" /7="A APP.7.mp4" /8="A APP.8.mp4" /9="D APP.1.mp4" /10="D APP.2.mp4" /11="D APP.3.mp4" /12="D APP.4.mp4" /13="D APP.5.mp4" /14="D APP.6.mp4" /15="D APP.7.mp4" /16="D APP.8.mp4" /17="F APP.1.mp4" /18="F APP.2.mp4" /19="F APP.3.mp4" /20="F APP.4.mp4" /21="F APP.5.mp4" /22="F APP.6.mp4" /23="F APP.7.mp4" /24="F APP.8.mp4" </item> <video video_100APP> /items = item.video_100APP / position = (50%, 50%) / size = (80%, 80%) </video> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> </instruct> <text header> / items = ("MORPHING") / voiceover = false / position = (50%, 10%) / size = (80%, 10%) / vjustify = center / fontstyle = ("Arial", 6%, true, false, false, false, 5, 1) </text> <text intro0100> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena. Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text intro100DIS> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione. Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text intro100APP> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione. Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text continue> / items = ("<%expressions.continueInstructions%>") / position = (50%, 95%) / size = (45%, 5%) / vjustify = center / fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1) / txbgcolor = black / txcolor = white / erase = false </text> <expressions> /continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare." </expressions> <text start> / items = ("Prema '<%parameters.responsekey%>' per iniziare.") / position = (50%, 95%) / size = (40%, 5%) / vjustify = center / fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1) / txbgcolor = black / txcolor = white / erase = false </text> <text getReadyInstructions> / items = ("Pronti: <%expressions.readyInstruct%>") / fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1) / position = (50%, 50%) / size = (80%, 40%) / vjustify = center / voiceover = false </text> <expressions> /readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera." </expressions> <text finish> / items = ("Grazie per aver partecipato all'esperimento!") / voiceover = false / fontstyle = ("Arial", 10%, true, false, false, false, 5, 1) / position = (50%, 50%) / size = (80%, 10%) / vjustify = center / valign = center / halign = center </text> <text exit> / items = ("<%expressions.continueInstructions%>") / voiceover = false / fontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / position = (50%, 95%) / size = (40%, 5%) / vjustify = center / valign = center / halign = center / txbgcolor = black / txcolor = white </text> ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = lightGray / txcolor = black / screencolor = lightGray / inputdevice = keyboard / quitcommand = (Ctrl+Alt+30) </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startDate, script.startTime, script.subjectId, script.groupId, script.sessionId, script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT) </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** <values> /countTrials = 0 /ITI = "" /0100_RT = "" /100DIS_RT = "" /100APP_RT = "" </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** <expressions> /0100_RT = list.RT0100.mean /100DIS_RT = list.RT100DIS.mean /100APP_RT = list.RT100APP.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <trial intro0100> / stimulusframes = [1 = header, intro0100, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> <trial intro100DIS> / stimulusframes = [1 = header, intro100DIS, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> <trial intro100APP> / stimulusframes = [1 = header, intro100APP, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> This trial is used when participants are asked to place their fingers on specific response buttons. <trial getReady> / stimulusframes = [1 = clearScreen, getReadyInstructions, start] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false / posttrialpause = expressions.iti // responsemessage = (parameters.leftkey, clearScreen, 0) </trial> <trial finish> / stimulusframes = [1 = clearScreen, finish] / recorddata = false / timeout = 250 </trial> ************************************************************************************************************** ************************************************************************************************************** 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 <list practiceRT0100> </list> <list RT0100> </list> <list practiceRT100DIS> </list> <list RT100DIS> </list> <list practiceRT100APP> </list> <list RT100APP> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** <trial practice0100> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_0100] / validresponse = (parameters.spacekey,parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT0100.appendItem(trial.practice0100.latency) ] </trial> <trial 0100> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_0100] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT0100.appendItem(trial.0100.latency) ] </trial> <trial practice100DIS> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_100DIS] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT100DIS.appendItem(trial.practice100DIS.latency) ] </trial> <trial 100DIS> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_100DIS] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT100DIS.appendItem(trial.100DIS.latency) ] </trial> <trial practice100APP> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_100APP] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT100APP.appendItem(trial.practice100APP.latency) ] </trial> <trial 100APP> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_100APP] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT100APP.appendItem(trial.100APP.latency) ] </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block practice0100> / trials = [ 1 = intro0100; 2 = getReady; 3-7 = practice0100; ] / branch = [ return block.0100; ] </block> <block 0100> / trials = [ 1 = intro0100; 2 = getReady; 3-22 = 0100; ] </block> <block practice100DIS> / trials = [ 1 = intro100DIS; 2 = getReady; 3-8 = practice100DIS; ] / branch = [ return block.100DIS; ] </block> <block 100DIS> / trials = [ 1 = intro100DIS; 2 = getReady; 3-26 = 100DIS; ] </block> <block practice100APP> / trials = [ 1 = intro100APP; 2 = getReady; 3-8 = practice100APP; ] / branch = [ return block.100APP; ] </block> <block 100APP> / trials = [ 1 = intro100APP; 2 = getReady; 3-26 = 100APP; ] </block> <block finish> / trials = [ 1 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / blocks = [ 1 = noreplace(practice0100, practice100DIS, practice100APP ); 2 = finish; ] / onexptend = [ values.0100_RT = expressions.0100_RT; values.100DIS_RT = expressions.100DIS_RT; values.100APP_RT = expressions.100APP_RT; ] </expt> ************************************************************************************************************** End of File ************************************************************************************************************** I don't understand what you want me to check regarding the first two modifications. You can run the task, you have data files available, and those should show you whether things work as you intended or not. If you have concrete questions because something is not working as you want, I'll be happy to answer those. Regarding your 3rd issue, I'll be happy to take a look. Your link, however, is not publicly accessible.
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+x+xSorry Dave. In this code, I tried to put instructions to run before each block, as a sequence: from the 'practice1' block to the last 'testEF' block. In each block, I put a seuqnce of trials to run, e.g.: <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block>However, in the above and specific block, trials like 'nextBlock2' and 'nextBlock2a' are not selected and the script go directly to getReady1. And this is my first problem. Secondly, whether it is possible, I would like to change to grouping of the blocks about words ('practice2WIntro'; 'practice2W'; 'testEW') and faces ('practice2FIntro'; 'practice2F'; 'testEF') to run together rispectively, and to a random selection of these two groups of blocks. I know it would be totally another matter of facts, but I am just following orders from peopel at the a higher hierarchical and they change their minds often. I'm sorry for that , but not my bad. I attached the code and this link to a Google Drive for the stimuli in a ZIP folder: https://drive.google.com/file/d/1IeQONKYERx53XQAAqbgAHXwkW6GI4Xhe/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ ABCD Emotional Stroop (keyboard version) -'DISGUSTO' key on the LEFT, 'PAURA' key on the RIGHT ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024 Script Copyright © 05-18-2022 Millisecond Software The script was originally designed for ABCD to be run on ipads and was adapted by Millisecond to run with keyboards for the Millisecond Library in its former version. This is an adaptation of ABCD Emotional Stroop to a custom version of the task. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants categorize words as "disgust/disgusto" feeling or a "fear/paura" feeling. The words are presented at the center of images. The image either show a word congruent face emotion (e.g. "disgsut" face paired with word "disgustato/nauseato/stomacato") or an incongruent one (e.g. "disgust face" paired with word "impaurito/intimorito/terorizzato"). Images depict disgust/disgusto and fear/paura emotions of Caucasian faces. Participants work through 2 test blocks: one block presents an equal number of congruent and incongruent pairings. In one block, the participant have to respond to the emotional word. In another block, the participant have to respond to the emotional face. Block order is determined randomly. In this script, the response button for 'disgust' is located on the left side and the response button for 'fear/paura' is located on the right side of the screen. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 10 minutes to complete ___________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'emotionalstroop_ld_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, group: with the current subject/groupnumber 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 such as feedback trials. Thus, trialnum may not reflect the number of main trials run per block. keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) wordposition: center word_y: stores the vertical coordinate of the current word (in % of canvas height) congruence: 1 = congruent; 2 = incongruent (emotion word and emotion image depict opposite emotions) selectStim: itemnumber of selected stimulus stimulusitem.1-: the presented stimuli in order of trial presentation stimulusitem.3 1) an empty stimulus (clearscreen) 2) presented image 3) presented word correctButton: stores the correct response button for the current trial response: the participant's response (scancode of response key) 16 = Z = left ("disgust/disgusto") 25 = M = right ("fear/paura") correct: accuracy of response: 1 = correct response; 0 = otherwise latency: the response latency (in ms); measured from: onset of image/word pair list.accuracy.mean: proportion correct of current block (2) Summary data file: 'abcdemotionalstroop_ln_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) keyAssignment: "leftdisgust" => left response key is disgust (disgusto); right response key is fear (paura) ACC_practice1: proportion correct in final practice1 run practice1Runs: number of practice1 runs needed ACC_practice2: proportion correct in final practice2 run practice2Runs: number of practice2 runs needed ACC_all: proportion correct overall (across all test trials) ACC_equal: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalCongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_equalIncongruent: proportion correct in "equal numbers of congruentincongruent pairings" block ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) meanRT_all: mean correct latency (in ms) overall meanRT_equal: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalCongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_equalIncongruent: mean correct latency (in ms) in "equal numbers of congruentincongruent pairings" block meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) * 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: 8 trials selected from 6 possible combinations => feedback provided => practice block is repeated if proportion correct of the last 8 trials is < 100% 2. 2 Practice Blocks: 4 trials (disgusto-congruent, disgusto-incongruent, paura-congruent, paura-incongruent) each 1) Respond to Word 2) Respond to Face For both: => feedback provided => practice block is repeated if proportion correct is < 100% 3. 2 Test Blocks: (1) Respond to Word - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) (2) Respond to Face - Equal number of congruent and incongruent pairings -24 congruent word valence - pic valence pairings (fixed pairs) -24 incongruent word valence - pic valence pairings (fixed pairs) Trial Sequence: Word/image (for: 3000ms) -> ITI: 2000ms (during practice: ITI provides feedback for 2000ms) ___________________________________________________________________________________________________________________ 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: Duration Parameters: /wordPresentationTime_practice: word duration (in ms) during practice trials (default: 2500ms) /feedbackDuration: feedback duration (in ms) during practice /wordPresentationTime_test: word duration (in ms) during test trials (default: 2500ms) /ITI: intertrial interval (in ms) between test trials (default: 1500ms) /readyDuration: duration (in ms) of ready trial (default: 3000ms) Interface: /wordSize: sizing of words proportional to canvas height (default: 5%) /picsize: sizing of images proportional to canvas height (default: 45%) /top_y: vertical coordinate of top word in relation to canvas (default: 40%) /bottom_y: vertical coordinate of bottom word in relation to canvas (default: 60%) Note: top of canvas = 0%; bottom of canvas = 100% /leftresponsekey: the left response key (default: "Z") /rightresponsekey: the right response key (default: "M") </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** Word presented for max. 3000ms (response window same) -> Feedback (correct, incorrect, no response) for 2000ms; ITI: 1500ms <parameters> / wordPresentationTime_practice = 3000 /feedbackDuration = 1000 /wordPresentationTime_test = 3000 /ITI = 1500 /readyDuration = 2000 /wordSize = 5% /picsize = 50% /top_y = 50% /bottom_y = 50% /leftresponsekey = "Z" /rightresponsekey = "M" </parameters> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) </instruct> <item instructions> /1 = " EMOTIONAL STROOP" /2 = "PRATICA LESSICO In questa breve pratica iniziale le verranno presentate, una alla volta, le PAROLE che utilizzeremo durante tutto l'esperimento. Esse esprimono degli stati emotivi di DISGUSTO o di PAURA. Le PAROLE che le verranno presentate sono: ~n~n~n~n~n~n" /3 = "Le verrà chiesto di premere '<%values.disgustokey%>' se la parola presentata esprime uno stato emotivo di DISGUSTO. Invece, le verrà chiesto di premere '<%values.paurakey%>' se la parola presentata esprime uno stato emotivo di PAURA. Premi la BARRA quando è pronto ad iniziare la pratica." /4 = "PRATICA PAROLA Le compariranno delle parole emotive sovraimpresse su di un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se la PAROLA presentata esprime un'emozione di DISGUSTO, oppure se essa esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alla PAROLA, ignorando il volto che ne fa da sfondo. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /5 = "Grazie per aver svolto la prova. Adesso svolgerà il test. Prema la BARRA per continuare" /6 = "PRATICA VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se il VOLTO presentato esprime un'emozione di DISGUSTO, oppure se esso esprime un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere al VOLTO, ignorando la parola sovraimpressa. Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>'" /7 = "Grazie per aver svolto la prova. Prema la BARRA per andare al Test" /8 = "TEST PAROLA. Le compariranno delle parole emotive sovraimpresse su un volto che, a sua volta, esprime un'emozione. Le verrà chiesto di riconoscere se le PAROLE presentate esprimino un'emozione di DISGUSTO, oppure se esse esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere alle PAROLE, ignorando i volti che ne fanno da sfondo." /9 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto le PAROLE!" /10 = "TEST VOLTO Le compariranno dei volti emotivi su cui sono sovraimpresse delle parole che, a loro volta, esprimono un'emozione. Le verrà chiesto di riconoscere se i VOLTI presentati esprimino un'emozione di DISGUSTO, oppure se essi esprimino un'emozione di PAURA, premendo i tasti corrispondenti. Il compito consiste nel rispondere ai VOLTI, ignorando le parole sovraimpresse ad essi." /11 = "Ricordi: Per il DISGUSTO prema '<%values.disgustokey%>' Per la PAURA prema '<%values.paurakey%>' Inoltre, ricordi di rispondere tenendo in cosiderazione soltanto i VOLTI!" /12 = "Lei è a metà strada!" /13 = "Grazie per aver partecipato!" /14 = "Grazie per aver svolto la prima prova." </item> <item continueButtons> /1 = "Prema la BARRA per iniziare" /2 = "Prema la BARRA per continuare" /3 = "Prema la BARRA per iniziare" /4 = "Prema la BARRA per iniziare" /5 = "Prema la BARRA per iniziare" /6 = "Prema la BARRA per iniziare" /7 = "Prema la BARRA per continuare" /8 = "Prema la BARRA per continuare" /9 = "Prema la BARRA per iniziare" /10 = "Prema la BARRA per continuare" /11 = "Prema la BARRA per iniziare" /12 = "Prema la BARRA per continuare" /13 = "Stop" /14 = "Prema la BARRA per continuare" </item> <text getReadyMessage> / items = ("Si tenga pronto! Il test sta per cominciare... <%expressions.buttoninstruct3%>") / position = (50%, 50%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (80%, 80%) </text> <text disgustoKeyReminder> / items = ("DISGUSTO = <%values.disgustokey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (25%, 90%) / erase = false </text> <text pauraKeyReminder> / items = ("PAURA = <%values.paurakey%>") / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / size = (30%, 5%) / vjustify = center / txcolor = BLACK / position = (75%, 90%) / erase = false </text> <text disgustoButton_instruct> / items = ("DISGUSTO = Prema '<%values.disgustokey%>'") / position = (25%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text pauraButton_instruct> / items = ("PAURA = Prema '<%values.paurakey%>'") / position = (75%, 60%) / fontstyle = ("Arial", 5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 10%) / txcolor = black </text> <text disgustoEmotionExamples> / items = ("disgustato~nnauseato~nstomacato") / position = (25%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> <text pauraEmotionExamples> / items = ("intimorito~nimpaurito~nterrorizzato") / position = (75%, 70%) / fontstyle = ("Arial", 4%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (40%, 40%) </text> ******************************* General Helper Instructions ****************************** <text repeatPractice> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2W> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text repeatPractice2F> / items = ("Ci provi ancora!") / fontstyle = ("Arial", 4.00%, false, false, false, false, 5, 1) / size = (80%, 40%) / position = (50%, 30%) </text> <text exit> / items = ("<prema la BARRA per uscire>") / fontstyle = ("Arial", 3.5%, false, false, false, false, 5, 1) / position = (50%, 90%) / size = (80%, 5%) / vjustify = center </text> <expressions> /buttoninstruct1 = if (computer.touch && !computer.haskeyboard) {"response button";} else { "un tasto";} /buttoninstruct2 = if (computer.touch && !computer.haskeyboard) {"button";} else { "un altro tasto";} /buttoninstruct3 = if (computer.touch && !computer.haskeyboard) {"Posizioni gli indici della mano destra e della mano sinistra rispettivamente sul tasto sinistro e sul tasto destro";} else { "Posizioni gli indici a sinistra su '<%parameters.leftresponsekey%>' e a destra su '<%parameters.rightresponsekey%>'";} </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** ******************************************** practice 1 ******************************************** <list practice1_itemnumbers> / items = (1, 2, 3, 4, 5, 6) / replace = false / resetinterval = 0 </list> <item words_practice1> /1 = "disgustato" /2 = "nauseato" /3 = "stomacato" /4 = "intimorito" /5 = "impaurito" /6 = "terrorizzato" </item> <item correctButton_practice1> /1 = "disgustoButton" /2 = "disgustoButton" /3 = "disgustoButton" /4 = "pauraButton" /5 = "pauraButton" /6 = "pauraButton" </item> <item feedback> /1 = "Corretto" /2 = "Non corretto" /3 = "Tempo scaduto" </item> ******************************************** practice 2W (F = word response block) ******************************************** <list practice2W_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2W> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2W> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2W> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2W> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2W> /1 = "disgustoButton" /2 = "pauraButton" /3 = "pauraButton" /4 = "disgustoButton" </item> ******************************************** practice 2F (F = face response block) ******************************************** <list practice2F_itemnumbers> / items = (1, 2, 3, 4) / replace = false / resetinterval = 0 </list> <item pics_practice2F> /1 = "F08-Disgust-Apex.jpg" /2 = "F04-Fear-Apex.jpg" /3 = "M03-Disgust-Apex.jpg" /4 = "M06-Fear-Apex.jpg" </item> <item words_practice2F> /1 = "nauseato" /2 = "intimorito" /3 = "terrorizzato" /4 = "stomacato" </item> <list wordPositions_practice2F> / items = (0, 0, 0, 0) / select = values.selectStim </list> <list congruency_practice2F> /items = (1, 1, 2, 2) / select = values.selectStim </list> <item correctButton_practice2F> /1 = "disgustoButton" /2 = "pauraButton" /3 = "disgustoButton" /4 = "pauraButton" </item> **************************** TestEW (E = equal number of congruent and incongruent pairings; W = word response block) **************************** <list testEW_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEW> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEW> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEW> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEW> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="pauraButton" /14="pauraButton" /15="pauraButton" /16="pauraButton" /17="pauraButton" /18="pauraButton" /19="pauraButton" /20="pauraButton" /21="pauraButton" /22="pauraButton" /23="pauraButton" /24="pauraButton" /25="disgustoButton" /26="disgustoButton" /27="disgustoButton" /28="disgustoButton" /29="disgustoButton" /30="disgustoButton" /31="disgustoButton" /32="disgustoButton" /33="disgustoButton" /34="disgustoButton" /35="disgustoButton" /36="disgustoButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> **************************** TestEF (E = equal number of congruent and incongruent pairings; F = face response block) **************************** <list testEF_itemnumbers> /items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48) / replace = false / resetinterval = 0 </list> <item pics_testEF> /1="F06-Disgust-Apex.jpg" /2="F04-Disgust-Apex.jpg" /3="F08-Disgust-Apex.jpg" /4="M12-Disgust-Apex.jpg" /5="M03-Disgust-Apex.jpg" /6="M06-Disgust-Apex.jpg" /7="F06-Disgust-Apex.jpg" /8="F04-Disgust-Apex.jpg" /9="F08-Disgust-Apex.jpg" /10="M12-Disgust-Apex.jpg" /11="M03-Disgust-Apex.jpg" /12="M06-Disgust-Apex.jpg" /13="F06-Disgust-Apex.jpg" /14="F04-Disgust-Apex.jpg" /15="F08-Disgust-Apex.jpg" /16="M12-Disgust-Apex.jpg" /17="M03-Disgust-Apex.jpg" /18="M06-Disgust-Apex.jpg" /19="F06-Disgust-Apex.jpg" /20="F04-Disgust-Apex.jpg" /21="F08-Disgust-Apex.jpg" /22="M12-Disgust-Apex.jpg" /23="M03-Disgust-Apex.jpg" /24="M06-Disgust-Apex.jpg" /25="F06-Fear-Apex.jpg" /26="F04-Fear-Apex.jpg" /27="F08-Fear-Apex.jpg" /28="M12-Fear-Apex.jpg" /29="M03-Fear-Apex.jpg" /30="M06-Fear-Apex.jpg" /31="F06-Fear-Apex.jpg" /32="F04-Fear-Apex.jpg" /33="F08-Fear-Apex.jpg" /34="M12-Fear-Apex.jpg" /35="M03-Fear-Apex.jpg" /36="M06-Fear-Apex.jpg" /37="F06-Fear-Apex.jpg" /38="F04-Fear-Apex.jpg" /39="F08-Fear-Apex.jpg" /40="M12-Fear-Apex.jpg" /41="M03-Fear-Apex.jpg" /42="M06-Fear-Apex.jpg" /43="F06-Fear-Apex.jpg" /44="F04-Fear-Apex.jpg" /45="F08-Fear-Apex.jpg" /46="M12-Fear-Apex.jpg" /47="M03-Fear-Apex.jpg" /48="M06-Fear-Apex.jpg" </item> <item words_testEF> /1="disgustato" /2="nauseato" /3="stomacato" /4="disgustato" /5="nauseato" /6="stomacato" /7="disgustato" /8="nauseato" /9="stomacato" /10="disgustato" /11="nauseato" /12="stomacato" /13="intimorito" /14="impaurito" /15="terrorizzato" /16="intimorito" /17="impaurito" /18="terrorizzato" /19="intimorito" /20="impaurito" /21="terrorizzato" /22="intimorito" /23="impaurito" /24="terrorizzato" /25="disgustato" /26="nauseato" /27="stomacato" /28="disgustato" /29="nauseato" /30="stomacato" /31="disgustato" /32="nauseato" /33="stomacato" /34="disgustato" /35="nauseato" /36="stomacato" /37="intimorito" /38="impaurito" /39="terrorizzato" /40="intimorito" /41="impaurito" /42="terrorizzato" /43="intimorito" /44="impaurito" /45="terrorizzato" /46="intimorito" /47="impaurito" /48="terrorizzato" </item> <list congruency_testEF> / items = (1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1) / select = values.selectStim </list> <item correctButton_testEF> /1="disgustoButton" /2="disgustoButton" /3="disgustoButton" /4="disgustoButton" /5="disgustoButton" /6="disgustoButton" /7="disgustoButton" /8="disgustoButton" /9="disgustoButton" /10="disgustoButton" /11="disgustoButton" /12="disgustoButton" /13="disgustoButton" /14="disgustoButton" /15="disgustoButton" /16="disgustoButton" /17="disgustoButton" /18="disgustoButton" /19="disgustoButton" /20="disgustoButton" /21="disgustoButton" /22="disgustoButton" /23="disgustoButton" /24="disgustoButton" /25="pauraButton" /26="pauraButton" /27="pauraButton" /28="pauraButton" /29="pauraButton" /30="pauraButton" /31="pauraButton" /32="pauraButton" /33="pauraButton" /34="pauraButton" /35="pauraButton" /36="pauraButton" /37="pauraButton" /38="pauraButton" /39="pauraButton" /40="pauraButton" /41="pauraButton" /42="pauraButton" /43="pauraButton" /44="pauraButton" /45="pauraButton" /46="pauraButton" /47="pauraButton" /48="pauraButton" </item> ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = transparent / txcolor = black / screencolor = lightgrey / inputdevice = keyboard </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / separatefiles = true / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum,values.keyAssignment, values.wordposition, values.word_y, values.congruence, values.selectStim, stimulusitem, stimulusitem, stimulusitem, values.correctButton, response, correct, latency, list.accuracy.mean) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startdate, script.starttime, script.subjectid, script.groupid, script.sessionid, script.elapsedtime, script.completed, values.keyAssignment, values.ACC_practice1, values.practice1Runs, values.ACC_practice2, values.practice2WRuns, values.practice2FRuns, expressions.ACC_all, expressions.ACC_WORD, expressions.ACC_WORDCongruent, expressions.ACC_WORDIncongruent, expressions.ACC_FACE, expressions.ACC_FACECongruent, expressions.ACC_FACEIncongruent, expressions.ACC_congruent, expressions.ACC_incongruent, expressions.meanRT_all, expressions.meanRT_WORD, expressions.meanRT_WORDCongruent, expressions.meanRT_WORDIncongruent, expressions.meanRT_FACE, expressions.meanRT_FACECongruent, expressions.meanRT_FACEIncongruent, expressions.meanRT_congruent, expressions.meanRT_incongruent) / separatefiles = true </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** /countTestBlocks: counts number of test blocks /selectWord: stores the itemnumber of the currently presented word /selectImage: stores the itemnumber of the currently presented image /wordposition: 0 = words at the centre of the image /word_y: stores the vertical coordinate of the current word /congruence: 0 = neutral; 1 = incongruent /practice1Runs: counts number of practice1 runs /practice2WRuns: counts number of practice2W runs /practice2FRuns: counts number of practice2F runs /selectFeedback: controls the selection of the feedback text to be presented /skipReadyTrial: 0 = run ready trial; 1 = skip ready trial <values> /countTestBlocks = 0 /selectWord = 1 /selectImage = 1 /selectStim = 1 /wordposition = 0 /correctButton = "" /word_y = 50% /congruence = 0 /practice1Runs = 0 /practice2WRuns = 0 /practice2FRuns = 0 /selectFeedback = 0 /skipReadyTrial = 0 /getReady = 1 /keyAssignment = "leftdisgusto" /disgustokey = parameters.leftresponsekey /paurakey = parameters.rightresponsekey </values> /ACC_practice1: stores the proportion correct of the current practice run <values> /ACC_practice1 = 0 /ACC_practice2 = 0 </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** /shadowSize: size of shadow text /ACC_all: proportion correct overall (across all test trials) /meanRT_all: mean correct latency (in ms) overall /ACC_WORD: proportion correct in "WORD" block /ACC_FACE: proportion correct in "FACE" block /ACC_congruent: proportion correct in "congruent" pairings trials (across test blocks) /ACC_incongruent: proportion correct in "incongruent" pairings trials (across test blocks) /meanRT_WORD: mean correct latency (in ms) in "WORD" block /meanRT_FACE: mean correct latency (in ms) in "FACE" block /meanRT_congruent: mean correct latency (in ms) in "congruent" pairings trials (across test blocks) /meanRT_incongruent: mean correct latency (in ms) in "incongruent" pairings trials (across test blocks) <expressions> /shadowSize = parameters.wordSize * 1.01 /ACC_all = list.accuracy.mean /ACC_WORD = list.accuracyEW.mean /ACC_WORDCongruent = list.accuracyEWCongruent.mean /ACC_WORDIncongruent = list.accuracyEWIncongruent.mean /ACC_FACE = list.accuracyEF.mean /ACC_FACECongruent = list.accuracyEFCongruent.mean /ACC_FACEIncongruent = list.accuracyEFIncongruent.mean /ACC_congruent = list.accuracyCongruent.mean /ACC_incongruent = list.accuracyIncongruent.mean /meanRT_all = list.latencies.mean /meanRT_WORD = list.latenciesEW.mean /meanRT_WORDCongruent = list.latenciesEWCongruent.mean /meanRT_WORDIncongruent = list.latenciesEWIncongruent.mean /meanRT_FACE = list.latenciesEF.mean /meanRT_FACECongruent = list.latenciesEFCongruent.mean /meanRT_FACEIncongruent = list.latenciesEFIncongruent.mean /meanRT_congruent = list.latenciesCongruent.mean /meanRT_incongruent = list.latenciesIncongruent.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <text intro> / items = instructions / select = sequence / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2W> / items = instructions / select = 4 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text intropractice2F> / items = instructions / select = 6 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2W> / items = instructions / select = 14 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F1> / items = instructions / select = 7 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F2> / items = instructions / select = 8 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text finishpractice2F3> / items = instructions / select = 9 / position = (50%, 50%) / fontstyle = ("Arial", 4%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock1> / items = instructions / select = 10 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text newBlock2> / items = instructions / select = 11 / position = (50%, 50%) / fontstyle = ("Arial", 6%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text break> / items = instructions / select = 12 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text end> / items = instructions / select = 13 / position = (50%, 50%) / fontstyle = ("Arial", 8%, false, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (90%, 80%) </text> <text continueButton_intro> / items = continueButtons / select = text.intro.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_testblock> / items = continueButtons / select = text.newBlock1.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = blue </text> <text continueButton_Pnd> / items = continueButtons / select = text.end.currentitemnumber / position = (50%, 90%) / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) / vjustify = center / hjustify = center / size = (45%, 5%) / txbgcolor = red </text> *********************** Instruction Trials *********************** <trial intro> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false / branch = [ trial.intro2; ] </trial> <trial intro2> / inputdevice = keyboard / stimulusframes = [1 = intro, DISGUSTOEmotionExamples, PAURAEmotionExamples, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2W> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial intropractice2F> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2W> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> trial finishpractice2F> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, finishpractice2F2, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1Start> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice1End> / inputdevice = keyboard / stimulusframes = [1 = intro, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2WEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2W, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FStart> / inputdevice = keyboard / stimulusframes = [1 = intropractice2F, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial practice2FEnd> / inputdevice = keyboard / stimulusframes = [1 = finishpractice2F1, continueButton_intro] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock1a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = finishpractice2F3, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> <trial finish> / inputdevice = keyboard / skip = [ values.countTestBlocks == 1; ] / stimulusframes = [1 = clearscreen, end, exit] / validresponse = (" ") / recorddata = false </trial> <trial break> / skip = [ values.countTestBlocks > 1; ] / ontrialbegin = [ text.continueButton_Pnd.textbgcolor = blue; ] / stimulusframes = [1 = clearscreen, break, continueButton_Pnd] / validresponse = (" ") / recorddata = false / ontrialend = [ text.continueButton_Pnd.textbgcolor = red; ] </trial> ************************************* General Helper Instruction Trials/Blocks ************************************* <trial getReady1> / stimulusframes = [1 = clearscreen, getReadyMessage, disgustoKeyReminder, pauraKeyReminder] // trialduration = 5000 / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) // / beginresponsetime = 0 / errormessage = false / recorddata = false </trial> ************************************************************************************************************** ************************************************************************************************************** STIMULI ************************************************************************************************************** ************************************************************************************************************** <text Word_practice1> / items = item.words_practice1 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <text Word_practice2W> / items = item.words_practice2W / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <text Word_practice2F> / items = item.words_practice2F / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_practice2> / items = item.words_practice2 / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> <picture pic_practice2W> /items = pics_practice2W / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <picture pic_practice2F> /items = pics_practice2F / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEW> / items = item.words_testEW / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testMC> / items = item.words_testMC / select = values.selectStim / vposition = values.word_y / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEW> /items = pics_testEW / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text Word_testEF> / items = item.words_testEF / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", parameters.wordSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = white / erase = false </text> text Wordshadow_testE> / items = item.words_testE / select = values.selectStim / vposition = 50% / hposition = 50% / fontstyle = ("Arial", expressions.shadowSize, false, false, false, false, 5, 1) / size = (40%, parameters.wordSize*1.5) / vjustify = center / hjustify = center / txcolor = black / erase = false </text> <picture pic_testEF> /items = pics_testEF / select = values.selectStim / position = (50%, 50%) / size = (parameters.picsize, parameters.picSize) / erase = false </picture> <text feedback> / items = feedback / select = values.selectFeedback / txcolor = black / fontstyle = ("Arial", 7%, true, false, false, false, 5, 1) / position = (50%, 30%) / size = (80%, 10%) / vjustify = center / hjustify = center / erase = false </text> <shape getReadyEraser> / shape = rectangle / size = (80%, 40%) / position = (50%, 30%) / erase = false / color = black </shape> ************************************************************************************************************** ************************************************************************************************************** LISTS ************************************************************************************************************** ************************************************************************************************************** ************************************************* Data Lists: used for descriptive statistics store correct latencies/accuracy data fill up during runtime ************************************************* Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracy> </list> Note: list stores the latency of correct responses for each relevant trial <list latencies> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEW> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEWIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEW> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEWIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEF> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyEFIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEF> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesEFIncongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyCongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesCongruent> </list> Note: list stores 1 = correct response; 0 = incorrect response for each relevant trial any response coded as an error is automatically coded as 0 <list accuracyIncongruent> </list> Note: list stores the latency of correct responses for each relevant trial <list latenciesIncongruent> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice1 ************************************************************************************************************** ************************************************************************************************************** <trial practice1> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice1_itemnumbers.nextvalue; values.correctButton = item.correctButton_practice1.item(values.selectStim); ] / stimulusframes = [1 = clearscreen, Word_practice1, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice1.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice1.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice1.correct); values.ACC_practice1 = list.accuracy.mean; if (trial.practice1.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice1.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : practice2W & 2F ************************************************************************************************************** ************************************************************************************************************** <trial practice2W> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2W_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2W.nextvalue; values.correctButton = item.correctButton_practice2W.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2W.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2W.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2W.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2W.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2W.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> <trial practice2F> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.practice2F_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_practice2F.nextvalue; values.correctButton = item.correctButton_practice2F.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] //***** else { wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_practice2, ****** it was in stimulus frame brackets / stimulusframes = [1 = clearscreen, pic_practice2W, Word_practice2W, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.practice2F.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.practice2F.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.practice2F.correct); values.ACC_practice2 = list.accuracy.mean; if (trial.practice2F.correct) { values.selectFeedback = 1; text.feedback.textcolor = green; } else if (trial.practice2F.response != 0) { values.selectFeedback = 2; text.feedback.textcolor = red; } else { values.selectFeedback = 3; text.feedback.textcolor = blue; }; ] / trialduration = parameters.wordPresentationTime_practice / branch = [ return trial.feedback; ] </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS: test ************************************************************************************************************** ************************************************************************************************************** => EW: Equal number congruent/incongruent pairs - WORD Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEW> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEW_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEW.nextvalue; values.correctButton = item.correctButton_testEW.item(values.selectStim); if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEW, Word_testEW, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEW.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEW.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEW.correct); list.accuracyEW.appendItem(trial.testEW.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEW.correct); list.accuracyEWCongruent.appenditem(trial.testEW.correct); } else { list.accuracyIncongruent.appendItem(trial.testEW.correct); list.accuracyEWIncongruent.appenditem(trial.testEW.correct); }; if (trial.testEW.correct) { list.latencies.appendItem(trial.testEW.latency); list.latenciesEW.appendItem(trial.testEW.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEW.latency); list.latenciesEWCongruent.appendItem(trial.testEW.latency); } else { list.latenciesIncongruent.appendItem(trial.testEW.latency); list.latenciesEWIncongruent.appendItem(trial.testEW.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> => EF: Equal number congruent/incongruent pairs - FACE Response //***** else {wvalues.word_y = wparameters.bottom_y;}; ***** (to activate put ']' at the end, and erase the precEdent one) //****** Wordshadow_testE, ***** it was in stimulusframes <trial testEF> / inputdevice = keyboard / ontrialbegin = [ values.selectStim = list.testEF_itemnumbers.nextvalue; values.wordposition = 0; values.congruence = list.congruency_testEF.nextvalue; values.correctButton = item.correctButton_testEF.item(values.selectStim); //values.wordposition == 0) if (values.wordposition == 0) { values.word_y = parameters.top_y; } else { values.word_y = parameters.bottom_y; }; ] / stimulusframes = [1 = clearscreen, pic_testEF, Word_testEF, disgustoKeyReminder, pauraKeyReminder] / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / iscorrectresponse = [ if (values.correctButton == "disgustoButton") { if (trial.testEF.responsetext == values.disgustokey) { return true; } else { return false; }; } else { if (trial.testEF.responsetext == values.paurakey) { return true; } else { return false; }; }; ] / beginresponsetime = 0 / responseinterrupt = immediate / ontrialend = [ list.accuracy.appendItem(trial.testEF.correct); list.accuracyEF.appendItem(trial.testEF.correct); if (values.congruence == 1) { list.accuracyCongruent.appendItem(trial.testEF.correct); list.accuracyEFCongruent.appenditem(trial.testEF.correct); } else { list.accuracyIncongruent.appendItem(trial.testEF.correct); list.accuracyEFIncongruent.appenditem(trial.testEF.correct); }; if (trial.testEF.correct) { list.latencies.appendItem(trial.testEF.latency); list.latenciesEF.appendItem(trial.testEF.latency); if (values.congruence == 1) { list.latenciesCongruent.appendItem(trial.testEF.latency); list.latenciesEFCongruent.appenditem(trial.testEF.latency); } else { list.latenciesIncongruent.appendItem(trial.testEF.latency); list.latenciesEFIncongruent.appenditem(trial.testEF.latency); }; }; ] / trialduration = parameters.wordPresentationTime_test / branch = [ return trial.ITI; ] </trial> <trial repeatPractice> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2W> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2W, continueButton_intro] / validresponse = (" ") </trial> <trial repeatPractice2F> / inputdevice = keyboard / stimulusframes = [1 = repeatPractice2F, continueButton_intro] / validresponse = (" ") </trial> ************************************************************************************************************** ************************************************************************************************************** TRIALS : helper trials ************************************************************************************************************** ************************************************************************************************************** <trial feedback> / stimulusframes = [1 = clearscreen, feedback] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.feedbackDuration </trial> <trial ITI> / stimulusframes = [1 = clearscreen] //touchscreens: present inactive response buttons / validresponse = (parameters.leftresponsekey, parameters.rightresponsekey) / isvalidresponse = [ return(false); ] / recorddata = false / trialduration = parameters.ITI </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block intro> / trials = [1 = intro] </block> <block practice1Intro> / trials = [1 = practice1Start] </block> <block practice1> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice1Runs += 1; ] / trials = [1 = getReady1; 2-7 = practice1] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice; }; ] </block> <block repeatPractice> / trials = [1=repeatPractice] / branch = [ return block.practice1; ] </block> <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; }; ] </block> <block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block> <block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] </block> <block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; }; ] </block> <block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> <block testStart> / trials = [1 = practice2FEnd] / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; ] </block> <block testEW> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock1; 2 = nextBlock1a; 3 = getReady1; 4-51 = testEW; 52 = break; 53 = finish; ] </block> <block testEF> / onblockbegin = [ values.countTestBlocks += 1; ] / trials = [ 1 = nextBlock2; 2 = nextBlock2a; 3 = getReady1; 4-51 = testEF; 52 = break; 53 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };] / blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4 = practice2WIntro; 5 = practice2W; 6 = practice2FIntro; 7 = practice2F; 8 = testStart; 9 = testEW; 10 = testEF; ] </expt> <monkey> / latencydistribution = normal(50, 20) </monkey> ************************************************************************************************************** End of File ************************************************************************************************************** <trial nextBlock2> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock1, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial>
<trial nextBlock2a> / skip = [ values.countTestBlocks > 1; ] / stimulusframes = [1 = newBlock2, continueButton_testBlock] / validresponse = (" ") / recorddata = false </trial> These trials are not run because you skip them. You increase valuescountTestBlocks by one /onblockbegin, so at the time of these trials, the value is 2. Per your /skip logic, the trials should be skipped, i.e. not run, if values.countTestBlocks is greater one, which two certainly is. As for the 2nd question, you simply do <expt> / onexptbegin = [ if (computer.touch && !computer.haskeyboard) { text.continueButton_Pnd.skip = true; text.continueButton_intro.skip = true; text.continueButton_testblock.skip = true; };]
/ blocks = [ 1 = intro; 2 = practice1Intro; 3 = practice1; 4-5 = noreplace(practice2WIntro, practice2FIntro); ] </expt> with <block practice2WIntro> / trials = [1 = practice2WStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2W; ] </block>
<block practice2W> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2WRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2W] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2W; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEW; }; ] </block>
<block repeatPractice2W> / trials = [1=repeatPractice2W] / branch = [ return block.practice2W; ] </block>
<block practice2FIntro> / trials = [1 = practice2FStart] / onblockbegin = [ values.skipReadyTrial = 0; ] / branch = [ return block.practice2F; ] </block>
<block practice2F> / onblockbegin = [ list.accuracy.reset(); list.latencies.reset(); values.practice2FRuns += 1; ] / trials = [1 = getReady1; 2-5 = practice2F] / onblockend = [ values.skipReadyTrial = 1; ] / branch = [ if (list.accuracy.mean < 1 && !monkey.monkeymode) { return block.repeatPractice2F; } else { list.accuracy.reset(); list.latencies.reset(); values.skipReadyTrial = 0; return block.testEF; }; ] </block>
<block repeatPractice2F> / trials = [1=repeatPractice2F] / branch = [ return block.practice2F; ] </block> In general, you will want to study the programmer's manual to get a better sense of how Inquisit's syntax works and to better understand and modify existing code. https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf Hi Dave, It seems it's working everything properly and I thank you very much for your kindness and your helpfulness. Actually, I would try to study the user manual, but when they give you 4 scripts to do in one month at work, and you are a newby, you can imagine how difficult is to do things properly. And I'm sorry for that. I would have a new question, an advice/clue/hint. I'm going to make another script about the presentation of morphing stimuli, i.e. facial expressions, and I would need a script to modify following this two main specifics: - stimuli should be preceeded by a cue, a label to present before every stimulus (presentation of this pair of stimuli should be randomized)
- and most important, I would need that the video stops on the subject's response, and that it would be able to collect data at that precise point in time, in terms of RTs (onset), and other classic measures as %correctresponse and ACC.
It would be great for me to find something close to this idea! Otherwise, I'm pretty f.... :D
Thank you in advance. Have a nice weekend.
You should program this yourself, from scratch. If you've read the manual and worked through a few of the tutorials in the documentation, you know everything you need to get it done. Pairing stimuli is explained in the documentation: https://www.millisecond.com/support/docs/current/html/howto/howtopairs.htmVideos stop upon response by default. Dear Dave, thank you for your answer and tips. I already told you that, as a newby in programming anything, I was given 4 scripts to do in one month at work. And I have just 4 days left to make a new one!!!But I won't bother you about my work stress anymore. If you can suggest a script to be easily modified, I would be extremely glad! Otherwise, I thank you a lot again for your help so far. Have a nice day You won't find a script you can easily modfiy. The easiest option is to code what you want from scratch. The task you want is simple. If you were to take some existing script, you'd have to spend more time understanding, modifying, and removing code that does things you do not want or need. Hello Dave, I found something to modify and I did it. Actually, I have some problems, as always. I just explain a bit the idea. The script was a simple reaction time task. I have to make a more complex task, with more blocks and practices, but with the same response phylosophy as reactiontimes: I just need the latency measures of the responses to the stimuli. Stimuli are videos of morphed emotional faces of 3 kinds. I modified the script this way: Now I have 3 test blocks allegedly linked to 3 practice blocks and randomized as in the stroop, if you rememeber. Could you check this before please? Thank you.Then, I tried to insert a list of stimuli for each block to be run in random order. Could you check also this please? Thank you.At last, I have problems with response buttons (in the script they were two assigned but just one working; I left it like this, just changing the names): the issue is thatSt everytime a try to respond the script exit/crash. Could you check also this please? Thank you.If the last problem is solved, and the other two checks are ok, maybe I'm close to the end of this coding! Finger crossed!! Here you can find attached the script modified, and the link to the stimuli in a zip folder as follows (it was too big to upload the folder): https://drive.google.com/file/d/10IcobiN9nUpEEys0ngde8Ba6kg56a_N3/view?usp=drive_link<usermanual> ___________________________________________________________________________________________________________________ EMOTIONAL MORPHING ___________________________________________________________________________________________________________________ Script Author: IGOR IARROBINO, Research Fellow ( igor.iarrobino@unimore.it/ igor.iarrobino@gmail.com) for UNIMORE Date: July 2024. Script Copyright © 02-17-2022 Millisecond Software ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants are asked to press a certain response key (here: SPACEBAR) whenever the emotion appearing in the videoclip is recognized according to the block purpose. ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ The set-up of the script takes appr. 10 minutes to complete Note: the test can easily be aborted by pressing "Ctrl+Alt+A" __________________________________________________________________________________________________________________ DATA FILE INFORMATION ___________________________________________________________________________________________________________________ The default data stored in the data files are: (1) Raw data file: 'simplereactiontime_cogdras_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, group: with the current subject/groupnumber 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. stimulusitem: the presented stimuli in order of trial presentation response: the participant's response (scancode of response buttons) latency: the response latency (in ms); measured from: onset of videoclip iti: the intertrial interval (in ms) run at the end of the current trial (2) Summary data file: 'simplereactiontime_emomorph_summary*.iqdat' (a separate file for each participant)* inquisit.version: the Inquisit build/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) 011_RT; 100DIS; 100APP: the mean response time (in ms) in the 3 blocks (measured from onset of videos in the center of the screen) * 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. 3 Test blocks: - 20 trials - 24 trials - 24 trials Trial sequence: - videoclip (wait for response) -> random iti (1000-1500ms) -> videoclip.... ___________________________________________________________________________________________________________________ STIMULI ___________________________________________________________________________________________________________________ ADFES videoclip and morphed mixed emotions made ad-hoc _________________________________________________________________________________________________________________ INSTRUCTIONS ___________________________________________________________________________________________________________________ provided by Millisecond Software - edited by IGOR IARROBINO ___________________________________________________________________________________________________________________ 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: </usermanual> ************************************************************************************************************** ************************************************************************************************************** EDITABLE PARAMETERS: change editable parameters here ************************************************************************************************************** ************************************************************************************************************** <parameters> /spacekey = "C" /rightkey = "P" //the space-response key (here: SPACEBAR) /responsekey = parameters.spacekey //the assignment of space to responsekey (here SPACEBAR) /nokey = parameters.rightkey </parameters> <expressions> /iti = rand(1000, 1500) //selects the intertrial interval randomly somewhere from 1000 to 2500ms </expressions> ************************************************************************************************************** ************************************************************************************************************** EDITABLE STIMULI ************************************************************************************************************** ************************************************************************************************************** <list practice0100_itemnumbers> / items = (1, 2, 3, 4, 5) / replace = false / resetinterval = 0 </list> <item practicevideo_0100> /1="Anger.1.mp4" /2="Disgust.2.mp4" /3="Fear.3.mp4" /4="Happy.4.mp4" /5="Sad.1.mp4" </item> <video practicevideo_0100> /items = item.practicevideo_0100 / position = (50%, 50%) / size = (80%, 80%) </video> <list practice100DIS_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item practicevideo_100DIS> /1="A DIS.1.mp4" /2="A DIS.8.mp4" /3="D DIS.2.mp4" /4="D DIS.7.mp4" /5="F DIS.3.mp4" /6="F DIS.6.mp4" </item> <video practicevideo_100DIS> /items = item.practicevideo_100DIS / position = (50%, 50%) / size = (80%, 80%) </video> <list practice100APP_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item practicevideo_100APP> /1="A APP.4.mp4" /2="A APP.5.mp4" /3="D APP.1.mp4" /4="D APP.8.mp4" /5="F APP.2.mp4" /6="F APP.7.mp4" </item> <video practicevideo_100APP> /items = item.practicevideo_100APP / position = (50%, 50%) / size = (80%, 80%) </video> //main stimulus that appreas in the middle of the screen <list 0100_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) / replace = false / resetinterval = 0 </list> <item video_0100> /1="Anger.1.mp4" /2="Anger.2.mp4" /3="Anger.3.mp4" /4="Anger.4.mp4" /5="Disgust.1.mp4" /6="Disgust.2.mp4" /7="Disgust.3.mp4" /8="Disgust.4.mp4" /9="Fear.1.mp4" /10="Fear.2.mp4" /11="Fear.3.mp4" /12="Fear.4.mp4" /13="Happy.1.mp4" /14="Happy.2.mp4" /15="Happy.3.mp4" /16="Happy.4.mp4" /17="Sad.1.mp4" /18="Sad.2.mp4" /19="Sad.3.mp4" /20="Sad.4.mp4" </item> <video video_0100> /items = item.video_0100 / position = (50%, 50%) / size = (80%, 80%) </video> <list 100DIS_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item video_100DIS> /1="A DIS.1.mp4" /2="A DIS.2.mp4" /3="A DIS.3.mp4" /4="A DIS.4.mp4" /5="A DIS.5.mp4" /6="A DIS.6.mp4" /7="A DIS.7.mp4" /8="A DIS.8.mp4" /9="D DIS.1.mp4" /10="D DIS.2.mp4" /11="D DIS.3.mp4" /12="D DIS.4.mp4" /13="D DIS.5.mp4" /14="D DIS.6.mp4" /15="D DIS.7.mp4" /16="D DIS.8.mp4" /17="F DIS.1.mp4" /18="F DIS.2.mp4" /19="F DIS.3.mp4" /20="F DIS.4.mp4" /21="F DIS.5.mp4" /22="F DIS.6.mp4" /23="F DIS.7.mp4" /24="F DIS.8.mp4" </item> <video video_100DIS> /items = item.video_100DIS / position = (50%, 50%) / size = (80%, 80%) </video> <list 100APP_itemnumbers> / items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) / replace = false / resetinterval = 0 </list> <item video_100APP> /1="A APP.1.mp4" /2="A APP.2.mp4" /3="A APP.3.mp4" /4="A APP.4.mp4" /5="A APP.5.mp4" /6="A APP.6.mp4" /7="A APP.7.mp4" /8="A APP.8.mp4" /9="D APP.1.mp4" /10="D APP.2.mp4" /11="D APP.3.mp4" /12="D APP.4.mp4" /13="D APP.5.mp4" /14="D APP.6.mp4" /15="D APP.7.mp4" /16="D APP.8.mp4" /17="F APP.1.mp4" /18="F APP.2.mp4" /19="F APP.3.mp4" /20="F APP.4.mp4" /21="F APP.5.mp4" /22="F APP.6.mp4" /23="F APP.7.mp4" /24="F APP.8.mp4" </item> <video video_100APP> /items = item.video_100APP / position = (50%, 50%) / size = (80%, 80%) </video> ************************************************************************************************************** ************************************************************************************************************** EDITABLE INSTRUCTIONS: change instructions here ************************************************************************************************************** ************************************************************************************************************** <instruct> </instruct> <text header> / items = ("MORPHING") / voiceover = false / position = (50%, 10%) / size = (80%, 10%) / vjustify = center / fontstyle = ("Arial", 6%, true, false, false, false, 5, 1) </text> <text intro0100> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che da un'espressione neutra esprimerà un'emozione piena. Le emozioni di interesse sono FELICITÀ, TRISTEZZA, DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che quell'emozione APPARE sul volto rappresentato. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text intro100DIS> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione. Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia SCOMPARENDO dal volto rappresentato nel passaggio verso l'altra emozione. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text intro100APP> / items = ("Dei videoclip compariranno, uno alla volta, al centro dello schermo. In essi verrà raffigurato un volto umano che esprime già un'emozione, ma che passerà ad esprimere in modo rapido un'altra emozione. Le emozioni di interesse sono DISGUSTO, PAURA E RABBIA. All'inizio di ogni video comparirà un'etichetta verbale che descrive l'emozione su cui focalizzarsi e a cui rispondere. Il suo compito è di premere la '<%parameters.responsekey%>' appena percepisce che l'emozione esplicitata stia COMPARENDO sul volto rappresentato nel passaggio da un'emozione ad un'altra. RICORDI di rispondere il più velocemente possibile!") / position = (50%, 50%) / size = (80%, 60%) / vjustify = center / hjustify = left / fontstyle = ("Arial", 3.5%, true, false, false, false, 5, 1) </text> <text continue> / items = ("<%expressions.continueInstructions%>") / position = (50%, 95%) / size = (45%, 5%) / vjustify = center / fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1) / txbgcolor = black / txcolor = white / erase = false </text> <expressions> /continueInstructions = "Prema la '<%parameters.responsekey%>' per continuare." </expressions> <text start> / items = ("Prema '<%parameters.responsekey%>' per iniziare.") / position = (50%, 95%) / size = (40%, 5%) / vjustify = center / fontstyle = ("Arial", 2.5%, true, false, false, false, 5, 1) / txbgcolor = black / txcolor = white / erase = false </text> <text getReadyInstructions> / items = ("Pronti: <%expressions.readyInstruct%>") / fontstyle = ("Arial", 5.00%, true, false, false, false, 5, 1) / position = (50%, 50%) / size = (80%, 40%) / vjustify = center / voiceover = false </text> <expressions> /readyInstruct = "Posizioni il suo indice sulla '<%parameters.responsekey%>' sulla tastiera." </expressions> <text finish> / items = ("Grazie per aver partecipato all'esperimento!") / voiceover = false / fontstyle = ("Arial", 10%, true, false, false, false, 5, 1) / position = (50%, 50%) / size = (80%, 10%) / vjustify = center / valign = center / halign = center </text> <text exit> / items = ("<%expressions.continueInstructions%>") / voiceover = false / fontstyle = ("Arial", 3%, true, false, false, false, 5, 1) / position = (50%, 95%) / size = (40%, 5%) / vjustify = center / valign = center / halign = center / txbgcolor = black / txcolor = white </text> ************************************************************************************************************** !!!REMAINING CODE: Customize after careful consideration only!!! ************************************************************************************************************** ************************************************************************************************************** ************************************************************************************************************** DEFAULTS ************************************************************************************************************** ************************************************************************************************************** script requires Inquisit 6.5.2.0 or higher <defaults> /canvasaspectratio = (4,3) /minimumversion = "6.5.2.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) /txbgcolor = lightGray / txcolor = black / screencolor = lightGray / inputdevice = keyboard / quitcommand = (Ctrl+Alt+30) </defaults> ************************************************************************************************************** ************************************************************************************************************** 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 *********************** <data> / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum, stimulusitem, response, values.responseLabel, latency, values.iti) </data> *********************** summary data file *********************** <summarydata> / columns = (inquisit.version, computer.platform, script.startDate, script.startTime, script.subjectId, script.groupId, script.sessionId, script.elapsedTime, script.completed, expressions.0100_RT, expressions.100DIS_RT, expressions.100APP_RT) </summarydata> ************************************************************************************************************** ************************************************************************************************************** VALUES: automatically updated ************************************************************************************************************** ************************************************************************************************************** <values> /countTrials = 0 /ITI = "" /0100_RT = "" /100DIS_RT = "" /100APP_RT = "" </values> ************************************************************************************************************** ************************************************************************************************************** EXPRESSIONS ************************************************************************************************************** ************************************************************************************************************** <expressions> /0100_RT = list.RT0100.mean /100DIS_RT = list.RT100DIS.mean /100APP_RT = list.RT100APP.mean </expressions> ************************************************************************************************************** ************************************************************************************************************** INSTRUCTIONS ************************************************************************************************************** ************************************************************************************************************** <trial intro0100> / stimulusframes = [1 = header, intro0100, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> <trial intro100DIS> / stimulusframes = [1 = header, intro100DIS, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> <trial intro100APP> / stimulusframes = [1 = header, intro100APP, continue] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false // responsemessage = (parameters.responsekey, clearScreen, 0) </trial> This trial is used when participants are asked to place their fingers on specific response buttons. <trial getReady> / stimulusframes = [1 = clearScreen, getReadyInstructions, start] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / recorddata = false / posttrialpause = expressions.iti // responsemessage = (parameters.leftkey, clearScreen, 0) </trial> <trial finish> / stimulusframes = [1 = clearScreen, finish] / recorddata = false / timeout = 250 </trial> ************************************************************************************************************** ************************************************************************************************************** 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 <list practiceRT0100> </list> <list RT0100> </list> <list practiceRT100DIS> </list> <list RT100DIS> </list> <list practiceRT100APP> </list> <list RT100APP> </list> ************************************************************************************************************** ************************************************************************************************************** TRIALS ************************************************************************************************************** ************************************************************************************************************** <trial practice0100> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_0100] / validresponse = (parameters.spacekey,parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT0100.appendItem(trial.practice0100.latency) ] </trial> <trial 0100> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_0100] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT0100.appendItem(trial.0100.latency) ] </trial> <trial practice100DIS> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_100DIS] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT100DIS.appendItem(trial.practice100DIS.latency) ] </trial> <trial 100DIS> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_100DIS] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT100DIS.appendItem(trial.100DIS.latency) ] </trial> <trial practice100APP> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, practicevideo_100APP] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.practiceRT100APP.appendItem(trial.practice100APP.latency) ] </trial> <trial 100APP> / ontrialbegin = [ values.ITI = expressions.iti ] / stimulustimes = [1 = clearscreen, video_100APP] / validresponse = (parameters.spacekey, parameters.rightkey) / correctresponse = (parameters.responsekey) / response = correct / posttrialpause = values.iti / ontrialend = [ list.RT100APP.appendItem(trial.100APP.latency) ] </trial> ************************************************************************************************************** ************************************************************************************************************** BLOCKS ************************************************************************************************************** ************************************************************************************************************** <block practice0100> / trials = [ 1 = intro0100; 2 = getReady; 3-7 = practice0100; ] / branch = [ return block.0100; ] </block> <block 0100> / trials = [ 1 = intro0100; 2 = getReady; 3-22 = 0100; ] </block> <block practice100DIS> / trials = [ 1 = intro100DIS; 2 = getReady; 3-8 = practice100DIS; ] / branch = [ return block.100DIS; ] </block> <block 100DIS> / trials = [ 1 = intro100DIS; 2 = getReady; 3-26 = 100DIS; ] </block> <block practice100APP> / trials = [ 1 = intro100APP; 2 = getReady; 3-8 = practice100APP; ] / branch = [ return block.100APP; ] </block> <block 100APP> / trials = [ 1 = intro100APP; 2 = getReady; 3-26 = 100APP; ] </block> <block finish> / trials = [ 1 = finish; ] </block> ************************************************************************************************************** ************************************************************************************************************** EXPERIMENT ************************************************************************************************************** ************************************************************************************************************** <expt> / blocks = [ 1 = noreplace(practice0100, practice100DIS, practice100APP ); 2 = finish; ] / onexptend = [ values.0100_RT = expressions.0100_RT; values.100DIS_RT = expressions.100DIS_RT; values.100APP_RT = expressions.100APP_RT; ] </expt> ************************************************************************************************************** End of File ************************************************************************************************************** I don't understand what you want me to check regarding the first two modifications. You can run the task, you have data files available, and those should show you whether things work as you intended or not. If you have concrete questions because something is not working as you want, I'll be happy to answer those. Regarding your 3rd issue, I'll be happy to take a look. Your link, however, is not publicly accessible. As for why the script crashes: It does so when it tries to record data after a response. The crash occurs because you have the script instructed to record a variable -- values.responseLabel -- which does not exist, presumably because you removed it from whatever original script you modified. The app tells you exactly what and where the error is, too, as you can see above. To get rid of the crash, remove the non-existent variable from the <data> element's /columns. <data> / columns = (build, computer.platform, date, time, subject, group, session, blockcode, blocknum, trialcode, trialnum, stimulusitem, response, latency, values.iti) </data>
|
|
|