dragdrop expt


Author
Message
abhi
abhi
Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)
Group: Forum Members
Posts: 114, Visits: 558
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Hi,

So in myblock2 I have used ‘postive2/negative2’ where I have reversed the positions of these elements (within subjects). So, each subjects is being shown positive items on (30%, 80%) and (70%,80%) in half of the trials.

But I am not able to get the data element properly. With this ‘data’ command, data is being recorded for all columns, even if it is not there (for e.g., for first/second trials, the columns of third/fourth trials should be blank but it is not blank. Similarly, when ‘positive/negative’ items are shown, the columns of ‘positive2/negative2’ should be blank, but they are not blank. Is this data command wrong?
Thanks





Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
abhi - Thursday, November 29, 2018
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Hi,

So in myblock2 I have used ‘postive2/negative2’ where I have reversed the positions of these elements (within subjects). So, each subjects is being shown positive items on (30%, 80%) and (70%,80%) in half of the trials.

But I am not able to get the data element properly. With this ‘data’ command, data is being recorded for all columns, even if it is not there (for e.g., for first/second trials, the columns of third/fourth trials should be blank but it is not blank. Similarly, when ‘positive/negative’ items are shown, the columns of ‘positive2/negative2’ should be blank, but they are not blank. Is this data command wrong?
Thanks





No, it's not wrong, that's the expected behavior. You're logging properties. Suppose the experiment starts with one instance of trial.first/trial.second. Then there'll be a row in the data file, that reflects the response properties of trial.first and trial.second, but the column for trial.third.response and trial.fourth.response will be blank since *no instances of trial.third and trial.fourth* have been run at this point, and there is nothing those properties could reflect.

Now suppose, there's an instance of trial.third/trial.fourth next. Then you'll have values for the trial.third.response and trial.fourth.response properties in that row, reflecting the responses given. BUT, of course, there'll also be values in the trial.first.response and trial.second.response columns -- an instance of trial.first and trial.second ran before that so those properties have values as they should. Those columns should in fact NOT be blank, they do and should reflect the value they *currently* have until that value changes.

abhi
abhi
Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)
Group: Forum Members
Posts: 114, Visits: 558
Dave - Friday, November 30, 2018
abhi - Thursday, November 29, 2018
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Hi,

So in myblock2 I have used ‘postive2/negative2’ where I have reversed the positions of these elements (within subjects). So, each subjects is being shown positive items on (30%, 80%) and (70%,80%) in half of the trials.

But I am not able to get the data element properly. With this ‘data’ command, data is being recorded for all columns, even if it is not there (for e.g., for first/second trials, the columns of third/fourth trials should be blank but it is not blank. Similarly, when ‘positive/negative’ items are shown, the columns of ‘positive2/negative2’ should be blank, but they are not blank. Is this data command wrong?
Thanks





No, it's not wrong, that's the expected behavior. You're logging properties. Suppose the experiment starts with one instance of trial.first/trial.second. Then there'll be a row in the data file, that reflects the response properties of trial.first and trial.second, but the column for trial.third.response and trial.fourth.response will be blank since *no instances of trial.third and trial.fourth* have been run at this point, and there is nothing those properties could reflect.

Now suppose, there's an instance of trial.third/trial.fourth next. Then you'll have values for the trial.third.response and trial.fourth.response properties in that row, reflecting the responses given. BUT, of course, there'll also be values in the trial.first.response and trial.second.response columns -- an instance of trial.first and trial.second ran before that so those properties have values as they should. Those columns should in fact NOT be blank, they do and should reflect the value they *currently* have until that value changes.
Hi Dave,

Thanks.

Is there an easy way to sort out the rows to identify first/third trials? Something  like, ‘1 for text entry’ and ‘0 for no entry /repeat’; Something which can be easily filtered out later to identify first/third trials.

Thanks



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
abhi - Friday, November 30, 2018
Dave - Friday, November 30, 2018
abhi - Thursday, November 29, 2018
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Hi,

So in myblock2 I have used ‘postive2/negative2’ where I have reversed the positions of these elements (within subjects). So, each subjects is being shown positive items on (30%, 80%) and (70%,80%) in half of the trials.

But I am not able to get the data element properly. With this ‘data’ command, data is being recorded for all columns, even if it is not there (for e.g., for first/second trials, the columns of third/fourth trials should be blank but it is not blank. Similarly, when ‘positive/negative’ items are shown, the columns of ‘positive2/negative2’ should be blank, but they are not blank. Is this data command wrong?
Thanks





No, it's not wrong, that's the expected behavior. You're logging properties. Suppose the experiment starts with one instance of trial.first/trial.second. Then there'll be a row in the data file, that reflects the response properties of trial.first and trial.second, but the column for trial.third.response and trial.fourth.response will be blank since *no instances of trial.third and trial.fourth* have been run at this point, and there is nothing those properties could reflect.

Now suppose, there's an instance of trial.third/trial.fourth next. Then you'll have values for the trial.third.response and trial.fourth.response properties in that row, reflecting the responses given. BUT, of course, there'll also be values in the trial.first.response and trial.second.response columns -- an instance of trial.first and trial.second ran before that so those properties have values as they should. Those columns should in fact NOT be blank, they do and should reflect the value they *currently* have until that value changes.
Hi Dave,

Thanks.

Is there an easy way to sort out the rows to identify first/third trials? Something  like, ‘1 for text entry’ and ‘0 for no entry /repeat’; Something which can be easily filtered out later to identify first/third trials.

Thanks



You have that information already in the blockcode column. Whenever the blockcode indicates "myblock", you know that only first/second trials were run in that block, anything logged in the third/fourth trial columns is irrelevant for that block. Conversely, whenever the blockcode is "myblock2", you know that only third/fourth trials were administered during that block, and anything logged in th first/second trial columns is irrelevant for that block.

If you want to clean up your data further, you can use <values>. If, ultimately, you want to run some kind of mixed blocks, and can't use the blockcode column to identify trial type, do something like this:

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ trialtype = ""
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
values.trialtype = "first/second";
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = noreplace(first, third)]
</block>

<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
values.trialtype = "third/fourth";
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
values.trialtype
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>

abhi
abhi
Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)
Group: Forum Members
Posts: 114, Visits: 558
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Thanks for this Dave. Working superb.

I noticed that at the time of launch there is an option to show participants a random confirmation code by millisecond. How to capture that code in the data element. Is there a documentation about confirmation code in the Help section.

Thanks


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
abhi - Thursday, December 6, 2018
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Thanks for this Dave. Working superb.

I noticed that at the time of launch there is an option to show participants a random confirmation code by millisecond. How to capture that code in the data element. Is there a documentation about confirmation code in the Help section.

Thanks


The confirmation code is just the subject ID, it's logged in the data file already in the subject column.

abhi
abhi
Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)Guru (7.3K reputation)
Group: Forum Members
Posts: 114, Visits: 558
Dave - Thursday, December 6, 2018
abhi - Thursday, December 6, 2018
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Thanks for this Dave. Working superb.

