Group: Administrators
Posts: 13K,
Visits: 105K
|
+x+x+x+x+x+x+x+xHi, Sorry to come back with the same(ish) issue as one month ago, the evaluative conditioning script seems to work well, but I still have one small issue I can't find the solution for. The overall idea is that 20CS (pictures) are selected from a pool of 120CS based on preratings, 10 of them are paired with 10 differents negatives USs (also pictures), and the 10 other with positive USs. All this is random. Then the participant is asked whether he/she has memorized the US associated with each CS and to postrate each 20CS. The preratings work fine, but in the evaluative conditioning task, two pairs of CS-US always share the same CS (which is paired with either a negative of positive US, it depends on the participant). However, there is no problem in the contingency awareness task and the postratings, which consistently use the same CSs as the evaluative conditioning task (except the the CS that has appeared 2 times in the conditioning task doesn't appear two times but only once, and another CS that hasn't been displayed in the conditioning task is presented). Attached is the script. I can't find what's wrong with the conditioning task, every values, number of trials etc. seems to be in place. Thanks in advance It would be really helpful if you could reference the respective elements you are talking about by their names as they appear in the script. As it stands, it is relatively difficult to figure out what to look at. Just glancing over the code, I would suspect there are mistakes. For example: <trial CAPic2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA2=list.randommean.nextindex; values.ucAPic2=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA2, ucAPic] <--- Shouldn't this be ucAPic2???/ trialduration = values.exposureDuration </trial> <trial repeatCA2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; ] / stimulustimes = [0=erase; 1= meanA2, ucAPic2] / validresponse = (57) / trialduration = values.exposureDuration </trial> Thanks for your reply. I did not suspect the problem would come from ucAPic2, since it is supposed to code for US selection and not CSs.The conditioning block is the CACB block, postratings are termed "postratings" and the memorisation block is termed "Block Exclusion". Block CACB present 20 trials with, each corresponding to one specific CS paired with one specific US, then each of the 20 trial is repeated several times (repeatCA, etc.). But I don't get how Block_Exclusion and Postratings manage to display the same 20CS taken from the preratings (which is what I want), and the conditioning block makes this one, consistent mistake in CS selection. Thats's why I suspect the error comes from the conditioning block, but nothing seems odd : <block CACB> / onblockbegin = [values.currentBlock += 1; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;values.ucAPic2=list.randomucAPic.nextindex;values.ucAPic3=list.randomucAPic.nextindex;values.ucAPic4=list.randomucAPic.nextindex;values.ucAPic5=list.randomucAPic.nextindex;values.ucAPic6=list.randomucAPic.nextindex;values.ucAPic7=list.randomucAPic.nextindex;values.ucAPic8=list.randomucAPic.nextindex;values.ucAPic9=list.randomucAPic.nextindex;values.ucAPic10=list.randomucAPic.nextindex; values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; values.ucBPic=list.randomucBPic.nextindex;values.ucBPic2=list.randomucBPic.nextindex;values.ucBPic3=list.randomucBPic.nextindex;values.ucBPic4=list.randomucBPic.nextindex;values.ucBPic5=list.randomucBPic.nextindex;values.ucBPic6=list.randomucBPic.nextindex;values.ucBPic7=list.randomucBPic.nextindex;values.ucBPic8=list.randomucBPic.nextindex;values.ucBPic9=list.randomucBPic.nextindex;values.ucBPic10=list.randomucBPic.nextindex;]> / trials = [1=blockinstructions; 2-21 = noreplace (CAPic,CAPic2,CAPic3,CAPic4,CAPic5,CAPic6,CAPic7,CAPic8,CAPic9, CAPic10, CBPic,CBPic2,CBPic3,CBPic4,CBPic5,CBPic6,CBPic7,CBPic8,CBPic9, CBPic10); 22-130 = noreplace(repeatCA,repeatCA,repeatCA,repeatCA,repeatCA2,repeatCA2,repeatCA2,repeatCA2,repeatCA3,repeatCA3,repeatCA3,repeatCA3,repeatCA4, repeatCA4,repeatCA4,repeatCA4,repeatCA5, repeatCA5,repeatCA5,repeatCA5,repeatCA6,repeatCA6,repeatCA6,repeatCA6,repeatCA7,repeatCA7,repeatCA7,repeatCA7,repeatCA8,repeatCA8,repeatCA8,repeatCA8,repeatCA9,repeatCA9,repeatCA9,repeatCA9,repeatCA10, repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10, repeatCB,repeatCB,repeatCB,repeatCB,repeatCB2,repeatCB2,repeatCB2,repeatCB2,repeatCB3,repeatCB3,repeatCB3,repeatCB3,repeatCB4,repeatCB4,repeatCB4,repeatCB4, repeatCB5,repeatCB5,repeatCB5,repeatCB5,repeatCB6,repeatCB6,repeatCB6,repeatCB6,repeatCB7,repeatCB7,repeatCB7,repeatCB7,repeatCB8, repeatCB8,repeatCB8,repeatCB8,repeatCB9,repeatCB9,repeatCB9,repeatCB9, repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10, target,target,target,target,target,target,target,target,target,target,target,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic) ] </block> I don't understand your objection. <trial CAPic2> is among those 20 trials you pointed out, so of course this mistake matters: <trial CAPic2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA2=list.randommean.nextindex; values.ucAPic2=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA2, ucAPic] / trialduration = values.exposureDuration </trial> / trials = [1=blockinstructions; 2-21 = noreplace (CAPic,CAPic2,CAPic3,CAPic4,CAPic5,CAPic6,CAPic7,CAPic8,CAPic9, CAPic10, CBPic,CBPic2,CBPic3,CBPic4,CBPic5,CBPic6,CBPic7,CBPic8,CBPic9, CBPic10); Here's another thing you could maybe clarify for me: <block CACB> / onblockbegin = [values.currentBlock += 1; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;values.ucAPic2=list.randomucAPic.nextindex;values.ucAPic3=list.randomucAPic.nextindex;values.ucAPic4=list.randomucAPic.nextindex;values.ucAPic5=list.randomucAPic.nextindex;values.ucAPic6=list.randomucAPic.nextindex;values.ucAPic7=list.randomucAPic.nextindex;values.ucAPic8=list.randomucAPic.nextindex;values.ucAPic9=list.randomucAPic.nextindex;values.ucAPic10=list.randomucAPic.nextindex; values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; values.ucBPic=list.randomucBPic.nextindex;values.ucBPic2=list.randomucBPic.nextindex;values.ucBPic3=list.randomucBPic.nextindex;values.ucBPic4=list.randomucBPic.nextindex;values.ucBPic5=list.randomucBPic.nextindex;values.ucBPic6=list.randomucBPic.nextindex;values.ucBPic7=list.randomucBPic.nextindex;values.ucBPic8=list.randomucBPic.nextindex;values.ucBPic9=list.randomucBPic.nextindex;values.ucBPic10=list.randomucBPic.nextindex;] I don't quite understand why you perform those selections above /onblockbegin, only to perform new selections on a per-trial basis during the block, e.g. <trial CAPic> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;] / stimulustimes = [0=erase; 1=meanA, ucAPic] / trialduration = values.exposureDuration </trial> I'm not sure this has anything to do with the problem under discussion, but I do have trouble grasping the reason (which is not to imply that there isn't a good reason). I don't understand your objection. <trial CAPic2> is among those 20 trials you pointed out, so of course this mistake matters: <trial CAPic2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA2=list.randommean.nextindex; values.ucAPic2=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA2, ucAPic] / trialduration = values.exposureDuration </trial> / trials = [1=blockinstructions; 2-21 = noreplace (CAPic,CAPic2,CAPic3,CAPic4,CAPic5,CAPic6,CAPic7,CAPic8,CAPic9, CAPic10, CBPic,CBPic2,CBPic3,CBPic4,CBPic5,CBPic6,CBPic7,CBPic8,CBPic9, CBPic10);
Yes, but that would impact US selection and not CS selection (i.e. two different CSs may be paired with the same US, but there is no reason why one CS would be selected 2 times) <block CACB> / onblockbegin = [values.currentBlock += 1; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;values.ucAPic2=list.randomucAPic.nextindex;values.ucAPic3=list.randomucAPic.nextindex;values.ucAPic4=list.randomucAPic.nextindex;values.ucAPic5=list.randomucAPic.nextindex;values.ucAPic6=list.randomucAPic.nextindex;values.ucAPic7=list.randomucAPic.nextindex;values.ucAPic8=list.randomucAPic.nextindex;values.ucAPic9=list.randomucAPic.nextindex;values.ucAPic10=list.randomucAPic.nextindex; values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; values.ucBPic=list.randomucBPic.nextindex;values.ucBPic2=list.randomucBPic.nextindex;values.ucBPic3=list.randomucBPic.nextindex;values.ucBPic4=list.randomucBPic.nextindex;values.ucBPic5=list.randomucBPic.nextindex;values.ucBPic6=list.randomucBPic.nextindex;values.ucBPic7=list.randomucBPic.nextindex;values.ucBPic8=list.randomucBPic.nextindex;values.ucBPic9=list.randomucBPic.nextindex;values.ucBPic10=list.randomucBPic.nextindex;] I don't quite understand why you perform those selections above /onblockbegin, only to perform new selections on a per-trial basis during the block, e.g. <trial CAPic> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA, ucAPic] / trialduration = values.exposureDuration </trial> I'm not sure this has anything to do with the problem under discussion, but I do have trouble grasping the reason (which is not to imply that there isn't a good reason).
Bad coding I'm afraid :/ but it didn't seem to affect the outcome. But I guess that if those two sets of instructions conflicted, everything would be randomized Okay, thanks. Can you show me some actual data that shows "one CS [...] selected 2 times" in the respective block? NB: This isn't supposed to imply that I don't believe you. I do believe you. I hope that this data will give me some more hints as to where to look for mistakes. Nevermind. Here's the problem: <list randommean> / poolsize = 20 </list> The list has 20 items. A <list>'s default behavior is to allow for *one* selection per trial, i.e. /selectionrate=trial. What this does then <block CACB> / onblockbegin = [...; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; ... values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; ...;]
is effectively sample *a single item* from the list /onblockbegin. I.e. when the block starts actually running trials, there are only *19* unsampled items left in the list. The trials then sample from these 19 items without replacement, but since 20 trials sample from the list, the list has to reset: All 20 items are then available again for the final trial, and you are likely to sample an item that has been sampled previously.
Solution: Remove the unnecessary /onblockbegin sampling logic.
|
Group: Forum Members
Posts: 19,
Visits: 64
|
+x+x+x+x+x+x+x+x+xHi, Sorry to come back with the same(ish) issue as one month ago, the evaluative conditioning script seems to work well, but I still have one small issue I can't find the solution for. The overall idea is that 20CS (pictures) are selected from a pool of 120CS based on preratings, 10 of them are paired with 10 differents negatives USs (also pictures), and the 10 other with positive USs. All this is random. Then the participant is asked whether he/she has memorized the US associated with each CS and to postrate each 20CS. The preratings work fine, but in the evaluative conditioning task, two pairs of CS-US always share the same CS (which is paired with either a negative of positive US, it depends on the participant). However, there is no problem in the contingency awareness task and the postratings, which consistently use the same CSs as the evaluative conditioning task (except the the CS that has appeared 2 times in the conditioning task doesn't appear two times but only once, and another CS that hasn't been displayed in the conditioning task is presented). Attached is the script. I can't find what's wrong with the conditioning task, every values, number of trials etc. seems to be in place. Thanks in advance It would be really helpful if you could reference the respective elements you are talking about by their names as they appear in the script. As it stands, it is relatively difficult to figure out what to look at. Just glancing over the code, I would suspect there are mistakes. For example: <trial CAPic2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA2=list.randommean.nextindex; values.ucAPic2=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA2, ucAPic] <--- Shouldn't this be ucAPic2???/ trialduration = values.exposureDuration </trial> <trial repeatCA2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; ] / stimulustimes = [0=erase; 1= meanA2, ucAPic2] / validresponse = (57) / trialduration = values.exposureDuration </trial> Thanks for your reply. I did not suspect the problem would come from ucAPic2, since it is supposed to code for US selection and not CSs.The conditioning block is the CACB block, postratings are termed "postratings" and the memorisation block is termed "Block Exclusion". Block CACB present 20 trials with, each corresponding to one specific CS paired with one specific US, then each of the 20 trial is repeated several times (repeatCA, etc.). But I don't get how Block_Exclusion and Postratings manage to display the same 20CS taken from the preratings (which is what I want), and the conditioning block makes this one, consistent mistake in CS selection. Thats's why I suspect the error comes from the conditioning block, but nothing seems odd : <block CACB> / onblockbegin = [values.currentBlock += 1; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;values.ucAPic2=list.randomucAPic.nextindex;values.ucAPic3=list.randomucAPic.nextindex;values.ucAPic4=list.randomucAPic.nextindex;values.ucAPic5=list.randomucAPic.nextindex;values.ucAPic6=list.randomucAPic.nextindex;values.ucAPic7=list.randomucAPic.nextindex;values.ucAPic8=list.randomucAPic.nextindex;values.ucAPic9=list.randomucAPic.nextindex;values.ucAPic10=list.randomucAPic.nextindex; values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; values.ucBPic=list.randomucBPic.nextindex;values.ucBPic2=list.randomucBPic.nextindex;values.ucBPic3=list.randomucBPic.nextindex;values.ucBPic4=list.randomucBPic.nextindex;values.ucBPic5=list.randomucBPic.nextindex;values.ucBPic6=list.randomucBPic.nextindex;values.ucBPic7=list.randomucBPic.nextindex;values.ucBPic8=list.randomucBPic.nextindex;values.ucBPic9=list.randomucBPic.nextindex;values.ucBPic10=list.randomucBPic.nextindex;]> / trials = [1=blockinstructions; 2-21 = noreplace (CAPic,CAPic2,CAPic3,CAPic4,CAPic5,CAPic6,CAPic7,CAPic8,CAPic9, CAPic10, CBPic,CBPic2,CBPic3,CBPic4,CBPic5,CBPic6,CBPic7,CBPic8,CBPic9, CBPic10); 22-130 = noreplace(repeatCA,repeatCA,repeatCA,repeatCA,repeatCA2,repeatCA2,repeatCA2,repeatCA2,repeatCA3,repeatCA3,repeatCA3,repeatCA3,repeatCA4, repeatCA4,repeatCA4,repeatCA4,repeatCA5, repeatCA5,repeatCA5,repeatCA5,repeatCA6,repeatCA6,repeatCA6,repeatCA6,repeatCA7,repeatCA7,repeatCA7,repeatCA7,repeatCA8,repeatCA8,repeatCA8,repeatCA8,repeatCA9,repeatCA9,repeatCA9,repeatCA9,repeatCA10, repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10,repeatCA10, repeatCB,repeatCB,repeatCB,repeatCB,repeatCB2,repeatCB2,repeatCB2,repeatCB2,repeatCB3,repeatCB3,repeatCB3,repeatCB3,repeatCB4,repeatCB4,repeatCB4,repeatCB4, repeatCB5,repeatCB5,repeatCB5,repeatCB5,repeatCB6,repeatCB6,repeatCB6,repeatCB6,repeatCB7,repeatCB7,repeatCB7,repeatCB7,repeatCB8, repeatCB8,repeatCB8,repeatCB8,repeatCB9,repeatCB9,repeatCB9,repeatCB9, repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10,repeatCB10, target,target,target,target,target,target,target,target,target,target,target,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic,distractorPic) ] </block> I don't understand your objection. <trial CAPic2> is among those 20 trials you pointed out, so of course this mistake matters: <trial CAPic2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA2=list.randommean.nextindex; values.ucAPic2=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA2, ucAPic] / trialduration = values.exposureDuration </trial> / trials = [1=blockinstructions; 2-21 = noreplace (CAPic,CAPic2,CAPic3,CAPic4,CAPic5,CAPic6,CAPic7,CAPic8,CAPic9, CAPic10, CBPic,CBPic2,CBPic3,CBPic4,CBPic5,CBPic6,CBPic7,CBPic8,CBPic9, CBPic10); Here's another thing you could maybe clarify for me: <block CACB> / onblockbegin = [values.currentBlock += 1; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;values.ucAPic2=list.randomucAPic.nextindex;values.ucAPic3=list.randomucAPic.nextindex;values.ucAPic4=list.randomucAPic.nextindex;values.ucAPic5=list.randomucAPic.nextindex;values.ucAPic6=list.randomucAPic.nextindex;values.ucAPic7=list.randomucAPic.nextindex;values.ucAPic8=list.randomucAPic.nextindex;values.ucAPic9=list.randomucAPic.nextindex;values.ucAPic10=list.randomucAPic.nextindex; values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; values.ucBPic=list.randomucBPic.nextindex;values.ucBPic2=list.randomucBPic.nextindex;values.ucBPic3=list.randomucBPic.nextindex;values.ucBPic4=list.randomucBPic.nextindex;values.ucBPic5=list.randomucBPic.nextindex;values.ucBPic6=list.randomucBPic.nextindex;values.ucBPic7=list.randomucBPic.nextindex;values.ucBPic8=list.randomucBPic.nextindex;values.ucBPic9=list.randomucBPic.nextindex;values.ucBPic10=list.randomucBPic.nextindex;] I don't quite understand why you perform those selections above /onblockbegin, only to perform new selections on a per-trial basis during the block, e.g. <trial CAPic> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;] / stimulustimes = [0=erase; 1=meanA, ucAPic] / trialduration = values.exposureDuration </trial> I'm not sure this has anything to do with the problem under discussion, but I do have trouble grasping the reason (which is not to imply that there isn't a good reason). I don't understand your objection. <trial CAPic2> is among those 20 trials you pointed out, so of course this mistake matters: <trial CAPic2> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA2=list.randommean.nextindex; values.ucAPic2=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA2, ucAPic] / trialduration = values.exposureDuration </trial> / trials = [1=blockinstructions; 2-21 = noreplace (CAPic,CAPic2,CAPic3,CAPic4,CAPic5,CAPic6,CAPic7,CAPic8,CAPic9, CAPic10, CBPic,CBPic2,CBPic3,CBPic4,CBPic5,CBPic6,CBPic7,CBPic8,CBPic9, CBPic10);
Yes, but that would impact US selection and not CS selection (i.e. two different CSs may be paired with the same US, but there is no reason why one CS would be selected 2 times) <block CACB> / onblockbegin = [values.currentBlock += 1; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex;values.ucAPic2=list.randomucAPic.nextindex;values.ucAPic3=list.randomucAPic.nextindex;values.ucAPic4=list.randomucAPic.nextindex;values.ucAPic5=list.randomucAPic.nextindex;values.ucAPic6=list.randomucAPic.nextindex;values.ucAPic7=list.randomucAPic.nextindex;values.ucAPic8=list.randomucAPic.nextindex;values.ucAPic9=list.randomucAPic.nextindex;values.ucAPic10=list.randomucAPic.nextindex; values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; values.ucBPic=list.randomucBPic.nextindex;values.ucBPic2=list.randomucBPic.nextindex;values.ucBPic3=list.randomucBPic.nextindex;values.ucBPic4=list.randomucBPic.nextindex;values.ucBPic5=list.randomucBPic.nextindex;values.ucBPic6=list.randomucBPic.nextindex;values.ucBPic7=list.randomucBPic.nextindex;values.ucBPic8=list.randomucBPic.nextindex;values.ucBPic9=list.randomucBPic.nextindex;values.ucBPic10=list.randomucBPic.nextindex;] I don't quite understand why you perform those selections above /onblockbegin, only to perform new selections on a per-trial basis during the block, e.g. <trial CAPic> / ontrialbegin = [ values.csAPosition = list.csAPosition.nextvalue; values.ucPosition = expressions.ucAPosition; values.meanA=list.randommean.nextindex; values.ucAPic=list.randomucAPic.nextindex; ] / stimulustimes = [0=erase; 1=meanA, ucAPic] / trialduration = values.exposureDuration </trial> I'm not sure this has anything to do with the problem under discussion, but I do have trouble grasping the reason (which is not to imply that there isn't a good reason).
Bad coding I'm afraid :/ but it didn't seem to affect the outcome. But I guess that if those two sets of instructions conflicted, everything would be randomized Okay, thanks. Can you show me some actual data that shows "one CS [...] selected 2 times" in the respective block? NB: This isn't supposed to imply that I don't believe you. I do believe you. I hope that this data will give me some more hints as to where to look for mistakes. Nevermind. Here's the problem: <list randommean> / poolsize = 20 </list> The list has 20 items. A <list>'s default behavior is to allow for *one* selection per trial, i.e. /selectionrate=trial. What this does then <block CACB> / onblockbegin = [...; values.meanA=list.randommean.nextindex; values.meanA2=list.randommean.nextindex;values.meanA3=list.randommean.nextindex;values.meanA4=list.randommean.nextindex;values.meanA5=list.randommean.nextindex;values.meanA6=list.randommean.nextindex;values.meanA7=list.randommean.nextindex;values.meanA8=list.randommean.nextindex;values.meanA9=list.randommean.nextindex;values.meanA10=list.randommean.nextindex; ... values.meanB=list.randommean.nextindex; values.meanB2=list.randommean.nextindex; values.meanB3=list.randommean.nextindex; values.meanB4=list.randommean.nextindex; values.meanB5=list.randommean.nextindex; values.meanB6=list.randommean.nextindex; values.meanB7=list.randommean.nextindex; values.meanB8=list.randommean.nextindex; values.meanB9=list.randommean.nextindex; values.meanB10=list.randommean.nextindex; ...;]
is effectively sample *a single item* from the list /onblockbegin. I.e. when the block starts actually running trials, there are only *19* unsampled items left in the list. The trials then sample from these 19 items without replacement, but since 20 trials sample from the list, the list has to reset: All 20 items are then available again for the final trial, and you are likely to sample an item that has been sampled previously.
Solution: Remove the unnecessary /onblockbegin sampling logic. Thanks a lot! Fast and efficient, as usual :)
|