Selene_MQ
|
|
Group: Forum Members
Posts: 17,
Visits: 42
|
+x+x+x+x+x+x+x+x+x+xGood morning, I am very new to Inquisit and still not familiar with how it works. I have been trying to adapt the existing Emotional-n-back task that I got from the library, to create a simple 1-back task using 56 different images. The idea is for participants to implicitely learn these images by doing a 1-back task. So far, the script seems to be doing approximately what I want, except that when I calculated at the end the number of times each image was presented, it varied greatly (with 8 blocks, and 64 images per block, I would expect each of my 56 images to appear about 9 times, but in reality it varied between 2 and 23). I really don't know how to control this so that each image appears the same number of times across the experiment. I have attached the script to this post, and would greatly appreciate any help you may provide, Thank you so much in advance, Selene <list notargetvalue> / 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, 49, 50, 51, 52, 53, 54, 55, 56) / not = (values.currenttarget) / replace = true</list> You're sampling items randomly *with* replacement. If you want a more even distribution, sample without replacement. Thanks a lot for that. It does make it slightly better, but there is still a large variation in the number of times each image is seen (from 7 to 18 times instead of having them all presented 9 times). Is there another way to make it more even, that doesn't require massive changes in the script? Thank you so much! Selene Well, it's an n-back task. I.e. some images *have* to be repeated more than others, because they're target images, i.e. the same image as than n (here: 1) trials before. Other images aren't targets, so will ultimately be displayed less often, because -- among other things -- there are fewer target trials than there are non-target trials. In short, no, I don't think there's any easy way to force each image to be displayed exactly (or close to) 9 times over the course of the task. In fact, I don't know that there's any way at all. Thanks for your answer. I do understand that the targets have to be repeated, but because each image in the pool can be a target (i.e. there isn't a separate pool of images that constitute the non-target images), I think it's possible to think of a solution that will present each image exactly as many times as possible. So my new question is: if I can figure out an order of presentation that works (for example: 4 6 8 8 5 9 1 12 13 13 etc... over the entire experiment), how easy is it to then hard-code the order in the script? Thanks a lot! You have to hardcode two things, then. - The full item order in the non-target list, and set it to /selectionmode = sequence - The order of target and non-target trials run by the blocks. That you'll then also have to switch to a list, and set it to sequence. That's not necessarily hard, but fiddly and error-prone given the amount of trials. Thank you very much for your answer, Dave. I generated, for each of the 8 blocks, the sequence that I want, and have also generated for each block a vector with the order of Target/Non-target that matches my sequence. I am not sure how to implement it, because each of the 8 blocks will have a different sequence... Would you please be able to help with this? I have attached the script, and under the "LIST" tab, you can see the orders that I generated. Thank you so much for your help, Selene You can creat lists of lists and select the list you need /onblockbegin. See e.g. https://www.millisecond.com/forums/Topic16652.aspx#16717, https://www.millisecond.com/forums/FindPost20679.aspx Thanks for your answer Dace. I had a look at these posts and try to adapt it to my code. I think I'm not too far off, but it just won't start. Now it throws an error when it reaches the blocks : "Could not locate element ". " and "trial 2 is unassigned" for each of the blocks. Any idea where I sent wrong? Thanks so much! Your /trials attributs in the blocks are all misspecified. / trials = [1 = startfixation ; 2 - 66 = (nontarget, nontarget, nontarget, nontarget, ...)]
To run the sequence you specifed, it ought to be / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, ...)] Thanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+xThanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene Why are all your blocks using the same set? That doesn't look right at all. <block 1Nback_noFace1> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace2> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget) ] </block> <block 1Nback_noFace3> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace4> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget) ] </block> <block 1Nback_noFace5> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace6> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace7> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace8> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> //list of lists returns an item number fromt the set list indicated by values.set <list setlist> / items = (list.set1items.nextvalue, list.set2items.nextvalue, list.set3items.nextvalue, list.set4items.nextvalue, list.set5items.nextvalue, list.set6items.nextvalue, list.set7items.nextvalue, list.set8items.nextvalue) / selectionmode = values.set</list> //set 1 are item numbers for block 1 <list set1items> / items = (2, 35, 30, 39, 27, 46, 10, 1, 1, 31, 43, 46, 51, 2, 2, 46, 19, 38, 8, 21, 38, 44, 27, 11, 4, 3, 3, 39, 17, 9, 36, 15, 20, 5, 21, 9, 4, 4, 29, 54, 24, 5, 5, 12, 50, 13, 32, 6, 14, 1, 18, 22, 48, 13, 6, 6, 2, 33, 56, 47, 30, 7, 7) / selectionmode = sequence </list> //set 2 are item numbers for block 2, etc.. <list set2items> / items = (32, 39, 19, 6, 8, 8, 4, 5, 52, 16, 35, 55, 20, 48, 30, 16, 9, 9, 45, 48, 18, 22, 19, 47, 45, 14, 5, 10, 10, 54, 26, 10, 11, 11, 22, 52, 2, 12, 52, 49, 50, 53, 12, 12, 41, 33, 37, 21, 53, 47, 10, 11, 7, 13, 13, 43, 11, 32, 26, 14, 14, 10, 53) / selectionmode = sequence </list> <list set3items> / items = (39, 9, 42, 46, 28, 47, 15, 15, 29, 34, 15, 2, 16, 16, 42, 55, 46, 32, 54, 36, 24, 17, 17, 28, 1, 21, 18, 37, 22, 53, 23, 49, 18, 18, 3, 14, 41, 4, 36, 20, 19, 19, 2, 31, 37, 27, 23, 45, 18, 46, 20, 20, 27, 7, 40, 49, 24, 21, 21, 17, 14, 1, 24) / selectionmode = sequence </list> <list set4items> / items = (12, 25, 44, 22, 22, 13, 53, 10, 12, 41, 15, 16, 3, 22, 54, 50, 23, 23, 18, 5, 3, 48, 30, 26, 56, 24, 24, 15, 22, 25, 25, 39, 6, 29, 48, 54, 26, 26, 11, 45, 1, 5, 7, 24, 38, 22, 42, 35, 24, 55, 43, 27, 27, 38, 30, 49, 30, 42, 47, 40, 28, 28, 1) / selectionmode = sequence </list> <list set5items> / items = (8, 13, 34, 31, 29, 29, 26, 41, 34, 37, 16, 35, 30, 30, 47, 11, 4, 44, 51, 17, 56, 23, 28, 31, 31, 52, 35, 10, 38, 24, 3, 34, 48, 32, 32, 17, 23, 35, 6, 20, 33, 33, 31, 18, 29, 25, 8, 28, 46, 34, 34, 37, 25, 31, 32, 35, 35, 48, 9, 14, 20, 49, 50) / selectionmode = sequence </list> <list set6items> / items = (36, 44, 36, 36, 29, 25, 4, 51, 27, 21, 5, 37, 37, 54, 15, 37, 7, 47, 51, 26, 7, 43, 38, 38, 42, 40, 33, 39, 39, 49, 38, 9, 56, 52, 36, 19, 36, 43, 51, 40, 40, 6, 53, 39, 12, 41, 41, 55, 3, 43, 41, 23, 42, 42, 40, 17, 26, 3, 41, 45, 54, 43, 43) / selectionmode = sequence </list> <list set7items> / items = (21, 51, 40, 17, 50, 2, 6, 1, 44, 44, 15, 56, 25, 27, 51, 8, 5, 32, 45, 45, 3, 2, 28, 34, 16, 46, 46, 15, 55, 18, 6, 53, 4, 50, 20, 45, 44, 29, 47, 47, 50, 23, 33, 48, 48, 12, 35, 30, 16, 9, 52, 55, 56, 49, 49, 33, 49, 28, 36, 33, 20, 14, 11) / selectionmode = sequence </list> <list set8items> / items = (31, 26, 50, 50, 56, 10, 34, 25, 23, 51, 51, 16, 9, 19, 39, 44, 27, 52, 19, 11, 52, 52, 7, 21, 1, 8, 32, 13, 45, 14, 53, 53, 8, 29, 40, 34, 54, 54, 7, 44, 25, 37, 19, 12, 13, 17, 4, 55, 55, 38, 8, 33, 42, 56, 56, 13, 31, 43, 41, 40, 42, 28, 55) / selectionmode = sequence </list>
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+xThanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene Why are all your blocks using the same set? That doesn't look right at all. <block 1Nback_noFace1> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace2> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget) ] </block> <block 1Nback_noFace3> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace4> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget) ] </block> <block 1Nback_noFace5> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace6> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace7> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace8> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> //list of lists returns an item number fromt the set list indicated by values.set <list setlist> / items = (list.set1items.nextvalue, list.set2items.nextvalue, list.set3items.nextvalue, list.set4items.nextvalue, list.set5items.nextvalue, list.set6items.nextvalue, list.set7items.nextvalue, list.set8items.nextvalue) / selectionmode = values.set</list> //set 1 are item numbers for block 1 <list set1items> / items = (2, 35, 30, 39, 27, 46, 10, 1, 1, 31, 43, 46, 51, 2, 2, 46, 19, 38, 8, 21, 38, 44, 27, 11, 4, 3, 3, 39, 17, 9, 36, 15, 20, 5, 21, 9, 4, 4, 29, 54, 24, 5, 5, 12, 50, 13, 32, 6, 14, 1, 18, 22, 48, 13, 6, 6, 2, 33, 56, 47, 30, 7, 7) / selectionmode = sequence </list> //set 2 are item numbers for block 2, etc.. <list set2items> / items = (32, 39, 19, 6, 8, 8, 4, 5, 52, 16, 35, 55, 20, 48, 30, 16, 9, 9, 45, 48, 18, 22, 19, 47, 45, 14, 5, 10, 10, 54, 26, 10, 11, 11, 22, 52, 2, 12, 52, 49, 50, 53, 12, 12, 41, 33, 37, 21, 53, 47, 10, 11, 7, 13, 13, 43, 11, 32, 26, 14, 14, 10, 53) / selectionmode = sequence </list> <list set3items> / items = (39, 9, 42, 46, 28, 47, 15, 15, 29, 34, 15, 2, 16, 16, 42, 55, 46, 32, 54, 36, 24, 17, 17, 28, 1, 21, 18, 37, 22, 53, 23, 49, 18, 18, 3, 14, 41, 4, 36, 20, 19, 19, 2, 31, 37, 27, 23, 45, 18, 46, 20, 20, 27, 7, 40, 49, 24, 21, 21, 17, 14, 1, 24) / selectionmode = sequence </list> <list set4items> / items = (12, 25, 44, 22, 22, 13, 53, 10, 12, 41, 15, 16, 3, 22, 54, 50, 23, 23, 18, 5, 3, 48, 30, 26, 56, 24, 24, 15, 22, 25, 25, 39, 6, 29, 48, 54, 26, 26, 11, 45, 1, 5, 7, 24, 38, 22, 42, 35, 24, 55, 43, 27, 27, 38, 30, 49, 30, 42, 47, 40, 28, 28, 1) / selectionmode = sequence </list> <list set5items> / items = (8, 13, 34, 31, 29, 29, 26, 41, 34, 37, 16, 35, 30, 30, 47, 11, 4, 44, 51, 17, 56, 23, 28, 31, 31, 52, 35, 10, 38, 24, 3, 34, 48, 32, 32, 17, 23, 35, 6, 20, 33, 33, 31, 18, 29, 25, 8, 28, 46, 34, 34, 37, 25, 31, 32, 35, 35, 48, 9, 14, 20, 49, 50) / selectionmode = sequence </list> <list set6items> / items = (36, 44, 36, 36, 29, 25, 4, 51, 27, 21, 5, 37, 37, 54, 15, 37, 7, 47, 51, 26, 7, 43, 38, 38, 42, 40, 33, 39, 39, 49, 38, 9, 56, 52, 36, 19, 36, 43, 51, 40, 40, 6, 53, 39, 12, 41, 41, 55, 3, 43, 41, 23, 42, 42, 40, 17, 26, 3, 41, 45, 54, 43, 43) / selectionmode = sequence </list> <list set7items> / items = (21, 51, 40, 17, 50, 2, 6, 1, 44, 44, 15, 56, 25, 27, 51, 8, 5, 32, 45, 45, 3, 2, 28, 34, 16, 46, 46, 15, 55, 18, 6, 53, 4, 50, 20, 45, 44, 29, 47, 47, 50, 23, 33, 48, 48, 12, 35, 30, 16, 9, 52, 55, 56, 49, 49, 33, 49, 28, 36, 33, 20, 14, 11) / selectionmode = sequence </list> <list set8items> / items = (31, 26, 50, 50, 56, 10, 34, 25, 23, 51, 51, 16, 9, 19, 39, 44, 27, 52, 19, 11, 52, 52, 7, 21, 1, 8, 32, 13, 45, 14, 53, 53, 8, 29, 40, 34, 54, 54, 7, 44, 25, 37, 19, 12, 13, 17, 4, 55, 55, 38, 8, 33, 42, 56, 56, 13, 31, 43, 41, 40, 42, 28, 55) / selectionmode = sequence </list> P.S.: In the future, please provide all files the script requires to actually run.
|
|
|
Selene_MQ
|
|
Group: Forum Members
Posts: 17,
Visits: 42
|
+x+x+xThanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene Why are all your blocks using the same set? That doesn't look right at all. <block 1Nback_noFace1> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace2> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget) ] </block> <block 1Nback_noFace3> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace4> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget) ] </block> <block 1Nback_noFace5> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace6> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace7> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace8> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> //list of lists returns an item number fromt the set list indicated by values.set <list setlist> / items = (list.set1items.nextvalue, list.set2items.nextvalue, list.set3items.nextvalue, list.set4items.nextvalue, list.set5items.nextvalue, list.set6items.nextvalue, list.set7items.nextvalue, list.set8items.nextvalue) / selectionmode = values.set</list> //set 1 are item numbers for block 1 <list set1items> / items = (2, 35, 30, 39, 27, 46, 10, 1, 1, 31, 43, 46, 51, 2, 2, 46, 19, 38, 8, 21, 38, 44, 27, 11, 4, 3, 3, 39, 17, 9, 36, 15, 20, 5, 21, 9, 4, 4, 29, 54, 24, 5, 5, 12, 50, 13, 32, 6, 14, 1, 18, 22, 48, 13, 6, 6, 2, 33, 56, 47, 30, 7, 7) / selectionmode = sequence </list> //set 2 are item numbers for block 2, etc.. <list set2items> / items = (32, 39, 19, 6, 8, 8, 4, 5, 52, 16, 35, 55, 20, 48, 30, 16, 9, 9, 45, 48, 18, 22, 19, 47, 45, 14, 5, 10, 10, 54, 26, 10, 11, 11, 22, 52, 2, 12, 52, 49, 50, 53, 12, 12, 41, 33, 37, 21, 53, 47, 10, 11, 7, 13, 13, 43, 11, 32, 26, 14, 14, 10, 53) / selectionmode = sequence </list> <list set3items> / items = (39, 9, 42, 46, 28, 47, 15, 15, 29, 34, 15, 2, 16, 16, 42, 55, 46, 32, 54, 36, 24, 17, 17, 28, 1, 21, 18, 37, 22, 53, 23, 49, 18, 18, 3, 14, 41, 4, 36, 20, 19, 19, 2, 31, 37, 27, 23, 45, 18, 46, 20, 20, 27, 7, 40, 49, 24, 21, 21, 17, 14, 1, 24) / selectionmode = sequence </list> <list set4items> / items = (12, 25, 44, 22, 22, 13, 53, 10, 12, 41, 15, 16, 3, 22, 54, 50, 23, 23, 18, 5, 3, 48, 30, 26, 56, 24, 24, 15, 22, 25, 25, 39, 6, 29, 48, 54, 26, 26, 11, 45, 1, 5, 7, 24, 38, 22, 42, 35, 24, 55, 43, 27, 27, 38, 30, 49, 30, 42, 47, 40, 28, 28, 1) / selectionmode = sequence </list> <list set5items> / items = (8, 13, 34, 31, 29, 29, 26, 41, 34, 37, 16, 35, 30, 30, 47, 11, 4, 44, 51, 17, 56, 23, 28, 31, 31, 52, 35, 10, 38, 24, 3, 34, 48, 32, 32, 17, 23, 35, 6, 20, 33, 33, 31, 18, 29, 25, 8, 28, 46, 34, 34, 37, 25, 31, 32, 35, 35, 48, 9, 14, 20, 49, 50) / selectionmode = sequence </list> <list set6items> / items = (36, 44, 36, 36, 29, 25, 4, 51, 27, 21, 5, 37, 37, 54, 15, 37, 7, 47, 51, 26, 7, 43, 38, 38, 42, 40, 33, 39, 39, 49, 38, 9, 56, 52, 36, 19, 36, 43, 51, 40, 40, 6, 53, 39, 12, 41, 41, 55, 3, 43, 41, 23, 42, 42, 40, 17, 26, 3, 41, 45, 54, 43, 43) / selectionmode = sequence </list> <list set7items> / items = (21, 51, 40, 17, 50, 2, 6, 1, 44, 44, 15, 56, 25, 27, 51, 8, 5, 32, 45, 45, 3, 2, 28, 34, 16, 46, 46, 15, 55, 18, 6, 53, 4, 50, 20, 45, 44, 29, 47, 47, 50, 23, 33, 48, 48, 12, 35, 30, 16, 9, 52, 55, 56, 49, 49, 33, 49, 28, 36, 33, 20, 14, 11) / selectionmode = sequence </list> <list set8items> / items = (31, 26, 50, 50, 56, 10, 34, 25, 23, 51, 51, 16, 9, 19, 39, 44, 27, 52, 19, 11, 52, 52, 7, 21, 1, 8, 32, 13, 45, 14, 53, 53, 8, 29, 40, 34, 54, 54, 7, 44, 25, 37, 19, 12, 13, 17, 4, 55, 55, 38, 8, 33, 42, 56, 56, 13, 31, 43, 41, 40, 42, 28, 55) / selectionmode = sequence </list> P.S.: In the future, please provide all files the script requires to actually run. Hi Dave, I'm so sorry, I changed this in a previous version and included the wrong file to the post. Please find attached the script + all the image files that allow the script to run. Thank you so much for your time, Selene
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+xThanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene Why are all your blocks using the same set? That doesn't look right at all. <block 1Nback_noFace1> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace2> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget) ] </block> <block 1Nback_noFace3> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace4> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget) ] </block> <block 1Nback_noFace5> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace6> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace7> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace8> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> //list of lists returns an item number fromt the set list indicated by values.set <list setlist> / items = (list.set1items.nextvalue, list.set2items.nextvalue, list.set3items.nextvalue, list.set4items.nextvalue, list.set5items.nextvalue, list.set6items.nextvalue, list.set7items.nextvalue, list.set8items.nextvalue) / selectionmode = values.set</list> //set 1 are item numbers for block 1 <list set1items> / items = (2, 35, 30, 39, 27, 46, 10, 1, 1, 31, 43, 46, 51, 2, 2, 46, 19, 38, 8, 21, 38, 44, 27, 11, 4, 3, 3, 39, 17, 9, 36, 15, 20, 5, 21, 9, 4, 4, 29, 54, 24, 5, 5, 12, 50, 13, 32, 6, 14, 1, 18, 22, 48, 13, 6, 6, 2, 33, 56, 47, 30, 7, 7) / selectionmode = sequence </list> //set 2 are item numbers for block 2, etc.. <list set2items> / items = (32, 39, 19, 6, 8, 8, 4, 5, 52, 16, 35, 55, 20, 48, 30, 16, 9, 9, 45, 48, 18, 22, 19, 47, 45, 14, 5, 10, 10, 54, 26, 10, 11, 11, 22, 52, 2, 12, 52, 49, 50, 53, 12, 12, 41, 33, 37, 21, 53, 47, 10, 11, 7, 13, 13, 43, 11, 32, 26, 14, 14, 10, 53) / selectionmode = sequence </list> <list set3items> / items = (39, 9, 42, 46, 28, 47, 15, 15, 29, 34, 15, 2, 16, 16, 42, 55, 46, 32, 54, 36, 24, 17, 17, 28, 1, 21, 18, 37, 22, 53, 23, 49, 18, 18, 3, 14, 41, 4, 36, 20, 19, 19, 2, 31, 37, 27, 23, 45, 18, 46, 20, 20, 27, 7, 40, 49, 24, 21, 21, 17, 14, 1, 24) / selectionmode = sequence </list> <list set4items> / items = (12, 25, 44, 22, 22, 13, 53, 10, 12, 41, 15, 16, 3, 22, 54, 50, 23, 23, 18, 5, 3, 48, 30, 26, 56, 24, 24, 15, 22, 25, 25, 39, 6, 29, 48, 54, 26, 26, 11, 45, 1, 5, 7, 24, 38, 22, 42, 35, 24, 55, 43, 27, 27, 38, 30, 49, 30, 42, 47, 40, 28, 28, 1) / selectionmode = sequence </list> <list set5items> / items = (8, 13, 34, 31, 29, 29, 26, 41, 34, 37, 16, 35, 30, 30, 47, 11, 4, 44, 51, 17, 56, 23, 28, 31, 31, 52, 35, 10, 38, 24, 3, 34, 48, 32, 32, 17, 23, 35, 6, 20, 33, 33, 31, 18, 29, 25, 8, 28, 46, 34, 34, 37, 25, 31, 32, 35, 35, 48, 9, 14, 20, 49, 50) / selectionmode = sequence </list> <list set6items> / items = (36, 44, 36, 36, 29, 25, 4, 51, 27, 21, 5, 37, 37, 54, 15, 37, 7, 47, 51, 26, 7, 43, 38, 38, 42, 40, 33, 39, 39, 49, 38, 9, 56, 52, 36, 19, 36, 43, 51, 40, 40, 6, 53, 39, 12, 41, 41, 55, 3, 43, 41, 23, 42, 42, 40, 17, 26, 3, 41, 45, 54, 43, 43) / selectionmode = sequence </list> <list set7items> / items = (21, 51, 40, 17, 50, 2, 6, 1, 44, 44, 15, 56, 25, 27, 51, 8, 5, 32, 45, 45, 3, 2, 28, 34, 16, 46, 46, 15, 55, 18, 6, 53, 4, 50, 20, 45, 44, 29, 47, 47, 50, 23, 33, 48, 48, 12, 35, 30, 16, 9, 52, 55, 56, 49, 49, 33, 49, 28, 36, 33, 20, 14, 11) / selectionmode = sequence </list> <list set8items> / items = (31, 26, 50, 50, 56, 10, 34, 25, 23, 51, 51, 16, 9, 19, 39, 44, 27, 52, 19, 11, 52, 52, 7, 21, 1, 8, 32, 13, 45, 14, 53, 53, 8, 29, 40, 34, 54, 54, 7, 44, 25, 37, 19, 12, 13, 17, 4, 55, 55, 38, 8, 33, 42, 56, 56, 13, 31, 43, 41, 40, 42, 28, 55) / selectionmode = sequence </list> P.S.: In the future, please provide all files the script requires to actually run. Hi Dave, I'm so sorry, I changed this in a previous version and included the wrong file to the post. Please find attached the script + all the image files that allow the script to run. Thank you so much for your time, Selene > Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. I am unable to reproduce this. The script you attached runs exactly the sequence specified. See the attached data file containing data for block 1Nback_noFace7. Compare the sequence in that data file to the sequence you specifed in that block's trials attribute. It is exactly what it should be. The same is true for the sequence of item numbers defined for that block. It is exactly as specified. Do keep in mind that you're sampling the 8 blocks you defined in random order. So it's not the case that block 1Nback_noFace1 will always be the 1st block for each participant, and so forth. <expt> / onexptbegin = [ if (parameters.debugmode == 1) text.targetalert.textcolor = red; ] / blocks = [ 1 = ConsentBlock; 2 = StartExp; 3-10 = noreplace(block.1Nback_noFace1, block.1Nback_noFace2,block.1Nback_noFace3,block.1Nback_noFace4,block.1Nback_noFace5,block.1Nback_noFace6,block.1Nback_noFace7,block.1Nback_noFace8); 11 = EndExp; ] / onexptend = [values.completed = 1] </expt>
|
|
|
Selene_MQ
|
|
Group: Forum Members
Posts: 17,
Visits: 42
|
+x+x+x+x+xThanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene Why are all your blocks using the same set? That doesn't look right at all. <block 1Nback_noFace1> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace2> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget) ] </block> <block 1Nback_noFace3> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace4> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget) ] </block> <block 1Nback_noFace5> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace6> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace7> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace8> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> //list of lists returns an item number fromt the set list indicated by values.set <list setlist> / items = (list.set1items.nextvalue, list.set2items.nextvalue, list.set3items.nextvalue, list.set4items.nextvalue, list.set5items.nextvalue, list.set6items.nextvalue, list.set7items.nextvalue, list.set8items.nextvalue) / selectionmode = values.set</list> //set 1 are item numbers for block 1 <list set1items> / items = (2, 35, 30, 39, 27, 46, 10, 1, 1, 31, 43, 46, 51, 2, 2, 46, 19, 38, 8, 21, 38, 44, 27, 11, 4, 3, 3, 39, 17, 9, 36, 15, 20, 5, 21, 9, 4, 4, 29, 54, 24, 5, 5, 12, 50, 13, 32, 6, 14, 1, 18, 22, 48, 13, 6, 6, 2, 33, 56, 47, 30, 7, 7) / selectionmode = sequence </list> //set 2 are item numbers for block 2, etc.. <list set2items> / items = (32, 39, 19, 6, 8, 8, 4, 5, 52, 16, 35, 55, 20, 48, 30, 16, 9, 9, 45, 48, 18, 22, 19, 47, 45, 14, 5, 10, 10, 54, 26, 10, 11, 11, 22, 52, 2, 12, 52, 49, 50, 53, 12, 12, 41, 33, 37, 21, 53, 47, 10, 11, 7, 13, 13, 43, 11, 32, 26, 14, 14, 10, 53) / selectionmode = sequence </list> <list set3items> / items = (39, 9, 42, 46, 28, 47, 15, 15, 29, 34, 15, 2, 16, 16, 42, 55, 46, 32, 54, 36, 24, 17, 17, 28, 1, 21, 18, 37, 22, 53, 23, 49, 18, 18, 3, 14, 41, 4, 36, 20, 19, 19, 2, 31, 37, 27, 23, 45, 18, 46, 20, 20, 27, 7, 40, 49, 24, 21, 21, 17, 14, 1, 24) / selectionmode = sequence </list> <list set4items> / items = (12, 25, 44, 22, 22, 13, 53, 10, 12, 41, 15, 16, 3, 22, 54, 50, 23, 23, 18, 5, 3, 48, 30, 26, 56, 24, 24, 15, 22, 25, 25, 39, 6, 29, 48, 54, 26, 26, 11, 45, 1, 5, 7, 24, 38, 22, 42, 35, 24, 55, 43, 27, 27, 38, 30, 49, 30, 42, 47, 40, 28, 28, 1) / selectionmode = sequence </list> <list set5items> / items = (8, 13, 34, 31, 29, 29, 26, 41, 34, 37, 16, 35, 30, 30, 47, 11, 4, 44, 51, 17, 56, 23, 28, 31, 31, 52, 35, 10, 38, 24, 3, 34, 48, 32, 32, 17, 23, 35, 6, 20, 33, 33, 31, 18, 29, 25, 8, 28, 46, 34, 34, 37, 25, 31, 32, 35, 35, 48, 9, 14, 20, 49, 50) / selectionmode = sequence </list> <list set6items> / items = (36, 44, 36, 36, 29, 25, 4, 51, 27, 21, 5, 37, 37, 54, 15, 37, 7, 47, 51, 26, 7, 43, 38, 38, 42, 40, 33, 39, 39, 49, 38, 9, 56, 52, 36, 19, 36, 43, 51, 40, 40, 6, 53, 39, 12, 41, 41, 55, 3, 43, 41, 23, 42, 42, 40, 17, 26, 3, 41, 45, 54, 43, 43) / selectionmode = sequence </list> <list set7items> / items = (21, 51, 40, 17, 50, 2, 6, 1, 44, 44, 15, 56, 25, 27, 51, 8, 5, 32, 45, 45, 3, 2, 28, 34, 16, 46, 46, 15, 55, 18, 6, 53, 4, 50, 20, 45, 44, 29, 47, 47, 50, 23, 33, 48, 48, 12, 35, 30, 16, 9, 52, 55, 56, 49, 49, 33, 49, 28, 36, 33, 20, 14, 11) / selectionmode = sequence </list> <list set8items> / items = (31, 26, 50, 50, 56, 10, 34, 25, 23, 51, 51, 16, 9, 19, 39, 44, 27, 52, 19, 11, 52, 52, 7, 21, 1, 8, 32, 13, 45, 14, 53, 53, 8, 29, 40, 34, 54, 54, 7, 44, 25, 37, 19, 12, 13, 17, 4, 55, 55, 38, 8, 33, 42, 56, 56, 13, 31, 43, 41, 40, 42, 28, 55) / selectionmode = sequence </list> P.S.: In the future, please provide all files the script requires to actually run. Hi Dave, I'm so sorry, I changed this in a previous version and included the wrong file to the post. Please find attached the script + all the image files that allow the script to run. Thank you so much for your time, Selene > Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. I am unable to reproduce this. The script you attached runs exactly the sequence specified. See the attached data file containing data for block 1Nback_noFace7. Compare the sequence in that data file to the sequence you specifed in that block's trials attribute. It is exactly what it should be. The same is true for the sequence of item numbers defined for that block. It is exactly as specified. Do keep in mind that you're sampling the 8 blocks you defined in random order. So it's not the case that block 1Nback_noFace1 will always be the 1st block for each participant, and so forth. <expt> / onexptbegin = [ if (parameters.debugmode == 1) text.targetalert.textcolor = red; ] / blocks = [ 1 = ConsentBlock; 2 = StartExp; 3-10 = noreplace(block.1Nback_noFace1, block.1Nback_noFace2,block.1Nback_noFace3,block.1Nback_noFace4,block.1Nback_noFace5,block.1Nback_noFace6,block.1Nback_noFace7,block.1Nback_noFace8); 11 = EndExp; ] / onexptend = [values.completed = 1] </expt> Awesome, yes. I hadn't noticed that it was because it was sampling the blocks at random. This is fine. However, could you think of a fix for the other problem (i.e. the fact that the trial will directly move on to the next image if participants press a key during the image, instead of displaying a normal ITI between each image)? Thanks so much, Selen
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+xThanks a lot. The great news is that it is now working, and the most important feature (i.e. presenting the images in the exact order that I provided for each block) is working fine. Thanks for that! There are two problems remaining, and I was wondering if you would be able to help me out there: 1. Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. This has the problem of not encoding participants' responses correctly either (e.g. a participant that sees a target and presses the correct key will be classified as a false alarm, because the program thought it was a non-target). This is not massively problematic as I will be able to recover the actual correct responses later on with the data, but I was curious what happened there. 2. More importantly, when participants press the answer key while an image is displayed, and not during the fixation cross ITI, there will be no ITI for this trial, and it will move on directly to the next image. This is not ideal, I would like the ITI to be in between each image, regardless of whether they pressed a button. Again, I tried a few things out but can't figure out what's exactly happening. Thank you so much for all your helpful answers! Selene Why are all your blocks using the same set? That doesn't look right at all. <block 1Nback_noFace1> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace2> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget) ] </block> <block 1Nback_noFace3> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace4> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget) ] </block> <block 1Nback_noFace5> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace6> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target) ] </block> <block 1Nback_noFace7> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> <block 1Nback_noFace8> / postinstructions = (BlockSummary) / onblockbegin = [ values.N = 1; values.currenttarget = 0; list.items.reset(); values.lastIndex = 1; expressions.fillitemlist; values.TotalBlocks += 1; values.starttrialcounter = 0; list.blockACC.reset(); values.set = 1;] / trials = [1 = startfixation; 2 = sequence(nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, target, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget, nontarget) ] </block> //list of lists returns an item number fromt the set list indicated by values.set <list setlist> / items = (list.set1items.nextvalue, list.set2items.nextvalue, list.set3items.nextvalue, list.set4items.nextvalue, list.set5items.nextvalue, list.set6items.nextvalue, list.set7items.nextvalue, list.set8items.nextvalue) / selectionmode = values.set</list> //set 1 are item numbers for block 1 <list set1items> / items = (2, 35, 30, 39, 27, 46, 10, 1, 1, 31, 43, 46, 51, 2, 2, 46, 19, 38, 8, 21, 38, 44, 27, 11, 4, 3, 3, 39, 17, 9, 36, 15, 20, 5, 21, 9, 4, 4, 29, 54, 24, 5, 5, 12, 50, 13, 32, 6, 14, 1, 18, 22, 48, 13, 6, 6, 2, 33, 56, 47, 30, 7, 7) / selectionmode = sequence </list> //set 2 are item numbers for block 2, etc.. <list set2items> / items = (32, 39, 19, 6, 8, 8, 4, 5, 52, 16, 35, 55, 20, 48, 30, 16, 9, 9, 45, 48, 18, 22, 19, 47, 45, 14, 5, 10, 10, 54, 26, 10, 11, 11, 22, 52, 2, 12, 52, 49, 50, 53, 12, 12, 41, 33, 37, 21, 53, 47, 10, 11, 7, 13, 13, 43, 11, 32, 26, 14, 14, 10, 53) / selectionmode = sequence </list> <list set3items> / items = (39, 9, 42, 46, 28, 47, 15, 15, 29, 34, 15, 2, 16, 16, 42, 55, 46, 32, 54, 36, 24, 17, 17, 28, 1, 21, 18, 37, 22, 53, 23, 49, 18, 18, 3, 14, 41, 4, 36, 20, 19, 19, 2, 31, 37, 27, 23, 45, 18, 46, 20, 20, 27, 7, 40, 49, 24, 21, 21, 17, 14, 1, 24) / selectionmode = sequence </list> <list set4items> / items = (12, 25, 44, 22, 22, 13, 53, 10, 12, 41, 15, 16, 3, 22, 54, 50, 23, 23, 18, 5, 3, 48, 30, 26, 56, 24, 24, 15, 22, 25, 25, 39, 6, 29, 48, 54, 26, 26, 11, 45, 1, 5, 7, 24, 38, 22, 42, 35, 24, 55, 43, 27, 27, 38, 30, 49, 30, 42, 47, 40, 28, 28, 1) / selectionmode = sequence </list> <list set5items> / items = (8, 13, 34, 31, 29, 29, 26, 41, 34, 37, 16, 35, 30, 30, 47, 11, 4, 44, 51, 17, 56, 23, 28, 31, 31, 52, 35, 10, 38, 24, 3, 34, 48, 32, 32, 17, 23, 35, 6, 20, 33, 33, 31, 18, 29, 25, 8, 28, 46, 34, 34, 37, 25, 31, 32, 35, 35, 48, 9, 14, 20, 49, 50) / selectionmode = sequence </list> <list set6items> / items = (36, 44, 36, 36, 29, 25, 4, 51, 27, 21, 5, 37, 37, 54, 15, 37, 7, 47, 51, 26, 7, 43, 38, 38, 42, 40, 33, 39, 39, 49, 38, 9, 56, 52, 36, 19, 36, 43, 51, 40, 40, 6, 53, 39, 12, 41, 41, 55, 3, 43, 41, 23, 42, 42, 40, 17, 26, 3, 41, 45, 54, 43, 43) / selectionmode = sequence </list> <list set7items> / items = (21, 51, 40, 17, 50, 2, 6, 1, 44, 44, 15, 56, 25, 27, 51, 8, 5, 32, 45, 45, 3, 2, 28, 34, 16, 46, 46, 15, 55, 18, 6, 53, 4, 50, 20, 45, 44, 29, 47, 47, 50, 23, 33, 48, 48, 12, 35, 30, 16, 9, 52, 55, 56, 49, 49, 33, 49, 28, 36, 33, 20, 14, 11) / selectionmode = sequence </list> <list set8items> / items = (31, 26, 50, 50, 56, 10, 34, 25, 23, 51, 51, 16, 9, 19, 39, 44, 27, 52, 19, 11, 52, 52, 7, 21, 1, 8, 32, 13, 45, 14, 53, 53, 8, 29, 40, 34, 54, 54, 7, 44, 25, 37, 19, 12, 13, 17, 4, 55, 55, 38, 8, 33, 42, 56, 56, 13, 31, 43, 41, 40, 42, 28, 55) / selectionmode = sequence </list> P.S.: In the future, please provide all files the script requires to actually run. Hi Dave, I'm so sorry, I changed this in a previous version and included the wrong file to the post. Please find attached the script + all the image files that allow the script to run. Thank you so much for your time, Selene > Even though I specified the sequence of "target/nontarget" that I want for each block, it does not actually seem to encode this properly. In the output file, the Trialcode column will contain an order of "target/nontarget" that is not the one I specified. I am unable to reproduce this. The script you attached runs exactly the sequence specified. See the attached data file containing data for block 1Nback_noFace7. Compare the sequence in that data file to the sequence you specifed in that block's trials attribute. It is exactly what it should be. The same is true for the sequence of item numbers defined for that block. It is exactly as specified. Do keep in mind that you're sampling the 8 blocks you defined in random order. So it's not the case that block 1Nback_noFace1 will always be the 1st block for each participant, and so forth. <expt> / onexptbegin = [ if (parameters.debugmode == 1) text.targetalert.textcolor = red; ] / blocks = [ 1 = ConsentBlock; 2 = StartExp; 3-10 = noreplace(block.1Nback_noFace1, block.1Nback_noFace2,block.1Nback_noFace3,block.1Nback_noFace4,block.1Nback_noFace5,block.1Nback_noFace6,block.1Nback_noFace7,block.1Nback_noFace8); 11 = EndExp; ] / onexptend = [values.completed = 1] </expt> Awesome, yes. I hadn't noticed that it was because it was sampling the blocks at random. This is fine. However, could you think of a fix for the other problem (i.e. the fact that the trial will directly move on to the next image if participants press a key during the image, instead of displaying a normal ITI between each image)? Thanks so much, Selen The /responseinterrupt in the target and nontarget trials needs to be set to frames just like in the original script you used. I don't know why you changed that.
|
|
|