I noticed that at the time of launch there is an option to show participants a random confirmation code by millisecond. How to capture that code in the data element. Is there a documentation about confirmation code in the Help section.

Thanks


The confirmation code is just the subject ID, it's logged in the data file already in the subject column.

Hi, Just noticed that even if someone aborts the expt, still he/she gets the confirmation code. Anyway to stop that.
Thanks.

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
abhi - Wednesday, December 19, 2018
Dave - Thursday, December 6, 2018
abhi - Thursday, December 6, 2018
Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




Dave - Thursday, November 29, 2018
abhi - Thursday, November 29, 2018
Dave - Monday, November 26, 2018
abhi - Saturday, November 24, 2018
Hi Dave,
This is working fine. But I noticed that the data is messy (I tried only test monkey).

Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

Thanks
Abhi

> Firstly, ‘Reset’ is also recorded. It will pile up to big chunk in case there are 100 respondents. Is there a way not to record the ‘reset’ data in case someone resets the trials?

You can set the trials to /recorddata=false and only /branch to a separate <trial> that records the data of interest when the participant responds "done".

> Secondly, although, when I try the expt. manually, I can’t drop the same target onto the same source (seems impossible). But data from test monkey shows many responses as same for the first and second trials (i.e. ‘me’and ‘me’ as responses in data for both first and second trials).

