Millisecond Forums

error after adding practise + instruction trials SC-IAT

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

By celeste - 5/17/2010

Hi,


could you please help me out with the following:


I've added a practisetrial and 2 instructions trials (myinstructions2 & myinstructions3).  As soon as i try and run it, it comes up with the following error which has to do with the calculations and the summary part:


<text summary>



Expression 'expressions.d' is invalid. Expression contains an unknown element or property name.



<trial summary>



Expression 'values.magnitude' is invalid. Expression contains an unknown element



--> here's my relevant script:



<trial summary>


/ stimulustimes = [0=summary]


/ validresponse = (" ")


/ recorddata = false


/ ontrialbegin = [values.magnitude = "little to no"]


/ ontrialbegin = [if( abs(expressions.d) > 0.15 ) values.magnitude = "a slight"]


/ ontrialbegin = [if( abs(expressions.d) > 0.35 ) values.magnitude = "a moderate"]


/ ontrialbegin = [if( abs(expressions.d) >= 0.65 ) values.magnitude = "a strong"]


/ ontrialbegin = [if(expressions.d >= 0.0) expressions.attitude = "positive"]


/ ontrialbegin = [if(expressions.d < 0.0) expressions.attitude = "negative"]


</trial>


<text summary>


/ items = ("Your IAT score (D) was <% expressions.d %>, which suggests <% values.magnitude %> <% expressions.attitude %> implicit attitude towards <% item.targetALabel.1 %>.~n~n~nPress the spacebar to complete this session.")


/ size = (60%, 60%)


/ hjustify = left


</text>



--> and the practise trial i added:




block practise>


/ bgstim = (practiseAleft, orleft, practisetargetAleftmixed, practiseBright, reminder)


/ trials = [1-10 = noreplace(practisetargetAleft, practiseA, practiseB)]


/ errormessage = true(error,200)


/ responsemode = correct


/ recorddata = false


/ ontrialend = [if(block.practise.latency <= 10000 && block.practise.currenttrialnumber != 1 ) values.sum1a = values.sum1a + block.practise.latency]


/ ontrialend = [if(block.practise.latency <= 10000 && block.practise.currenttrialnumber != 1 ) values.n1a = values.n1a + 1]


/ ontrialend = [if(block.practise.latency <= 10000 && block.practise.currenttrialnumber != 1 ) values.ss1a = values.ss1a + (block.practise.latency * block.practise.latency)]


</block>


<block practise2>


/ bgstim = (practiseAleft, practisetargetARightmixed, orright, practiseBright, reminder)


/ trials = [1-10 = noreplace(practisetargetAright, practiseA, practiseB)]


/ errormessage = true(error,200)


/ responsemode = correct


/ recorddata = false


/ ontrialend = [if(block.practise2.latency <= 10000 && block.practise2.currenttrialnumber != 1) values.sum2a = values.sum2a + block.practise2.latency]


/ ontrialend = [if(block.practise2.latency <= 10000 && block.practise2.currenttrialnumber != 1 ) values.n2a = values.n2a + 1]


/ ontrialend = [if(block.practise2.latency <= 10000 && block.practise2.currenttrialnumber != 1 ) values.ss2a = values.ss2a + (block.practise2.latency * block.practise2.latency)]


</block>





2nd question:  I would rather not have a practise trial of the compatible/incompatible trials.  how do I join these 2?




<block compatibletest1>


/ bgstim = (attributeAleft, orleft, targetAleftmixed, attributeBright, reminder)


/ trials = [1-21 = noreplace(targetAleft, attributeA, attributeB)]


/ errormessage = true(error,200)


/ responsemode = correct


/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.sum1a = values.sum1a + block.compatibletest1.latency]


/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n1a = values.n1a + 1]


/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.ss1a = values.ss1a + (block.compatibletest1.latency * block.compatibletest1.latency)]


</block>


<block compatibletest2>


/ bgstim = (attributeAleft, orleft, targetAleftmixed, attributeBright, reminder)


/ trials = [1-40 = noreplace(targetAleft, attributeA, attributeB)]


/ errormessage = true(error,200)


/ responsemode = correct


/ ontrialend = [if(block.compatibletest2.latency <= 10000) values.sum1b = values.sum1b + block.compatibletest2.latency]


/ ontrialend = [if(block.compatibletest2.latency <= 10000) values.n1b = values.n1b + 1]


/ ontrialend = [if(block.compatibletest2.latency <= 10000) values.ss1b = values.ss1b + (block.compatibletest2.latency * block.compatibletest2.latency)]


</block>



I guess the error has to do with the fact i chose the first script of the compatible trial and not the 2nd, for the record; the results of the practise trial don't have to be recorded.


The summary with the score doesn't have to be shown either, this score is more for my own purpose.



Your help would be greatly appreciated!





By Dave - 5/17/2010

Hi Celeste,


at the risk of offending you (which is *not* my intention), I'd like to strongly recommend you take a step back and *first* complete the tutorials* contained in the Inquisit helpfile *before* trying to make changes to / extend existing, more complex scripts. Do yourself a big favor and try to get at least a basic yet solid understanding of how Inquisit's language is structured. That'll help you to (a) answer many of your questions by yourself and (b) present any issues you might come across more clearly, i.e. in a way that other (forum) users / readers will actually be able to understand and follow through. And while we're at it: It usually doesn't make too much sense to paste random code snippets in to the post. Also try to format things in a way that is actually readable (e.g. one typeface, one size, one color). If for some reason you need to post larger chunks of code, the forum software allows you to attach files to your posts (click on the 'Options' tab when posting to find controls for uploading).


Best wishes from a fellow Inquisit user,


~Dave


* If you've already done them, do them *again*.

By celeste - 5/17/2010

Hi Dave,


I understand your suggestion.  Everything went well though untill i added the 2nd practise block (incompatible) - called practise 2.  The test was running perfectly untill then.  I don't understand what went wrong.. now it suddenly says 'expressions.d' (mentioned in the summary) is invalid.  I understand this might be the case, because of all of the calculations included in the pratise blocks - but i was under the impression if i include: / recorddata = false    it shouldn't calculate it. 



Sorry about the color differences - i could change that! 


Could you maybe give me one tip? I have read the tutorials like 3 times, and everything was going so well.  (I made adjustions to the SC-IATpictures).



Thank you!



I added the script


By Dave - 5/17/2010

I've fixed numerous syntax errors in the attached revision of your script. It should parse now. You definitely have to pay more attention to getting the syntax down correctly, e.g. use double quotes for items, include proper close tags for all your elements, etc.


~Dave


P.S.: About the tutorials: Don't *read* them, *do* them.

By celeste - 5/18/2010

Thank you sooo very much!!!!!!!


The only thing i don't understand now, is why I don't get to see 'myinstructions2'   (see below) between the to practise trials (practise and practise2), while there is no error referring to it.



<expt>


/ blocks = [1=myinstructions; 2=practise; 3=practise2; 4=myinstructions2; 5=block1; 6=block3; 7=myinstructions3; 8=block4; 9=block5; 10=summary]


</expt>





And do you have a tip on how to murge the two incompatible (incompatibletest1 + incompatibletest2) and compatible (compatibletest1 + compatibletest2) trials together; so they just form one?



Thank you again!!



By Dave - 5/18/2010

Celeste,


again: no offense, but please, please, please go back and revise your understanding of Inquisit's language from the ground up. Once you've done so, you'll be perfectly able to answer these questions on your own (and as an added bonus you'll actually understand what you're doing, which isn't really the case right now).


Best,


~Dave