Understanding "elapsedtime"


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
Dylonius - Friday, October 27, 2017
Dave - Friday, October 27, 2017
Dylonius - Friday, October 27, 2017
Hello, I'm having trouble testing the timing of my scripts. 

From what I understand, Inquisit doesn't have a global "log all" function like Presentation that forces the output to track all stimulus presentations and timings.

Therefor, in order to determine if my stimuli are actually presented for their intended length, I generally rely on "elapsedtime" to at least determine the length of each trial. However, it is unclear to me what elapsedtime actually logs.  

Here's a sample trial from my code:
<trial neutraltrial>
/ontrialbegin = [values.trialstarttime = expt.EMT.elapsedtime - values.taskstart]
/ontrialbegin = [values.tasktimetrue = expt.EMT.elapsedtime]
/stimulustimes = [0=negativesleep; 3000=response; 8000=blank;]
/trialduration = (8000)
/beginresponsetime = (3000)
/validresponse = (2,3,4,5,6)
/responsemessage = (2, response0, 0)
/responsemessage = (3, response1, 0)
/responsemessage = (4, response2, 0)
/responsemessage = (5, response3, 0)
/responsemessage = (6, response4, 0)
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
/branch = [if (values.constant = 1) trial.break]
</trial>

In this example, the participant views a picture for 3 seconds, then views a prompt for a response, upon response the "responsemessage" stimuli appears until the end of the trial. 

However, in this case, "elapsedtime" seems to only log the duration of the trial up until the response. 

Does this mean that the "responsemessage" stimulus is not included in the currently trial?  If so, how do I log the duration of this stimulus as well? Or perhaps I'm misunderstanding the trial itself.

Thanks,
Dylan.

expt.EMT.elapsedtime reflects the time elapsed in millisecond since the execution of the <expt> object began.

The way your <trial> is set up
<trial neutraltrial>
...
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
...
</trial>

The /ontrialend logic is executed and elapsedtime is logged directly after a response occurred, i.e. at the start of the (implicit) /posttrialpause during which the responsemessage stimulus is displayed.

Perhaps the diagram in https://www.millisecond.com/support/docs/v4/html/howto/howtocontroltiming.htm is helpful in clarifying the various timing components involved in a <trial> and when certain things happen.

Note that you can have Inquisit generate an extra log file containing timing information for various events by setting

<data>
...
/ audit = true
</data>

Thanks, this is helpful. 

In this light, is there any way to output the "elapsedtime" of the responsemessage stimulus duration, or would it be better to use "responsetrial" instead of "responsemessage"?

If logging the onset and/or duration of the response stimulus is desired or required, then yes, using /responsetrial or the more general /branch would be preferable.

Dylonius
Dylonius
Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)
Group: Forum Members
Posts: 7, Visits: 29
Dave - Friday, October 27, 2017
Dylonius - Friday, October 27, 2017
Hello, I'm having trouble testing the timing of my scripts. 

From what I understand, Inquisit doesn't have a global "log all" function like Presentation that forces the output to track all stimulus presentations and timings.

Therefor, in order to determine if my stimuli are actually presented for their intended length, I generally rely on "elapsedtime" to at least determine the length of each trial. However, it is unclear to me what elapsedtime actually logs.  

Here's a sample trial from my code:
<trial neutraltrial>
/ontrialbegin = [values.trialstarttime = expt.EMT.elapsedtime - values.taskstart]
/ontrialbegin = [values.tasktimetrue = expt.EMT.elapsedtime]
/stimulustimes = [0=negativesleep; 3000=response; 8000=blank;]
/trialduration = (8000)
/beginresponsetime = (3000)
/validresponse = (2,3,4,5,6)
/responsemessage = (2, response0, 0)
/responsemessage = (3, response1, 0)
/responsemessage = (4, response2, 0)
/responsemessage = (5, response3, 0)
/responsemessage = (6, response4, 0)
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
/branch = [if (values.constant = 1) trial.break]
</trial>

In this example, the participant views a picture for 3 seconds, then views a prompt for a response, upon response the "responsemessage" stimuli appears until the end of the trial. 

However, in this case, "elapsedtime" seems to only log the duration of the trial up until the response. 

Does this mean that the "responsemessage" stimulus is not included in the currently trial?  If so, how do I log the duration of this stimulus as well? Or perhaps I'm misunderstanding the trial itself.

Thanks,
Dylan.

expt.EMT.elapsedtime reflects the time elapsed in millisecond since the execution of the <expt> object began.

The way your <trial> is set up
<trial neutraltrial>
...
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
...
</trial>

The /ontrialend logic is executed and elapsedtime is logged directly after a response occurred, i.e. at the start of the (implicit) /posttrialpause during which the responsemessage stimulus is displayed.

