Millisecond Forums

Alternating Stimuli with Rating pages

https://forums.millisecond.com/Topic13493.aspx

By ashaw - 6/7/2014

Hi! I'm working on an experiment whereby I'm trying to alternate a stimuli page with a rating page.

I know how to do this manually in the block element as follows:
<block>
/trials = [1,3= noreplacenorepeat(practiceTrial); 2,4= likertpracticeTrial]
</block>

However, I'm trying to automate this alternation using a counter since the number of pages that I have to alternate is quite large. 
I tried to define a count using the following code outside of the block:
<values>
count = 1
</values> 

Then I edited the trial code as follows:
<trial practice>
/stimulusframes = [1=practice]
/ontrialbegin = [ values.count + 2]
</trial>

I then edited my block code from above as follows:

<block>
/trials = [values.count= noreplacenorepeat(practiceTrial); 2,4= likertpracticeTrial]
</block>


This count method did not work because Inquisit did not recognize values.count as being an integer and returned an error saying that trial1 was undefined. I I would appreciate any help in figuring out a simpler count method that can automate alternation of the pages.

Thank you!

By Dave - 6/7/2014

<block>
/trials = [values.count= noreplacenorepeat(practiceTrial); 2,4= likertpracticeTrial]
</block>

The above is not possible -- it's invalid syntax and variables as trial numbers are not allowed. Why don't you simply do:

<block>
/trials = [1-2 = sequence(practiceTrial, likertpracticeTrial)]
</block>

?
Note that

noreplacenorepeat(practiceTrial)

makes no sense if you only have one element (here:practicetrial).

Other options:

#1: Use /branch to run the likerts as in

<trial practicetrial>
...
/ branch = [likert.likertpracticetrial]
</trial>

<block someblock>
/ trials = [1-2=practicetrial]
</block>

#2: If you require really complex selection, use <list> elements.

<list triallist>
...
</list>

<block someblock>
/ trials = [1-2=list-triallist]
</block>

For details, refer to the language reference on the <list> element.

Unrelated addendum:

<trial practice>
/stimulusframes = [1=practice]
/ontrialbegin = [ values.count + 2]
</trial>

is invalid syntax and ought to read

<trial practice>
/stimulusframes = [1=practice]
/ontrialbegin = [ values.count += 2]
</trial>

'+=' is the increment operator; for details please refer to the 'operators' topic in the documentation.
By ashaw - 6/7/2014

The sequence command is perfect for what I need. 
Related to your branch suggestion however, if I did do a branch, could I time the trial and the branch within the trial separately?

Additionally, I had one more quick question. Since I am dealing with a large number of picture stimuli, do I have to hardcode the name of each one individually in my item element, or is there a file reader that can pull in image files from a specified path ( something similar to the python capability)?

Thanks again for the help!
By Dave - 6/7/2014

> Related to your branch suggestion however, if I did do a branch, could I time the trial and the branch within the trial separately?

A /branch is executed when the parent <trial> element terminates. So the answer is "no".

> Since I am dealing with a large number of picture stimuli, do I have to hardcode the name of each one individually in my item
> element?

Yes. The reason is that Inquisit must make sure that every file the script needs actually exists and is available to avoid catastrophic runtime failures on optimize performance.