This is normal; It's an artifact of how the monkey works and doesn't indicate anything wrong with the code. In essence, all the monkey does is select one of the options listed in /validresponse at random.

> Thirdly, data doesn’t show which item/text/word  was drooped over droptargets (e.g., ‘refreshed’,‘clogged arteries’ etc.). I tried ‘Stimulusitem’ in column, but it shows only the stimulus items shown on the screen but not specifically which ‘text/item/word’was dragged over which target.  Is there a way to find that?

You can build some /ontrialend logic that reads the dragged elements' position. That would tell you which stimulus / item was dragged where.


<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.positem
</text>

<text negative>
/ items = negative
/ valign = center
/ halign = center
/ position = (50%, 50%)
/ txcolor = green
/ fontstyle = ("Arial", 15%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ valign = bottom
/ halign = center
/ position = (50%, 95%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 95%)
</text>

<text smoking>
/ items = smoking
/ valign = top
/ halign = center
/ position = (50%, 5%)
/ txcolor = black
/ fontstyle = ("Arial", 15%)
/ erase = false
/ droptarget = true
/ dropposition = (50%, 5%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (90%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 50%;
text.negative.hposition = 70%;
text.negative.vposition = 50%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 50%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 50%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<expt>
/ blocks = [1=myblock]
</expt>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
text.negative.currentitem text.negative.vposition
text.positive.currentitem text.positive.vposition)
/ separatefiles = true
</data>


Hi,

In this I want to counterbalance the positon of 'source and target' and so created two additional trials - 'third and fourth' with 'me2 & smoking2' and 'positive2& negative2' (at different positions).
For data I used the following. But  does'nt work. Data shows responses in all colummns. For e.g., in first and second trials, it shows entry for third and fourth trials also (when only first and second trials were played). Is something wrong here?

Thanks

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




I'm not sure how I'm supposed to answer that without the actual code.
Sorry about that,
Here it is. Basically I just want to couterbalance the positions of droptarget and dropsouce between subjects

<item negative>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<item smoking>
/1 = "smoking"
</item>

<item me>
/1 = "me"
</item>

<text positive>
/ items = positive
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative>
/ items = negative
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<list negitemnumbers>
/ poolsize = 10
</list>

<list positemnumbers>
/ poolsize = 10
</list>

<values>
/ negitem = 1
/ positem = 1
/ reset = false
</values>


<text me>
/ items = me
/ position = (30%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (30%, 30%)
</text>

<text smoking>
/ items = smoking
/ position = (70%, 30%)
/ txcolor = black
/ fontstyle = ("Arial", 5%)
/ erase = false
/ droptarget = true
/ dropposition = (70%, 30%)
</text>

<text reset>
/ items = ("RESET")
/ size = (5%, 3%)
/ vjustify = center
/ txbgcolor = grey
/ position = (50%, 90%)
</text>


<trial first>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive.hposition = 30%;
text.positive.vposition = 80%;
text.negative.hposition = 70%;
text.negative.vposition = 80%;
text.positive.dropsource = true;
text.negative.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.first.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.first.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.second
]
/ recorddata = false
</trial>

<trial second>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive.vposition != 80%)
text.positive.dropsource = false;
]
/ ontrialbegin = [
if (text.negative.vposition != 80%)
text.negative.dropsource = false;
]
/ stimulusframes = [1 = positive, negative, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.second.response == "reset"){
values.reset = true;
trial.first;
};
]
/ branch = [
if (trial.second.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<trial record_round>
/ trialduration = 0
/ validresponse = (0)
/ recorddata = true
</trial>

<block myblock>
/trials = [1-10 = first]
</block>

<block myblock2>
/trials = [1-10 = third]
</block>

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>




<trial third>
/ ontrialbegin = [
if (!values.reset) {
values.positem = list.positemnumbers.nextindex;
values.negitem = list.negitemnumbers.nextindex;
};
]
/ ontrialbegin = [
text.positive2.hposition = 30%;
text.positive2.vposition = 80%;
text.negative2.hposition = 70%;
text.negative2.vposition = 80%;
text.positive2.dropsource = true;
text.negative2.dropsource = true;
text.me.droptarget = true;
text.smoking.droptarget = true;
]
/ ontrialend = [
if (trial.third.response == "me")
text.me.droptarget = false;
]
/ ontrialend = [
if (trial.third.response == "smoking")
text.smoking.droptarget = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking)
/ branch = [
trial.fourth
]
/ recorddata = false
</trial>

<trial fourth>
/ ontrialbegin = [
values.reset = false;
]
/ ontrialbegin = [
if (text.positive2.vposition != 80%)
text.positive2.dropsource = false;
]
/ ontrialbegin = [
if (text.negative2.vposition != 80%)
text.negative2.dropsource = false;
]
/ stimulusframes = [1 = positive2, negative2, me, smoking, reset]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (me, smoking, reset)
/ branch = [
if (trial.fourth.response == "reset"){
values.reset = true;
trial.third;
};
]
/ branch = [
if (trial.fourth.response != "reset"){
trial.record_round;
}
]
/ recorddata = false
</trial>

<item negative2>
/1 = "lung cancer"
/2 = "addiction"
/3 = "heart disease"
/4 = "clogged arteries"
/5 = "blindness"
/6 = "amputation"
/7 = "death"
/8 = "tongue cancer"
/9 = "throat cancer"
/10 = "gangrene"
</item>

<item positive2>
/1 = "healthy"
/2 = "vibrant"
/3 = "free"
/4 = "happy"
/5 = "in control"
/6 = "long life"
/7 = "energetic"
/8 = "refreshed"
/9 = "good"
/10 = "rewarding"
</item>

<text positive2>
/ items = positive2
/ position = (70%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.positem
</text>


<text negative2>
/ items = negative2
/ position = (30%, 80%)
/ txcolor = green
/ fontstyle = ("Arial", 5%)
/ dropsource = true
/ select = values.negitem
</text>

<data>
/ columns = (date time subject group blocknum blockcode trialnum trialcode
trial.first.response trial.first.latency
trial.second.response trial.second.latency
trial.third.response trial.third.latency
trial.fourth.response trial.fourth.latency
text.negative.currentitem text.negative.hposition text.negative.vposition
text.positive.currentitem text.positive.hposition text.positive.vposition
text.negative2.currentitem text.negative2.hposition text.negative2.vposition
text.positive2.currentitem text.positive2.hposition text.positive2.vposition )
/ separatefiles = true
</data>




If you wish to counterbalance *between* subjects, then this

<expt>
/ blocks = [1-20 = random (myblock,myblock2)]
</expt>

is wrong. The above administers 10 instances of  "myblock"  (running trial.first and trial.second) and 10 instances of  "myblock2" (running trial.third and trial.fourth) to each participant, i.e. this would be *within* subjects.

For a between-manipulation, you would specify

<expt>
/ subjects = (1 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock]
</expt>

<expt>
/ subjects = (2 of 2)
/ groupassignment = groupnumber
/ blocks = [1-20 = myblock2]
</expt>

where participants assigned an odd group ID (1,3,5, ...) would get 20 instances of "myblock" and
participants assigned an even group ID (2,4,6, ...) would get 20 instances of "myblock2".

Thanks for this Dave. Working superb.

I noticed that at the time of launch there is an option to show participants a random confirmation code by millisecond. How to capture that code in the data element. Is there a documentation about confirmation code in the Help section.

Thanks


The confirmation code is just the subject ID, it's logged in the data file already in the subject column.

Hi, Just noticed that even if someone aborts the expt, still he/she gets the confirmation code. Anyway to stop that.
Thanks.

No, not really.

mongrel
mongrel
Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)Guru (5.5K reputation)
Group: Forum Members
Posts: 53, Visits: 147
Hi Dave,

I tried to fix my problem by reading this thread, but I wasn't successful so far. I want participants to rank certain words (presented as pictures) by dragging and dropping them into rectangular shapes. Here is my (quick n dirty) script so far:
ITEMS

<item energy>
/1 = "Energie.png"
</item>

<item health>
/1 = "Gesundheit.png"
</item>

<item weight>
/1 = "Gewicht.png"
</item>

<item bodystrength>
/1 = "Körperkraft.png"
</item>

<item bodyattr>
/1 = "Körperliche Attraktivität.png"
</item>

<item bodyfit>
/1= "Körperliche Fitness.png"
</item>

<item bodymeas>
/1 = "Körpermaße z.B. Brust Taille Hüfte.png"
</item>

<item coordination>
/1 = "Physische Koordination.png"
</item>

<item sexappeal>
/1 = "Sex-Appeal.png"
</item>

<item vismusbody>
/1 = "Sichtbar muskulöser Körper.png"
</item>

PICTURES

<picture energy>
/items = energy
/size = (7%, 7%)
/position = (5%,5%)
/ dropsource = true
</picture>

<picture health>
/items = health
/size = (6%, 6%)
/ position = (5%,10%)
/ dropsource = true
</picture>

<picture weight>
/items = weight
/size = (6%, 6%)
/ position = (5%,15%)
/ dropsource = true
</picture>

<picture bodystrength>
/items = bodystrength
/size = (6%, 6%)
/ position = (5%,20%)
/ dropsource = true
</picture>

<picture bodyattr>
/items = bodyattr
/size = (6%, 6%)
/ position = (5%,25%)
/ dropsource = true
</picture>

<picture bodyfit>
/items= bodyfit
/size = (6%, 6%)
/ position = (5%,30%)
/ dropsource = true
</picture>

<picture bodymeas>
/items = bodymeas
/size = (6%, 6%)
/ position = (5%,35%)
/ dropsource = true
</picture>

<picture coordination>
/items = coordination
/size = (6%, 6%)
/position = (5%,40%)
/ dropsource = true
</picture>

<picture sexappeal>
/items = sexappeal
/size = (6%, 6%)
/position = (5%,45%)
/ dropsource = true
</picture>

<picture vismusbody>
/items = vismusbody
/size = (6%, 6%)
/position = (5%,50%)
/ dropsource = true
</picture>

SHAPES

<shape drop1>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 5%)
</shape>


<shape drop2>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 15%)
</shape>