Perhaps the diagram in https://www.millisecond.com/support/docs/v4/html/howto/howtocontroltiming.htm is helpful in clarifying the various timing components involved in a <trial> and when certain things happen.

Note that you can have Inquisit generate an extra log file containing timing information for various events by setting

<data>
...
/ audit = true
</data>

Thanks, this is helpful. 

In this light, is there any way to output the "elapsedtime" of the responsemessage stimulus duration, or would it be better to use "responsetrial" instead of "responsemessage"?
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
Dylonius - Friday, October 27, 2017
Hello, I'm having trouble testing the timing of my scripts. 

From what I understand, Inquisit doesn't have a global "log all" function like Presentation that forces the output to track all stimulus presentations and timings.

Therefor, in order to determine if my stimuli are actually presented for their intended length, I generally rely on "elapsedtime" to at least determine the length of each trial. However, it is unclear to me what elapsedtime actually logs.  

Here's a sample trial from my code:
<trial neutraltrial>
/ontrialbegin = [values.trialstarttime = expt.EMT.elapsedtime - values.taskstart]
/ontrialbegin = [values.tasktimetrue = expt.EMT.elapsedtime]
/stimulustimes = [0=negativesleep; 3000=response; 8000=blank;]
/trialduration = (8000)
/beginresponsetime = (3000)
/validresponse = (2,3,4,5,6)
/responsemessage = (2, response0, 0)
/responsemessage = (3, response1, 0)
/responsemessage = (4, response2, 0)
/responsemessage = (5, response3, 0)
/responsemessage = (6, response4, 0)
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
/branch = [if (values.constant = 1) trial.break]
</trial>

In this example, the participant views a picture for 3 seconds, then views a prompt for a response, upon response the "responsemessage" stimuli appears until the end of the trial. 

However, in this case, "elapsedtime" seems to only log the duration of the trial up until the response. 

Does this mean that the "responsemessage" stimulus is not included in the currently trial?  If so, how do I log the duration of this stimulus as well? Or perhaps I'm misunderstanding the trial itself.

Thanks,
Dylan.

expt.EMT.elapsedtime reflects the time elapsed in millisecond since the execution of the <expt> object began.

The way your <trial> is set up
<trial neutraltrial>
...
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
...
</trial>

The /ontrialend logic is executed and elapsedtime is logged directly after a response occurred, i.e. at the start of the (implicit) /posttrialpause during which the responsemessage stimulus is displayed.

Perhaps the diagram in https://www.millisecond.com/support/docs/v4/html/howto/howtocontroltiming.htm is helpful in clarifying the various timing components involved in a <trial> and when certain things happen.

Note that you can have Inquisit generate an extra log file containing timing information for various events by setting

<data>
...
/ audit = true
</data>

Edited 7 Years Ago by Dave
Dylonius
Dylonius
Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)Expert (1.2K reputation)
Group: Forum Members
Posts: 7, Visits: 29
Hello, I'm having trouble testing the timing of my scripts. 

From what I understand, Inquisit doesn't have a global "log all" function like Presentation that forces the output to track all stimulus presentations and timings.

Therefor, in order to determine if my stimuli are actually presented for their intended length, I generally rely on "elapsedtime" to at least determine the length of each trial. However, it is unclear to me what elapsedtime actually logs.  

Here's a sample trial from my code:
<trial neutraltrial>
/ontrialbegin = [values.trialstarttime = expt.EMT.elapsedtime - values.taskstart]
/ontrialbegin = [values.tasktimetrue = expt.EMT.elapsedtime]
/stimulustimes = [0=negativesleep; 3000=response; 8000=blank;]
/trialduration = (8000)
/beginresponsetime = (3000)
/validresponse = (2,3,4,5,6)
/responsemessage = (2, response0, 0)
/responsemessage = (3, response1, 0)
/responsemessage = (4, response2, 0)
/responsemessage = (5, response3, 0)
/responsemessage = (6, response4, 0)
/ontrialend = [values.trialendtime = expt.EMT.elapsedtime - values.taskstart]
/ontrialend = [values.trialdurtime = trial.neutraltrial.elapsedtime]
/ontrialend = [values.lasttype = "neutral"]
/branch = [if (values.constant = 1) trial.break]
</trial>

In this example, the participant views a picture for 3 seconds, then views a prompt for a response, upon response the "responsemessage" stimuli appears until the end of the trial. 

However, in this case, "elapsedtime" seems to only log the duration of the trial up until the response. 

Does this mean that the "responsemessage" stimulus is not included in the currently trial?  If so, how do I log the duration of this stimulus as well? Or perhaps I'm misunderstanding the trial itself.

Thanks,
Dylan.
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search