Random Time Interval Generation as task for Inquisit


Author
Message
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: 13K, Visits: 104K

<trial task>
/ ontrialbegin = [if(trial.task.trialcount==0)values.start=script.elapsedtime
    else values.start=values.timeoflastresponse]
/ ontrialbegin = [values.bcount = 0]
/ ontrialend = [values.timeoflastresponse=script.elapsedtime]
/ ontrialend = [values.timebetweenresponses=values.timeoflastresponse-values.start]
/ ontrialend = [values.bcount = what should I type here?]
/ stimulustimes = [0 = start]
/ validresponse = ("b")
/ responsetime = 0
/ branch = [trial.task]
</trial>


#1: You *don't* want to reset that value to zero in every trial. You'll want to reset it at the beginning of a block (if at all).


<trial task>
/ ontrialbegin = [if(trial.task.trialcount==0)values.start=script.elapsedtime
    else values.start=values.timeoflastresponse]
/ ontrialbegin = [values.bcount = 0]
/ ontrialend = [values.timeoflastresponse=script.elapsedtime]
/ ontrialend = [values.timebetweenresponses=values.timeoflastresponse-values.start]
/ ontrialend = [values.bcount = what should I type here?]
/ stimulustimes = [0 = start]
/ validresponse = ("b")
/ responsetime = 0
/ branch = [trial.task]
</trial>


#2: Simply increase it by one:


/ontrialend = [values.bcount += 1]


pawelstrojny
pawelstrojny
Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)
Group: Forum Members
Posts: 43, Visits: 76

Yes, I know that.



I have something like that:


<trial task>
/ ontrialbegin = [if(trial.task.trialcount==0)values.start=script.elapsedtime
    else values.start=values.timeoflastresponse]
/ ontrialbegin = [values.bcount = 0]
/ ontrialend = [values.timeoflastresponse=script.elapsedtime]
/ ontrialend = [values.timebetweenresponses=values.timeoflastresponse-values.start]
/ ontrialend = [values.bcount = what should I type here?]
/ stimulustimes = [0 = start]
/ validresponse = ("b")
/ responsetime = 0
/ branch = [trial.task]
</trial>


But don't know what to write in place of "what..."


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: 13K, Visits: 104K

You can do that using <values> and/or <expressions> as well as a bit of conditional logic via event attribiutes (/ontrialbegin, /ontrialend, etc.).


pawelstrojny
pawelstrojny
Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)
Group: Forum Members
Posts: 43, Visits: 76

Hi,


I have one more question:


I need to verify if subjects are pressing the button more than 5 times (to calculate the level of randomness later), I figured out that I need to add branch which will decide about the feedback (if he pressed less than 6 times - feedback "you need to press more" or if 6 or more  - no feedback).


Which I don't know is how can I make Inquisit count the number of valid responses in a trial?


Because I need an expression in branch (e.g.) ... [responsecount] > 5 ... Am I correct?


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: 13K, Visits: 104K

Yes it is (and it works as expected), but that's irrelevant to your problem. With <trial>-level /timeout, the specified /timeout *applies to every instance of the given trial* -- whenever a new trial starts, that trial has 10 secs to complete. That's the way it should be. And your script will run an infinite amount of trials due to the /branch, it'll never stop (and it should not).


pawelstrojny
pawelstrojny
Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)
Group: Forum Members
Posts: 43, Visits: 76

Ok, so I can do that.


But in documentation about trial element the "timeout" command is present...


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: 13K, Visits: 104K

Yes, of course.


pawelstrojny
pawelstrojny
Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)
Group: Forum Members
Posts: 43, Visits: 76

So if I want to have sequence in block (eg. task - feedback) I need to use two blocks?



I mean:


<block block1>
/ trials = [1=task; 2=control]
</block>


referring to:


<trial task>
/ timeout = 10000
/ ontrialbegin = [if(trial.task.trialcount==0)values.start=script.elapsedtime
    else values.start=values.timeoflastresponse]
/ ontrialend = [values.timeoflastresponse=script.elapsedtime]
/ ontrialend = [values.timebetweenresponses=values.timeoflastresponse-values.start]
/ stimulustimes = [0 = start]
/ validresponse = ("b")
/ responsetime = 0
/ branch = [trial.task]
</trial>


and


<survey control>
/ pages = [1=control]
/ itemspacing = 2%
/ showpagenumbers = false
/ responsefontstyle = ("Arial", 1.1%, false, false, false, false, 5)
/ itemfontstyle = ("Arial", 1.5%, false, false, false, false, 5)
/ pagefontstyle = ("Arial", 1.8%, false, false, false, false, 5)
</survey>


And I want to have 10 sec task and then survey element.


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: 13K, Visits: 104K

The /timeout needs to be at the <block> level just as in the example I gave you.


pawelstrojny
pawelstrojny
Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)Guru (6.4K reputation)
Group: Forum Members
Posts: 43, Visits: 76

Hi,


Basing on Dave's solution I prepared script but something isn't working properly.


Problematic script elements:


<block practice>
/ trials = [1=practice]
</block>


which refers to:


<trial practice>
/ timeout = 10000
/ ontrialbegin = [if(trial.practice.trialcount==0)values.start=script.elapsedtime
    else values.start=values.timeoflastresponse]
/ ontrialend = [values.timeoflastresponse=script.elapsedtime]
/ ontrialend = [values.timebetweenresponses=values.timeoflastresponse-values.start]
/ stimulustimes = [0 = start]
/ validresponse = ("b")
/ responsetime = 0
/ branch = [trial.practice]
/ recorddata = false
</trial>


When I test only trial element (blue "play" triangle) - everything works, when I test block (again blue triangle) or a whole script - trial doesn't ends after 10 seconds (the message is being displayed until I reset script by Alt+Esc)


Where is the mistake?


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search