Joel Cavallo
|
|
Group: Forum Members
Posts: 36,
Visits: 87
|
Hello again, I've ironed out that issue regarding the correct response key, but I've found a new one that concerns the randomized and counterbalanced presentations of the stimuli. The whole experiment is 16 trials that involves 8 presentations of the target pics of interest (ocean or mountain) and 8 with distractor images (lake tree and prairie tree). Because the images are presented side by side, I would like to counterbalance the image presentation (ocean/mountain left/right; mountain/ocean left/right). I would also like to counterbalance the position and type of the probe (probe left/right; probe circle/square). Thus, the combinations of these factors yields 8 possible combinations that I would like to be randomly sampled, but not repeated (i.e. replaced). At this point, the experiment is randomly selecting values, but it appears to be using severl of them more than once (e.g. ocean/mountain in the left/right position, wih the square probe on the left 3 times. I assume this issue surrounds the use of replacement and the original script logic that determined how to randomly select values from my picture lists.
The decision tree of the Block procedure indicates that one of the four lists will be picked, but not replaced.
Once one of these lists is selected, a specific item is chosen from that list using the code: /ontrialbegin = [values.selecteditem = list.PIOP_items.nextvalue]
Then, an item is selected using the logic: /ontrialbegin = [if (values.selecteditem == "1A") {values.itemnumber = 1; values.oceanposition = 1; values.ocean_x = values.target_right_x; values.mountain_x = values.target_left_x}]
After this, there are 3 other logic strings that comprise the entire set of 4 images for this particular list. After trial is over, then I assumed that the item# would be updated so when this trial runs again, it will pick the next value as indicated by list.PIOP_items.nextvalue. The logic I'm referring to is:
/ontrialend = [values.oceanimage = picture.oceanimage.currentitem; values.mountainimage = picture.mountainimage.currentitem]
I have three questions, 1) When the "nextvalue" is determined, what is this value added to? 2) What does the .currentitem refer to? 3) Do I also need to have a similar update logic (/ontrialend = , etc.) for the probe trials, which would indicate the position and type of the probe?
Because the trials are separated into "probe in ocean position", "probe in mountain position" and the 2 distractor conditions, I think this should definitely be possible based on the current sequence of events. Thus, within the "probe in ocean position" PIOP trial, it will select a picture from the list randomly, display the pair either ocean/mountain, or mountain/ocean, then move to the probe trial. Here, the position and type of probe will be randomly selected from the probe list. Because selections from both lists are random, I'm wondering whether Inquisit doesn't know what combinations have been picked from the picture list and probe list, so that the selections come out random, despite the fact that I do not want them to be repeated/replaced. Therefore, I assumed that by using an /ontrialend function, I could update each of the selected items from each list, so that no combinations would be repeated.
At this point, I'm not sure what to do next, so any help would be appreciated. Thanks.
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
> 1) When the "nextvalue" is determined, what is this value added to?
It isn't added to anything.
/ontrialbegin = [values.selecteditem = list.PIOP_items.nextvalue]
samples an item from the specified list. The list's sampling behavior is determined by its configuration (how many items are there, are they supposed to be sampled with or without replacement, etc.).
> 2) What does the .currentitem refer to
currentitem reflects the currently selected item for the given element. Contrary to e.g. nextvalue, currentitem does *not* cause a new item to be sampled, it merely reads out the item that already has been sampled through other means.
> 3) Do I also need to have a similar update logic (/ontrialend = , etc.) for the probe trials, which would indicate the position and type of the probe?
Various values reflecting probe position already exist in your script -- at least they did in previous versions.
|
|
|
Joel Cavallo
|
|
Group: Forum Members
Posts: 36,
Visits: 87
|
OK, I believe I am following your comments. However, I am still not understanding how to make sure that combinations of my images and probe type/position do not repeat themselves. Do you have any ideas? Just to reiterate what I have right now. For each of my 4 picture lists, I state: /replace = false. And each list has 4 items. For the PIOP list, I have the ocean picture repeated 4 times, in the left and right position twice. For the Probe PIOP list, I have two probe pictures (circle2 and square2) in the left and right position.
On any given trial, the program chooses one of 4 lists (fixation_PIOP, fixation_PIMP, fixation_filler_PIOP, fixation_filler_PIMP). These are the starting points for each of the 4 picture lists mentioned above. Once one of those lists is chosen, it picks 1 of 4 pictures (ocean/mountain in left/right position) and then branches to the probe list. It now picks 1 of 4 options (circle/sqaure in left/right position). So, the question is, how do I get these two lists in sync so that there is only 1 presentation of each image/probe combination? Thank you.
-Joel
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
> So, the question is, how do I get these two lists in sync so that there is only 1 presentation of each image/probe combination? You encode the combinations you want using <list> elements and then sample from those combinations as needed. See e.g. http://www.millisecond.com/forums/Topic13986.aspx#bm13987 for an example.
|
|
|
Joel Cavallo
|
|
Group: Forum Members
Posts: 36,
Visits: 87
|
Hello, thanks for pointing me towards that sample code. It was very helpful. However, I'm still in a bit of a quandry because of some of the complications of my task. For example, in the sample code in the link you posted indicates multiple combinations of a single stimulus in the left/right position with 2 timeout values. In my experiment, I need to simultaneously present one image pair (ocean and mountain), which vary in the their position (left/right or right/left). In addition, I have the probe position (left/right) and the probe type (circle/square). Thus, I have 2x2x2 = 8 unique combinations of picturepairposition-probeposition-probetype. The first snag is that I have to know the subject reaction time to categories of those combinations, such as RT when the probe is behind the mountain picture, etc. So, in the code that I have currently, I thought it was a good idea to keep the lists segregated into "probe in ocean position" and "probe in mountain position" so that data capture would be clearer. Is there a different way to do this so that I can obtain data for each picture position, while enabling counterbalancing if each unique picture/probe combination?
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
The method is the same -- regardless of whether you have separate <trial>s and associated <list>s "probe in ocean position" and "probe in mountain position". Encode the combinations for those in separate <list>s, sample from the respective, different lists in your <trial> elements. I.e. have a set of lists encoding the combinations that you sample from in your "PIOP"-trials and another set you sample from in your "PIMP"-trials.
|
|
|
Joel Cavallo
|
|
Group: Forum Members
Posts: 36,
Visits: 87
|
Hello again. So I think that I'm understanding your intructions. It sounds like I should combine my PIOP trial with my probe trial (instead of branching) so that each picture/probeposition/probetype combination is only sampled once. However, if I create a single <trial PIOP> that presents my primary images of interest (eg Ocean or mountan), and then I want a probe image to follow that presentation, how do I state the /stimulusframes so that the ocean image is sequentially followed by the probe?
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
E.g.
/ stimulustimes = [0=a; 500=b; ...]
or the equivalent expressed in display frames (if that's what you prefer to work with).
|
|
|
Joel Cavallo
|
|
Group: Forum Members
Posts: 36,
Visits: 87
|
Ok great, so just to be clear. If I have two images presented on the screen simultaneously and this is followed by a probe picture, I should code: /stimulusframes = [1=ocean; mountain; 2=probe] Would this present the ocean/mountain pair, followed by the probe picture?
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
#1: Syntax issue:
/stimulusframes = [1=ocean; mountain;...]
is wrong. Ought to read
/stimulusframes = [1=ocean, mountain;...]
See the documentation for /stimulustimes for details.
#2: Think about the timing you want:
/stimulusframes = [1=ocean, mountain; 2=probe]
will display 'ocean' and 'mountain' in the trial's 1st frame, 'probe' in the trial's 2nd frame. A frame is *very* short, its duration depending on a given display's refresh rate. For a display running at 100Hz, a frame lasts 10ms.
|
|
|