<shape drop3>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 25%)
</shape>


<shape drop4>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 35%)
</shape>


<shape drop5>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 35%)
</shape>


<shape drop6>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 45%)
</shape>


<shape drop7>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 55%)
</shape>


<shape drop8>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 65%)
</shape>


<shape drop9>
/ shape = rectangle
/ size = (10%, 15%)
/color = white
/ droptarget = true
/ position = (80%, 75%)
</shape>


<shape drop10>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 85%)
</shape>

<trial SOQ>
/ stimulusframes = [1 = drop1, drop2, drop3, drop4, drop5, drop6, drop7, drop8, drop9, drop10, energy, vismusbody, sexappeal, coordination, bodymeas, bodyfit, bodyattr, bodystrength, weight,health ]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (energy, vismusbody, sexappeal, coordination, bodymeas, bodyfit, bodyattr, bodystrength, weight, health)
</trial>

<block SOQ>
/ trials = [1=SOQ]
</block>

<expt SOQ>
/ blocks = [1=SOQ]
</expt>



My questions are:
1. I cannot seem to manage that the rectangle has a frame to make it visible. How can I do that?
2. The Dragndrop does not work, what am I doing wrong?

I know, I could probably find the answers in the ToL script or the other one that you posted, but for some reason I cannot apply those scripts to my needs. Sorry, if I miss the obvious here...

