Millisecond Forums

"translate" inquisit 3 script into inquisit 4

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

By fflade - 12/1/2015

Hi,

I read a lot in this forum, which helped me a LOT in building several scripts, which are well and running. Now I have a small request that I hope can be resolved easily, that is why I just attached the whole script (please forgive me if it is messy).
This script runs in Inquisit 3, but now I want to run it on Inquisit 4. I remember that the part in which I randomly select stimuli from two subsets and store them works slightly different (and much more elegantly!) in Inquisit 4, but I do not seem to remember, how (and I don't find the post anymore). Could you give me a hint? I would really appreciate and it would save me a lot of time.

Thanks!
felicity
By Dave - 12/1/2015

Selecting subsets generally doesn't work differently in Inquisit 4 compared to Inquisit 3 -- there have always been different ways to do this in both, and the best approach depends on your specific situation. Also, Inquisit 3 scripts don't need any translation, because Inquisit 4 is a functional superset of Inquisit 3. I.e., everything that works in Inquisit 3 will generally also work in Inquisit 4 (the reverse is, of course, not true).

There are, however, a bunch of mistakes in the script you attached. Particularly, the two conflicting /select attributes in

<text speakers>
/items = speakers
/ select = values.myvalue
/select = noreplace

/position = (50, 40)
/ fontstyle = ("Arial", 4%, true)
</text>

don't make sense and will prevent things from working properly. That needs to be fixed along with a few other, minor issues (for details, see the attached).
By fflade - 12/2/2015

Thank you very much for your help, this is awesome!
There is another small thing that would be nice to have in that script. It is not absolutely necessary, so I will probably not do it if I have to find out everything on my own. It would be a participant performance feedback. As you have seen, this study consists of a presentation phase block with random pairings, and a recall task block. The presentation phase determines the "right answers" in the recall task. So what I would need for the participant feedback (How many did you get right?) would be
a) to store the right "answer" (speaker) to the respective "question" (statement) in the presentation block ("discussion")
b) in the recall block ("WSWAns"), for each question, call on the correct "question" (statement) from that store and on this basis
c) determine the correct response (/iscorrectresponse?) for that particular question, for each of the questions.
d) count correct answers
c) display that count on the last page.

c) and probably d), too, I might be able to manage, but I would really struggle with a,b,c. Any hints on any of these steps? That would really make my day.

Best,
felicity

By Dave - 12/2/2015

Please work through the changes in the attached file carefully and make sure to test this extensively.
By fflade - 12/3/2015

pretty awesome. I am amazed, thanks!
By Dave - 12/3/2015

To make it easier for you and others to see what's going on there, here's a stripped down example:

<values>
/ speakerstatements = ""
/ answer = ""
/ correct = 0
/ ncorrect = 0
</values>

<expt>
/ blocks = [1=speakerblock; 2=recallblock]
</expt>

<block speakerblock>
/ trials = [1-4=speakertrial]
</block>

<block recallblock>
/ trials = [1-8=recalltrial]
</block>

<trial speakertrial>
/ ontrialend = [values.speakerstatements=concat(concat(concat(concat(concat(values.speakerstatements, text.speaker.currentitem), ":"), text.statement.currentitem), ","), "~n"); ]
/ stimulusframes = [1=speaker, statement, allstatements]
/ validresponse = (57)
</trial>

<surveypage recalltrial>
/ ontrialbegin = [values.correct=0; ]
/ ontrialend = [values.answer=concat(concat(concat(radiobuttons.selectspeaker.response, ":"), text.statement.currentitem), ","); ]
/ ontrialend = [if (contains(values.speakerstatements, values.answer)) values.correct = 1; ]
/ ontrialend = [if (!contains(values.speakerstatements, text.statement.currentitem) && radiobuttons.selectspeaker.response=="Nobody") values.correct = 1; ]
/ ontrialend = [values.ncorrect += values.correct]
/ stimulusframes = [1=statement, allstatements]
/ questions = [1=selectspeaker]
/ branch = [trial.resulttrial]
/ showpagenumbers = false
/ showquestionnumbers = false
</surveypage>

<radiobuttons selectspeaker>
/ caption = "Who said that?"
/ options = ("Alice", "Bob", "Carol", "Dan", "Nobody")
/ position = (40%, 65%)
</radiobuttons>

<trial resulttrial>
/ stimulusframes = [1=allstatements, result]
/ validresponse = (57)
</trial>

<text allstatements>
/ items = ("Statements made so far: <%values.speakerstatements%>")
/ position = (1%, 1%)
/ halign = left
/ valign = top
/ size = (25%, 100%)
/ erase = false
</text>

<text result>
/ items = ("Your answer: <%values.answer%>~nIs answer correct? <%values.correct%>~n Number of correct answers: <%values.ncorrect%>")
/ size = (50%, 50%)
</text>

<text speaker>
/ items = speakers
</text>

<item speakers>
/ 1 = "Alice"
/ 2 = "Bob"
/ 3 = "Carol"
/ 4 = "Dan"
</item>

<text statement>
/ items = statements
/ position = (50%, 60%)
/ resetinterval = 1
/ select = noreplace
</text>

<item statements>
/ 1 = "Statement 1"
/ 2 = "Statement 2"
/ 3 = "Statement 3"
/ 4 = "Statement 4"
/ 5 = "Statement 5"
/ 6 = "Statement 6"
/ 7 = "Statement 7"
/ 8 = "Statement 8"
</item>
By fflade - 12/7/2015

Thanks, Dave! Not sure whether I should open another thread for this (the title for this one should probably also be changed to something like "defining correct responses in a memory task with pairwise stimulus presentation"), but it concerns the same script, so here I go:
Thanks to your help, I managed to implement everything I wanted to and it is up and running. However, it is posted on Inquisit Web, and at least on both pcs I have access to, it is really difficult to find a way to start it. The start button does not seem to "notice" that I already installed a player (or two). I am using Mozilla Firefox, but also in Internet Explorer it is difficult. Do you have an idea? Thanks in advance!
This is the link:
http://research.millisecond.com/rolandimhoff/Asymcat2inquisit4.web
By Dave - 12/8/2015

It depends entirely on *what version(s)* of the player you have already installed. Your launch page is set up to use Inquisit 5 (not generally released to the public yet); you can select the version to use via the web experiment's settings (the current general release is Inquisit 4.0.9.0). Also, under some circumstances, the launch page will enforce the installation of the player to make sure the latest version is installed (i.e., you can't run a web experiment set to use 4.0.9.0 if you have the 4.0.8.0 player installed).

I believe the issue is due to some remaining kink with the 5.0 version. Switching the web experiment to 4.0.9.0, downloading/installing that player version (if prompted) should work. I have done that for testing purposes

http://research.millisecond.com/rolandimhoff/Asymcat2inquisit4.web

and the experiment appears to launch and run fine.