Skipped TextDisplay retains previous trial's .RT etc.
David McFarlane
mcfarla9 at msu.edu
Mon Jan 11 19:53:17 UTC 2010
David,
Standard reminder: 1) I do not work for PST. 2) PST's trained staff
really does like to take any and all questions at
http://support.pstnet.com/e%2Dprime/support/login.asp , and they
strive to respond to all requests in 24-48 hours. So don't be shy
there. 3) If you do get an answer from PST Web Support, please
extend the courtesy of posting their reply back here for the sake of others.
That said, here is my take ...
Gosh, I love these little puzzles that are so nicely described, so I
just had to try it out with my own little "toy" demo and indeed, I
recreated the problem handily. And this nicely illustrates a bit of
the structure of the script that E-Studio automatically generates for us.
If you look at the full script generated for your program, you will
see that it adds a bunch of lines like
c.SetAttrib DisplayedSometimes.Name & ".RT", DisplayedSometimes.RT
just before the final c.Log and End Sub of your Procedure. Note that
this script gets inserted *after* any of your objects and script in
your Procedure, and before the end of the Procedure, and there is
almost nothing you can do about it.
So, your inline script directly changes attributes using ordinary
c.SetAttrib statements, but does not change the underlying properties
of your DisplayedSometimes object from its last occurrence. Then you
use a c.Log in script, which dutifully logs your scripted
values. Then the program dutifully moves on to replace your scripted
attribute values with values from the DisplayedSometimes properties,
which still hold its values from the last occurrence. And then
E-Prime logs all that again. Whew!
To avoid this, I would *not* use c.SetAttrib in this case. Instead I
would have my script simply change the actual DisplayedSometimes.RT,
etc. properties, and then let the automatically generated script take
care of the rest for me. In general, I use c.SetAttrib only for
attributes that do not belong to a stimulus/input object.
BTW, I did say that that there is almost nothing you can do about
that c.SetAtrib script that E-Studio adds at the end of your
Procedure. But of course you could turn off logging for any desired
stimulus objects, and then your own c.SetAttrib script would work as
expected. But I deem this a poor practice.
<editorial>
As indicated at the start, I wholeheartily approve of posting issues
both to PST Web Support and this Group simultaneously, as you
did. And if anyone wants to get the attention of this Professional
Faultfinder then they do best by posting here on the E-Prime Google
Group rather than on the PST Forum. The Forum gets too easily
confused with Web Support, and otherwise merely duplicates the
function of this Group, so I have been limiting my own activities on
the Forum in favor of this Group.
</editorial>
-- David McFarlane, Professional Faultfinder
"When all is said and told, the 'naturalness' with which we use our
native tongues boils down to the ease with which we can use them for
making statements the nonsense of which is not obvious." -- Edsger
W. Dijkstra, "On the foolishness of 'natural language programming'"
(http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD667.html)
>Dear E-Prime group,
>
>I am working on an E-Prime 2.0 experiment, with a procedure that
>contains one or two response objects - display of the second one
>only happens on some trials. The problem is that "old" trial data
>are retained for those trials for which the second response is
>skipped. I'm sure there's a simple solution but I've thought myself
>into a corner on this one!
>
>Here is a brief description of a toy version of the experiment which
>exhibits the same problem:
>-----------------------------------------------------------------------------------------------
>We have a list Object which calls a single procedure including the
>following main elements:
>
>1. TextDisplay "Displayed every time" which appears on every trial,
>with standard data logging.
>
>2. Inline "Check for skip" - 40% of the time the second textdisplay
>will not appear, instead setting a "Skipped" variable and skipping
>to a label after the second text display.
>
>3. TextDisplay "Displayed sometimes", with standard data logging.
>
>4. Label "Skip second",
>
>5. Inline "Cleanup" which uses c.SetAttrib to set
>DisplayedSometimes.RT to -99 (and other such attributes/values) only
>if the Skipped variable is set.
>
>-----------------------------------------------------------------------------------------------
>When the experiment runs, this works as desired, skipping the second
>text display approx 40% of the time.
>
>Our problem is in the data file. Assume that DisplayedSometimes
>occurred on trial N, thus generating real RTs etc for that trial,
>and that DisplayedSometimes was skipped on trial N+1 (and thus
>DisplayedSometimes.RT should be -99). Instead, we find that the same
>values are logged from the last time they were collected (e.g. if
>.RT was 555 on trial N, it will appear as 555 for trial N+1, and so
>on until DisplayedSometimes occurs again).
>
>If we add a c.Log to the "Cleanup" inline, this creates two entries
>for trial N+1 in the data file. The first entry contains our desired
>values (.RT of -99), The second entry, however, contains values from
>trial N, e.g. .RT of 555).
>
>Is there any way to clear/flush the previous trial data from objects
>like DisplayedSometimes in the example here? (or otherwise correctly
>assign NULL or some identifiable "skipped" value like the example of
>.RT = -99 to those trials)?
>
>We have considered the possibility of calling two different
>Procedures (one with a single TextDisplay and the other with both),
>but haven't found a suitable solution as in our actual experiment,
>the decision to skip or not is partially contingent upon the
>response made to the first.
>
>I'd be grateful for any advice - can supply a toy version of the
>experiment if my verbal description is confusing!
>
>(I have submitted a request to PST support but thought I would risk
>a concurrent submission to the group after seeing the "We are
>currently experiencing a large volume of requests..." message on the
>support site!).
>
>
>Thanks,
>David
>
>--
>David Vinson, Ph.D.
>Postdoctoral Researcher
>Deafness, Cognition and Language Research Centre (DCAL)
>University College London
>49 Gordon Square, London, WC1H 0PD
>Tel +44 (0)20 7679 8688
>d.vinson at ucl.ac.uk
-------------- next part --------------
--
You received this message because you are subscribed to the Google Groups "E-Prime" group.
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.
More information about the Eprime
mailing list