Millisecond Forums

Does the variable function still exist in Inquisit 5?

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

By pops - 5/22/2019

Hi there.

I'm back using Inquisit - version 5 is quite different from previous versions (although it has been a while)....

I'm keen to assign some parameters based on Group number. According to this post:https://www.millisecond.com/forums/Topic23124.aspx I can use the <variable> function - but there is nothing in the help about this function? I'm not sure whether the function should still be used or not?

I want to set up different numbers of trials etc, depending on the group number. So I was thinking:

<variables>
/group = (1 of 2) (blocktrials=blocktrialsGroup1)
/group = (2 of 2) (blocktrials=blocktrialsGroup1)
</variables>

<parameters>
/blocktrialsGroup1 = 24
/blocktrialsGroup2 = 44
</parameters>

Then when I call the parameter
<block runExp>
/stop = [
values.count_sequence == parameters.blocktrials]
</block>

It of course doesn't work (in the above example I don't actually have a parameters.blocktrials so not that surprising). But I've tried to have an empty parameter and then make /blocktrialsGroup1 a value, I've tried to have them all as values, but I'm not getting anywhere. But I'm also not sure whether the variable function should be used or not?
Advice appreciated
Thanks
By Dave - 5/22/2019

pops - 5/22/2019
Hi there.

I'm back using Inquisit - version 5 is quite different from previous versions (although it has been a while)....

I'm keen to assign some parameters based on Group number. According to this post:https://www.millisecond.com/forums/Topic23124.aspx I can use the <variable> function - but there is nothing in the help about this function? I'm not sure whether the function should still be used or not?

I want to set up different numbers of trials etc, depending on the group number. So I was thinking:

<variables>
/group = (1 of 2) (blocktrials=blocktrialsGroup1)
/group = (2 of 2) (blocktrials=blocktrialsGroup1)
</variables>

<parameters>
/blocktrialsGroup1 = 24
/blocktrialsGroup2 = 44
</parameters>

Then when I call the parameter
<block runExp>
/stop = [
values.count_sequence == parameters.blocktrials]
</block>

It of course doesn't work (in the above example I don't actually have a parameters.blocktrials so not that surprising). But I've tried to have an empty parameter and then make /blocktrialsGroup1 a value, I've tried to have them all as values, but I'm not getting anywhere. But I'm also not sure whether the variable function should be used or not?
Advice appreciated
Thanks

The <variables> element is still there for compatibility reasons, but its use is generally discouraged except for a very limited set of use cases. What <variables> does (and always did) is substitute entire elements. Like this:

<variables>
/group = (1 of 2) (exampleitems=items_a)
/group = (2 of 2) (exampleitems=items_b)
/groupassignment = subjectnumber
</variables>

<block exampleblock>
/ trials = [1-4 = exampletrial]
</block>

<trial exampletrial>
/ stimulusframes = [1=exampletext]
/ validresponse = (57)
</trial>

<text exampletext>
/ items = exampleitems
/ select = sequence
</text>

<item items_a>
/ 1 = "A1"
/ 2 = "A2"
/ 3 = "A3"
/ 4 = "A4"
</item>

<item items_b>
/ 1 = "B1"
/ 2 = "B2"
/ 3 = "B3"
/ 4 = "B4"
</item>

Notice that there is no <item exampleitems> element in the above -- that is the variable or placeholder.

For group #1 <item items_a> is substituted for <item exampleitems>.
For group #2 <item items_b> is substituted for <item exampleitems>.

So, in other words, the way you're trying to use the <variables> element here is not the way it's supposed to be used and it won't work (and never would have worked) that way.

Instead, what you'll want to do is something like this:

<parameters>
/blocktrialsGroup1 = 24
/blocktrialsGroup2 = 44
</parameters>

<values>
/ blocktrials = 0
...
</values>

// condition 1: 24 trials
<expt>
/ onexptbegin = [values.blocktrials = parameters.blocktrialsGroup1; ]
/ blocks = [1=runExp]
/ subjects = (1 of 2)
/ groupassignment = subjectnumber
</expt>

// condition 2: 44 trials
<expt>
/ onexptbegin = [values.blocktrials = parameters.blocktrialsGroup2; ]
/ blocks = [1=runExp]
/ subjects = (2 of 2)
/ groupassignment = subjectnumber
</expt>

with

<block runExp>
/stop = [
values.count_sequence == values.blocktrials]
...
</block>
By pops - 5/22/2019

Dave - 5/22/2019
pops - 5/22/2019
Hi there.

I'm back using Inquisit - version 5 is quite different from previous versions (although it has been a while)....

I'm keen to assign some parameters based on Group number. According to this post:https://www.millisecond.com/forums/Topic23124.aspx I can use the <variable> function - but there is nothing in the help about this function? I'm not sure whether the function should still be used or not?

I want to set up different numbers of trials etc, depending on the group number. So I was thinking:

<variables>
/group = (1 of 2) (blocktrials=blocktrialsGroup1)
/group = (2 of 2) (blocktrials=blocktrialsGroup1)
</variables>

<parameters>
/blocktrialsGroup1 = 24
/blocktrialsGroup2 = 44
</parameters>

Then when I call the parameter
<block runExp>
/stop = [
values.count_sequence == parameters.blocktrials]
</block>

It of course doesn't work (in the above example I don't actually have a parameters.blocktrials so not that surprising). But I've tried to have an empty parameter and then make /blocktrialsGroup1 a value, I've tried to have them all as values, but I'm not getting anywhere. But I'm also not sure whether the variable function should be used or not?
Advice appreciated
Thanks

The <variables> element is still there for compatibility reasons, but its use is generally discouraged except for a very limited set of use cases. What <variables> does (and always did) is substitute entire elements. Like this:

<variables>
/group = (1 of 2) (exampleitems=items_a)
/group = (2 of 2) (exampleitems=items_b)
/groupassignment = subjectnumber
</variables>

<block exampleblock>
/ trials = [1-4 = exampletrial]
</block>

<trial exampletrial>
/ stimulusframes = [1=exampletext]
/ validresponse = (57)
</trial>

<text exampletext>
/ items = exampleitems
/ select = sequence
</text>

<item items_a>
/ 1 = "A1"
/ 2 = "A2"
/ 3 = "A3"
/ 4 = "A4"
</item>

<item items_b>
/ 1 = "B1"
/ 2 = "B2"
/ 3 = "B3"
/ 4 = "B4"
</item>

Notice that there is no <item exampleitems> element in the above -- that is the variable or placeholder.

For group #1 <item items_a> is substituted for <item exampleitems>.
For group #2 <item items_b> is substituted for <item exampleitems>.

So, in other words, the way you're trying to use the <variables> element here is not the way it's supposed to be used and it won't work (and never would have worked) that way.

Instead, what you'll want to do is something like this:

<parameters>
/blocktrialsGroup1 = 24
/blocktrialsGroup2 = 44
</parameters>

<values>
/ blocktrials = 0
...
</values>

// condition 1: 24 trials
<expt>
/ onexptbegin = [values.blocktrials = parameters.blocktrialsGroup1; ]
/ blocks = [1=runExp]
/ subjects = (1 of 2)
/ groupassignment = subjectnumber
</expt>

// condition 2: 44 trials
<expt>
/ onexptbegin = [values.blocktrials = parameters.blocktrialsGroup2; ]
/ blocks = [1=runExp]
/ subjects = (2 of 2)
/ groupassignment = subjectnumber
</expt>

with

<block runExp>
/stop = [
values.count_sequence == values.blocktrials]
...
</block>

Fab thanks