By AliciaShen - 9/1/2016
Dear divine beings of the inquisit:
I am adapting the "SINGLE N-BACK TASK NON_ADAPTIVE (2- KEY VERSION)" by Katja Borchert to complete a 1 back task. I have a sequence of 7 stimuli, and would like all adjacent pairs (stimuli 1&2, stimuli 2&3 etc....) to be presented back to back for all pairs for at least two times within a block. How could I accomplish that without making the block unnecessarily long?
Currently I have target appearing 50% of the time, and the rest of the nontargets randomly chosen from the rest of the stimuli. Below is code for selecting the stimuli. Any help/suggestions are very welcomed!
############################## ######STIMULI-SELECTION: face
*list.notargetvalue selects any of the 7 faces (item indices) but the one selected for values.currenttarget <list notargetvalue> /items = (1, 2, 3, 4, 5, 6, 7) / not = (values.currenttarget) / replace = true </list>
***randomly selects one of the faces as start value <picture startshape> / items = shapes /select = replace /size = (40%, 40%) </picture>
***selects any shape but the established target <picture nontargetshape> / items = shapes / select = notargetvalue /size = (40%, 40%) </picture>
***selects the item with the same item number as the established target <picture targetshape> /items = shapes /select = values.currenttarget /size = (40%, 40%) </picture>
############################## ######trila nontarget
<trial nontarget> / stimulustimes = [0 = nontargetshape] / validresponse = (38, 30) / correctresponse = (38) / ontrialbegin = [ {if (values.N == 1) values.currenttarget = values.minus1}; {if (values.N == 2) values.currenttarget = values.minus2}; {if (values.N == 3) values.currenttarget = values.minus3}; {if (values.N == 4) values.currenttarget = values.minus4} ] / ontrialbegin = [values.trial_Hit = 0; values.trial_Miss = 0; values.trial_CR = 0; values.trial_FA = 0] / ontrialend = [ values.minus4 = values.minus3; values.minus3 = values.minus2; values.minus2 = values.minus1; values.minus1 = picture.nontargetshape.currentitemnumber; values.CorrReject = values.CorrReject + trial.nontarget.correct; values.trial_CR = trial.nontarget.correct; {if (trial.nontarget.response == 30) {values.FalseA = values.FalseA + trial.nontarget.error; values.trial_FA = trial.nontarget.error; values.TotalFA = values.TotalFA + trial.nontarget.error}}; values.DV = (values.TotalHits - values.TotalFA)/values.TotalBlocks; ] / responsetime = 0 / posttrialpause = 250 </trial>
|
By Dave - 9/1/2016
> I have a sequence of 7 stimuli, and would like all adjacent pairs (stimuli 1&2, stimuli 2&3 etc....) to be presented back to back for all pairs > for at least two times within a block. How could I accomplish that without making the block unnecessarily long?
Construct one or several sequences that satisfy this property by hand. Then have the script select from the sequence sequentially (/selectionmode = sequence). I don't see a way to do this "on the fly" using only random selection -- there are too many constraints involved.
|
By AliciaShen - 9/2/2016
@ Dave, thanks a lot for the reponse!
Before I hardcode possible sequences (not ideal since the number of permutations are huge), I wonder if any one of the following method would work on inquisit?
1) Create a counter that counts the number of adjacent pairs, if exceeding a certain number than end the block/experiment?
2) Create a list of values that are not adjacent to the current target (see below) ############This syntax is currently not workinng for me###########
<list notargetvalue_notadjacent> /items = (1, 2, 3, 4, 5, 6, 7) / not = (values.currenttarget) && (values.currenttarget - 1) && (values.currenttarget + 1) / replace = true </list>
|
By Dave - 9/2/2016
I can see #1 working *potentially*, although I don't see how it would necessarily fulfill your "[the] block [should not be] unnecessarily long" requirement, because you have no direct control when sufficient "adjacent pairings" occur. At any rate, I'd say give this a go and just see if it works reasonably well for your needs. You'll need to set up several global variables (<values> entries) to keep track of the instances / counts of the various pairings. You can then use those counts in the <block>s /stop attribute to terminate it when some criterion is reached.
I frankly don't quite understand the 2nd idea. Syntax issues aside, lets say that the current target is item #4. Then, apparently, you'd want that list to exclude items #3, #4, and #5 from being selected. I'm struggling to figure out how this would end up satisfying "[I] would like all adjacent pairs (stimuli 1&2, stimuli 2&3 etc....) to be presented back to back for all pairs for at least two times." Intuitively, it seems to me that this setup would make it *harder* to achieve the desired outcome.
|
|