Clock Task - Moving dot around clockwise in Inquisit


Author
Message
Andrew Papale
Andrew Papale
Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)
Group: Forum Members
Posts: 62, Visits: 230
Hello Inquisit Team:

Would it be possible to get a moving dot to go clockwise around a central stimulus in Inquisit?  The paradigm is called the clock task (https://www.jneurosci.org/content/28/47/12294).  The subject would stop the dot at a point during its motion and then receive feedback.

Thanks,
Andrew



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
AndrewPapale - 8/18/2022
Hello Inquisit Team:

Would it be possible to get a moving dot to go clockwise around a central stimulus in Inquisit?  The paradigm is called the clock task (https://www.jneurosci.org/content/28/47/12294).  The subject would stop the dot at a point during its motion and then receive feedback.

Thanks,
Andrew



Sure.
Andrew Papale
Andrew Papale
Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)
Group: Forum Members
Posts: 62, Visits: 230
Dave - 8/18/2022
AndrewPapale - 8/18/2022
Hello Inquisit Team:

Would it be possible to get a moving dot to go clockwise around a central stimulus in Inquisit?  The paradigm is called the clock task (https://www.jneurosci.org/content/28/47/12294).  The subject would stop the dot at a point during its motion and then receive feedback.

Thanks,
Andrew



Sure.

Can you point me to some code that does simple animations, a tutorial, or another thread please?
Andrew Papale
Andrew Papale
Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)
Group: Forum Members
Posts: 62, Visits: 230
AndrewPapale - 8/18/2022
Dave - 8/18/2022
AndrewPapale - 8/18/2022
Hello Inquisit Team:

Would it be possible to get a moving dot to go clockwise around a central stimulus in Inquisit?  The paradigm is called the clock task (https://www.jneurosci.org/content/28/47/12294).  The subject would stop the dot at a point during its motion and then receive feedback.

Thanks,
Andrew



Sure.

Can you point me to some code that does simple animations, a tutorial, or another thread please?

I'm seeing this https://www.millisecond.com/support/docs/current/html/language/attributes/animation.htm
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
AndrewPapale - 8/18/2022
Dave - 8/18/2022
AndrewPapale - 8/18/2022
Hello Inquisit Team:

Would it be possible to get a moving dot to go clockwise around a central stimulus in Inquisit?  The paradigm is called the clock task (https://www.jneurosci.org/content/28/47/12294).  The subject would stop the dot at a point during its motion and then receive feedback.

Thanks,
Andrew



Sure.

Can you point me to some code that does simple animations, a tutorial, or another thread please?

https://www.millisecond.com/download/library/pursuitrotor
https://www.millisecond.com/download/library/wundtclock
https://www.millisecond.com/download/library/mackworthclock
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
Dave - 8/18/2022
AndrewPapale - 8/18/2022
Dave - 8/18/2022
AndrewPapale - 8/18/2022
Hello Inquisit Team:

Would it be possible to get a moving dot to go clockwise around a central stimulus in Inquisit?  The paradigm is called the clock task (https://www.jneurosci.org/content/28/47/12294).  The subject would stop the dot at a point during its motion and then receive feedback.

Thanks,
Andrew



Sure.

Can you point me to some code that does simple animations, a tutorial, or another thread please?

https://www.millisecond.com/download/library/pursuitrotor
https://www.millisecond.com/download/library/wundtclock
https://www.millisecond.com/download/library/mackworthclock

And here's some funky example code for a meditation type exercise using animations:

<defaults>
/ screencolor = darkblue
</defaults>

<shape mycircle1>
/ color = blue
/ shape = circle
/ animation=circle(6000, -1, 50, 50%, 50%, 35%)
/ animation=size(6000, -1, 10%, 0.1px*display.canvaswidth, 0.5, 1, 0.5)
/ erase = false
</shape>

<shape mycircle2>
/ color = blue
/ shape = circle
/ animation=circle(6000, -1, -50, 50%, 50%, 35%)
/ animation=size(6000, -1, 10%, 0.1px*display.canvaswidth, 1, 0.5, 1)
/ erase = false
</shape>

<shape mycircle3>
/ color = darkblue
/ shape = circle
/ size = (5%, 0.05px*display.canvaswidth)
/ animation=circle(6000, -1, 50, 50%, 50%, 35%)
/ erase = false
</shape>

<shape mycircle4>
/ color = darkblue
/ shape = circle
/ size = (5%, 0.05px*display.canvaswidth)
/ animation=circle(6000, -1, -50, 50%, 50%, 35%)
/ erase = false
</shape>

<shape mycircle5>
/ color = blue
/ shape = circle
/ animation=size(6000, -1, 30%, 0.30px*display.canvaswidth, 0.2, 1, 0.2)
/ erase = false
</shape>

<shape mycircle6>
/ color = darkblue
/ shape = circle
/ animation=size(6000, -1, 25%, 0.25px*display.canvaswidth, 0.2, 1, 0.2)
/ erase = false
</shape>

<text breathe>
/ items = ("focus")
/ fontstyle = ("Verdana", 10%)
/ vjustify = center
/ txcolor = blue
/ txbgcolor = transparent
/ animation=size(6000, 2, 25%, 0.25px*display.canvaswidth, 0.2, 1, 0.001)
</text>

<shape intro>
/ shape = circle
/ color = blue
/ animation = size(6500, 1, 1px*display.canvasheight, 100%, 1, 0.001)
/ erase = false
</shape>


<trial mytrial>
/ stimulusframes = [1=clearscreen, mycircle1, mycircle2, mycircle3, mycircle4, mycircle5, mycircle6, breathe, intro]
/ validresponse = (57)
</trial>

<block myblock>
/ trials = [1=mytrial]
</block>


Andrew Papale
Andrew Papale
Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)
Group: Forum Members
Posts: 62, Visits: 230
Excellent, I've got the animation working.  I now need a variable handle to the latency on each trial from the time the circle starts rotating to the time the subject presses the spacebar to compute the number of points that I play to display via a response message.  I thought this would be "trial.experiment.latency".  But on the first trial this is always displaying "0" and subsequent trials are seemingly not displaying the correct response time either. 

Any help would be appreciated.  The 'latency' variable is saving correctly in the iqdat spreadsheet (as far as I can tell based on my internal clock) and differs from the 'trial.experiment.latency' that is being displayed here. 

Relevant code (Inquisit 6.6.1 on MacOS Monterey):

<shape animatedCircle>
/ shape = circle
/ color = blue
/ size = (100,100)
/ animation = circle(5000,1,75%,50%,50%,33%)
/ erase = true(white)
</shape>

<text dispLatency>
/ items= ("latency = <% trial.experiment.latency %>")
</text>

<trial experiment>
/ ontrialbegin = [
]
/ stimulustimes = [0 = fixationCross; 1000 = animatedCircle;
]

/ inputdevice = keyboard
/ beginresponsetime = 1000
/ validresponse = (" ")
/ responseinterrupt = immediate
/ responsemessage = (" ",dispLatency,1000)
/ recorddata = true
/ ontrialend = [
        
]
Attachments
EEG_clock.iqx (121 views, 2.00 KB)
fixationCross.png (130 views, 11.00 KB)
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
AndrewPapale - 9/8/2022
Excellent, I've got the animation working.  I now need a variable handle to the latency on each trial from the time the circle starts rotating to the time the subject presses the spacebar to compute the number of points that I play to display via a response message.  I thought this would be "trial.experiment.latency".  But on the first trial this is always displaying "0" and subsequent trials are seemingly not displaying the correct response time either. 

Any help would be appreciated.  The 'latency' variable is saving correctly in the iqdat spreadsheet (as far as I can tell based on my internal clock) and differs from the 'trial.experiment.latency' that is being displayed here. 

Relevant code (Inquisit 6.6.1 on MacOS Monterey):

<shape animatedCircle>
/ shape = circle
/ color = blue
/ size = (100,100)
/ animation = circle(5000,1,75%,50%,50%,33%)
/ erase = true(white)
</shape>

<text dispLatency>
/ items= ("latency = <% trial.experiment.latency %>")
</text>

<trial experiment>
/ ontrialbegin = [
]
/ stimulustimes = [0 = fixationCross; 1000 = animatedCircle;
]

/ inputdevice = keyboard
/ beginresponsetime = 1000
/ validresponse = (" ")
/ responseinterrupt = immediate
/ responsemessage = (" ",dispLatency,1000)
/ recorddata = true
/ ontrialend = [
        
]

> / responsemessage = (" ",dispLatency,1000)

You can't display the current trial's latency per a stimulus in /responsemessage. That stimulus is prepared at the start of the trial, hence it does not know about the latency of the current trial (which has not yet been collected).

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
Dave - 9/8/2022
AndrewPapale - 9/8/2022
Excellent, I've got the animation working.  I now need a variable handle to the latency on each trial from the time the circle starts rotating to the time the subject presses the spacebar to compute the number of points that I play to display via a response message.  I thought this would be "trial.experiment.latency".  But on the first trial this is always displaying "0" and subsequent trials are seemingly not displaying the correct response time either. 

Any help would be appreciated.  The 'latency' variable is saving correctly in the iqdat spreadsheet (as far as I can tell based on my internal clock) and differs from the 'trial.experiment.latency' that is being displayed here. 

Relevant code (Inquisit 6.6.1 on MacOS Monterey):

<shape animatedCircle>
/ shape = circle
/ color = blue
/ size = (100,100)
/ animation = circle(5000,1,75%,50%,50%,33%)
/ erase = true(white)
</shape>

<text dispLatency>
/ items= ("latency = <% trial.experiment.latency %>")
</text>

<trial experiment>
/ ontrialbegin = [
]
/ stimulustimes = [0 = fixationCross; 1000 = animatedCircle;
]

/ inputdevice = keyboard
/ beginresponsetime = 1000
/ validresponse = (" ")
/ responseinterrupt = immediate
/ responsemessage = (" ",dispLatency,1000)
/ recorddata = true
/ ontrialend = [
        
]

> / responsemessage = (" ",dispLatency,1000)

You can't display the current trial's latency per a stimulus in /responsemessage. That stimulus is prepared at the start of the trial, hence it does not know about the latency of the current trial (which has not yet been collected).

This is what you need to do instead:

<trial experiment>
/ ontrialbegin = [
]
/ stimulustimes = [0 = fixationCross; 1000 = animatedCircle;
]

/ inputdevice = keyboard
/ beginresponsetime = 1000
/ validresponse = (" ")
/ responseinterrupt = immediate
// responsemessage = (" ",dispLatency,1000) // can't work to display the current trial's latency
/ recorddata = true
/ branch = [
    return trial.dispLat;
]
</trial>

<trial dispLat>
/ stimulusframes = [1=text.dispLatency]
/ trialduration = 1000
/ recorddata = false
</trial>

Andrew Papale
Andrew Papale
Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)Partner Member (873 reputation)
Group: Forum Members
Posts: 62, Visits: 230
Dave - 9/8/2022
Dave - 9/8/2022
AndrewPapale - 9/8/2022
Excellent, I've got the animation working.  I now need a variable handle to the latency on each trial from the time the circle starts rotating to the time the subject presses the spacebar to compute the number of points that I play to display via a response message.  I thought this would be "trial.experiment.latency".  But on the first trial this is always displaying "0" and subsequent trials are seemingly not displaying the correct response time either. 

Any help would be appreciated.  The 'latency' variable is saving correctly in the iqdat spreadsheet (as far as I can tell based on my internal clock) and differs from the 'trial.experiment.latency' that is being displayed here. 

Relevant code (Inquisit 6.6.1 on MacOS Monterey):

<shape animatedCircle>
/ shape = circle
/ color = blue
/ size = (100,100)
/ animation = circle(5000,1,75%,50%,50%,33%)
/ erase = true(white)
</shape>

<text dispLatency>
/ items= ("latency = <% trial.experiment.latency %>")
</text>

<trial experiment>
/ ontrialbegin = [
]
/ stimulustimes = [0 = fixationCross; 1000 = animatedCircle;
]

/ inputdevice = keyboard
/ beginresponsetime = 1000
/ validresponse = (" ")
/ responseinterrupt = immediate
/ responsemessage = (" ",dispLatency,1000)
/ recorddata = true
/ ontrialend = [
        
]

> / responsemessage = (" ",dispLatency,1000)

You can't display the current trial's latency per a stimulus in /responsemessage. That stimulus is prepared at the start of the trial, hence it does not know about the latency of the current trial (which has not yet been collected).

This is what you need to do instead:

<trial experiment>
/ ontrialbegin = [
]
/ stimulustimes = [0 = fixationCross; 1000 = animatedCircle;
]

/ inputdevice = keyboard
/ beginresponsetime = 1000
/ validresponse = (" ")
/ responseinterrupt = immediate
// responsemessage = (" ",dispLatency,1000) // can't work to display the current trial's latency
/ recorddata = true
/ branch = [
    return trial.dispLat;
]
</trial>

<trial dispLat>
/ stimulusframes = [1=text.dispLatency]
/ trialduration = 1000
/ recorddata = false
</trial>

wonderful, thank you
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search