Thank you in advance!
M.



Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
mongrel - 6/18/2019
Hi Dave,

I tried to fix my problem by reading this thread, but I wasn't successful so far. I want participants to rank certain words (presented as pictures) by dragging and dropping them into rectangular shapes. Here is my (quick n dirty) script so far:
ITEMS

<item energy>
/1 = "Energie.png"
</item>

<item health>
/1 = "Gesundheit.png"
</item>

<item weight>
/1 = "Gewicht.png"
</item>

<item bodystrength>
/1 = "Körperkraft.png"
</item>

<item bodyattr>
/1 = "Körperliche Attraktivität.png"
</item>

<item bodyfit>
/1= "Körperliche Fitness.png"
</item>

<item bodymeas>
/1 = "Körpermaße z.B. Brust Taille Hüfte.png"
</item>

<item coordination>
/1 = "Physische Koordination.png"
</item>

<item sexappeal>
/1 = "Sex-Appeal.png"
</item>

<item vismusbody>
/1 = "Sichtbar muskulöser Körper.png"
</item>

PICTURES

<picture energy>
/items = energy
/size = (7%, 7%)
/position = (5%,5%)
/ dropsource = true
</picture>

<picture health>
/items = health
/size = (6%, 6%)
/ position = (5%,10%)
/ dropsource = true
</picture>

