Trigger (stimulus) codes sent on response to EEG recording
JDB
j.dainerbest at gmail.com
Wed Apr 4 14:51:48 UTC 2012
Thanks, David.
I've submitted a support request; I'll be sure to update here if anything
useful comes of it. For now, I'll stick with the plan I began to outline:
1. Send a set code when the user responds (e.g., custom value = 54).
2. At the subsequent slide, send the actual response as done before (using
If/Then) statements.
While not particularly elegant, this solution should allow such analyses as
I'm interested in doing. (Performing conditional operations on EEG data
will be possible, as will time-locking to participants' responses.)
J
El martes 3 de abril de 2012 17:42:55 UTC-4, McFarlane, David escribió:
>
> Ooh, I did not think about Task Events having a
> limited range of output options, thanks for
> acting the pioneer and reporting back. I cannot
> think of any way around that, so your best bet is
> PST Web Support. We also use ActiView/Biosemi,
> so I can confirm that for input it takes only
> 8-bit values, i.e., integers in the range 0-255 (aka &h00 to &hFF).
>
> The bit of generated code that you supply does
> not give us much hope either, it seems to confirm
> that Task Events allows only a limited range of
> fixed "Action" items. BTW, the "ebUCase_W" etc.
> that you mention may be part of PST's effort to
> reduce the use of quoted strings so as to avoid
> "Script too big" problems, if you look in the KB
> you can find some articles about this.
>
> So offhand I agree that your best bet is your
> plan to output a simple signal at the time of
> response and then follow that with a later signal
> for the coded response value. Just one hint, if
> the signal on the output line is usually 0, then
> the external equipment will not see another 0
> output because there is no change on the output,
> you have to output something different (I explain
> this in my fMRI & EEG lesson).
>
> BTW, I cannot resist a little programming style
> note. The conventional way to indent your If-ElseIf-End If would be
>
> If TaskImage.RESP = "l" Then
> resp = 55
> ElseIf TaskImage.RESP = "s" Then
> resp = 56
> ElseIf TaskImage.RESP = "o" Then
> resp = 57
> ElseIf TaskImage.RESP = "w" Then
> resp = 58
> ElseIf TaskImage.RESP = "" Then
> resp = 59
> Else
> resp = 60
> End If
>
> At least you use ElseIf -- you wouldn't believe
> how many people I see do this with an ugly and
> inefficient sequence of plain If-Then-End If statements.
>
> Regards,
> -- David McFarlane
>
>
> At 4/3/2012 04:43 PM Tuesday, JDB wrote:
> >I'm glad to hear from someone else that the code
> >appears to work. I do wish it were more
> >efficient, but I don't have the budget to do the
> >online course, for the moment.
> >
> >I've followed David's suggestion and upgraded to
> >E-Prime 2.0.10 Professional (it was time), which
> >does indeed have Task Events that seem to fit my
> >needs. The problem is that the TaskImage.RESP is
> >not a number, which is (I believe) what my
> >external device needs—it's a letter. I don't
> >think I can use an IF,Then statement in the
> >parameters under Task Events. Am I missing something?
> >
> >One option I can think of is to send the
> >accuracy (a 1 or 0) when the participant
> >responds as a Task Event, and to send the
> >numeric code for response at the Offset via InLine code (as before).
> >
> >Better, though, would be to now code using the
> >code it generates from the Task Events. Is this
> >possible? When I Generate the experiment, the relevant lines are:
> >If ParallelPort.GetState() = ebStateOpen Then
> >
> >TaskImage.Tasks.Add
> >ParallelPort.CreateTask("TaskImage.Keyboard(1).Press",
> >0, WriteByteACC, , Long, CLogical(Yes))
> >
> >End If
> >
> >
> >(I've written out "WriteByteACC"—E-Studio writes
> >it as "ebUCase_W, ebLCase_r", etc. I'm copying
> >from another computer, but I'm also not sure
> >whether the eb?Case letter-names are necessary.)
> >
> >In any case, could I insert this as InLine code
> >instead (before the TaskImage), and include the
> >code I suggested above (*updated below)? Or
> >should I instead look into the other links
> >recommended (e.g., using the IsPending() function)? Any thoughts?
> >
> >Barring suggestions, I will of course contact
> >PST staff [and post their response here].
> >
> >Thanks!
> >
> >* Code to insert:
> >
> >''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> >' InLine - Code START
> >''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> >If TaskImage.RESP = "l" Then
> > resp = 55
> > ElseIf TaskImage.RESP = "s" Then
> > resp = 56
> > ElseIf TaskImage.RESP = "o" Then
> > resp = 57
> > ElseIf TaskImage.RESP = "w" Then
> > resp = 58
> > ElseIf TaskImage.RESP = "" Then
> > resp = 59
> > Else resp = 60
> >End If
> >
> >If ParallelPort.GetState() = ebStateOpen Then
> >TaskImage.Tasks.Add
> >ParallelPort.CreateTask("TaskImage.Keyboard(1).Press",
> >0, WriteByte(custom), resp, Integer, CLogical(Yes))
> >
> >End If
> >''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> >' InLine - Code END
> >''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> >
> >
> >
> >
> >On Thursday, March 22, 2012 4:32:25 PM UTC-4, McFarlane, David wrote:
> >If you use EP2.0.10.182 *Professional* or later then you are in luck
> >-- see the new Task Events feature documented at
> ><http://www.pstnet.com/support/kb.asp?TopicID=4803>
> http://www.pstnet.com/support/kb.asp?TopicID=4803
> >. (Remember, I
> >have uniformly advised everyone to spend the extra money for
> >Professional, no matter what PST advises.)
> >
> >If you do not have EP2.0.10.182 Pro, then you might look at
> ><
> http://groups.google.com/group/e-prime/browse_thread/thread/cfc3d0307d5c7fbd
> >
> http://groups.google.com/group/e-prime/browse_thread/thread/cfc3d0307d5c7fbd
> >
> >and
> ><
> http://groups.google.com/group/e-prime/browse_thread/thread/ef0e5a8d8b87aa0c
> >
> http://groups.google.com/group/e-prime/browse_thread/thread/ef0e5a8d8b87aa0c
> >
> >for hints. Or, of course, take this up with PST Web Support at
> ><http://support.pstnet.com/e%2Dprime/support/login.asp>
> http://support.pstnet.com/e%2Dprime/support/login.asp
> >, where they
> >strive to respond to all requests in 24-48 hours. And if you do get
> >an answer from PST staff, please extend the courtesy of posting their
> >reply back here for the sake of others.
> >
> >BTW, although your particular inline code for the stimulus signal
> >works well enough (which is a virtue), it suffers in efficiency. I
> >have an entire lesson about handling these sorts of things in my
> >online course (although that lesson does not address your precise
> >response signal question).
> >
> >-----
> >David McFarlane
> >E-Prime training
> >online:
> ><http://psychology.msu.edu/Workshops_Courses/eprime.aspx>
> http://psychology.msu.edu/Workshops_Courses/eprime.aspx
> >Twitter: @EPrimeMaster
> >(<http://twitter.com/EPrimeMaster>twitter.com/EPrimeMaster)
> >
> >
> >At 3/22/2012 03:52 PM Thursday, you wrote:
> > >I'm working on a project that involves interfacing an E-Prime
> > >experiment with the ActiView/Biosemi interface for EEG recording.
> > >
> > >I have this in the UserScript:
> > >Const Sport as Integer = &H378
> > >
> > >Every time an image appears, this code is sent immediately before:
> > >
> > >InLine:
> > >Intermediary.OnsetSignalEnabled = True
> > >Intermediary.OnsetSignalPort = Sport
> > >Intermediary.OnsetSignalData = c.GetAttrib("IntermediaryCode")
> > >
> > >Intermediary.OffsetSignalData = 0
> > >Intermediary.OffsetSignalPort = Sport
> > >Intermediary.OffsetSignalEnabled = True
> > >
> > >This works fine. The task then presents the participant with images,
> > >to one of which they respond; the image is on-screen for 500ms,
> > >followed by a fixation cross for another 500ms. They can respond at
> > >any point, but the image & cross are on-screen for a set amount of
> > >time. What I'd like is for the stimcode to be sent as soon as possible
> > >after the response. I've been successful in sending a response code
> > >after fixation cross goes away, using the following code:
> > >
> > >InLine:
> > >If TaskImage.RESP = "l" Then
> > > resp = 55
> > > ElseIf TaskImage.RESP = "s" Then
> > > resp = 56
> > > ElseIf TaskImage.RESP = "o" Then
> > > resp = 57
> > > ElseIf TaskImage.RESP = "w" Then
> > > resp = 58
> > > ElseIf TaskImage.RESP = "" Then
> > > resp = 59
> > > Else resp = 60
> > >End If
> > >
> > >FixationCross2.OnsetSignalEnabled = True
> > >FixationCross2.OnsetSignalPort = Sport
> > >FixationCross2.OnsetSignalData = resp
> > >
> > >FixationCross2.OffsetSignalEnabled = True
> > >FixationCross2.OffsetSignalPort = Sport
> > >FixationCross2.OffsetSignalData = 0
> > >
> > >However, this only works by sending itself at the beginning of a new
> > >fixation cross. Ideally, subject responses would be sent WHEN they
> > >respond. But I can't figure out how to do that. Is there some function
> > >equivalent to "OnResponse"? It seems like it should be possible, but
> > >I'm not sure how to do it.
> > >
> > >Thanks for your help!
>
>
--
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To view this discussion on the web visit https://groups.google.com/d/msg/e-prime/-/6WgXZmQKqVoJ.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.linguistlist.org/pipermail/eprime/attachments/20120404/3a613ee3/attachment.htm>
More information about the Eprime
mailing list