<picture weight>
/items = weight
/size = (6%, 6%)
/ position = (5%,15%)
/ dropsource = true
</picture>

<picture bodystrength>
/items = bodystrength
/size = (6%, 6%)
/ position = (5%,20%)
/ dropsource = true
</picture>

<picture bodyattr>
/items = bodyattr
/size = (6%, 6%)
/ position = (5%,25%)
/ dropsource = true
</picture>

<picture bodyfit>
/items= bodyfit
/size = (6%, 6%)
/ position = (5%,30%)
/ dropsource = true
</picture>

<picture bodymeas>
/items = bodymeas
/size = (6%, 6%)
/ position = (5%,35%)
/ dropsource = true
</picture>

<picture coordination>
/items = coordination
/size = (6%, 6%)
/position = (5%,40%)
/ dropsource = true
</picture>

<picture sexappeal>
/items = sexappeal
/size = (6%, 6%)
/position = (5%,45%)
/ dropsource = true
</picture>

<picture vismusbody>
/items = vismusbody
/size = (6%, 6%)
/position = (5%,50%)
/ dropsource = true
</picture>

SHAPES

<shape drop1>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 5%)
</shape>


<shape drop2>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 15%)
</shape>


<shape drop3>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 25%)
</shape>


<shape drop4>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 35%)
</shape>


<shape drop5>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 35%)
</shape>


<shape drop6>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 45%)
</shape>


<shape drop7>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 55%)
</shape>


<shape drop8>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 65%)
</shape>


<shape drop9>
/ shape = rectangle
/ size = (10%, 15%)
/color = white
/ droptarget = true
/ position = (80%, 75%)
</shape>


<shape drop10>
/ shape = rectangle
/ size = (10%, 15%)
/ droptarget = true
/ position = (80%, 85%)
</shape>

<trial SOQ>
/ stimulusframes = [1 = drop1, drop2, drop3, drop4, drop5, drop6, drop7, drop8, drop9, drop10, energy, vismusbody, sexappeal, coordination, bodymeas, bodyfit, bodyattr, bodystrength, weight,health ]
/ inputdevice = dragdrop
/ showmousecursor = true
/ validresponse = (energy, vismusbody, sexappeal, coordination, bodymeas, bodyfit, bodyattr, bodystrength, weight, health)
</trial>

<block SOQ>
/ trials = [1=SOQ]
</block>

<expt SOQ>
/ blocks = [1=SOQ]
</expt>



My questions are:
1. I cannot seem to manage that the rectangle has a frame to make it visible. How can I do that?
2. The Dragndrop does not work, what am I doing wrong?

I know, I could probably find the answers in the ToL script or the other one that you posted, but for some reason I cannot apply those scripts to my needs. Sorry, if I miss the obvious here...

Thank you in advance!
M.



Happy to take a look, but please provide the actual script and include all the files it requires to run (i.e. the images, etc.). You can ZIP everything up and then attach it to a post by clicking +Insert -> Add File.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search