This article applies to:
E-Prime 3.0
E-Prime 2.0
This item was introduced in E-Prime 2.0.
Detail
E-Prime 2.0 introduced the "(same as duration)" option for PreRelease values as the default for newly created objects. To assist the majority of paradigms, the use of PreRelease is typically recommended. Most support requests typically entail the recommendation of using PreRelease (amongst other edits such as duration divisible by refresh, smaller frame size) to reduce OnsetDelay values during an experiment session.
Researchers should consider the following when using PreRelease "same as duration:"
1) InLine or PackageCall. Care needs to be considered of the state of the experiment trial when an InLine or PackageCall follows an object that uses PreRelease "same as duration." Typically, this means that it cannot be assumed that the previous object has cleared, finished, or is no longer collecting responses from input masks. To assist with this, consider using script similar to the following to either wait for or continue the trial execution. Note that the "PreviousObject" would need to be replaced with the name of the actual previous object on the trial.
' If you have an object prior to this that has input
' masks then update its name here
Dim thePreviousObject As RteRunnableInputObject
Set thePreviousObject = CRteRunnableInputObject(Rte.GetObject("PreviousObject"))
Do
'Any requests for termination?
If GetTerminateMode() = ebTerminate Then
SetTerminateMode ebTerminateNone
SetNextTargetOnsetTime Clock.Read
Exit Do
ElseIf GetTerminateMode() = ebTerminateJump Then
SetTerminateMode ebTerminateNone
SetNextTargetOnsetTime Clock.Read
Err.Raise ebInputAccepted
End If
'Input Masks still pending?
If Not thePreviousObject Is Nothing Then
If Not thePreviousObject.InputMasks.IsPending() Then
Exit Do
End If
End If
'Ready for the next object?
If Clock.Read >= (GetNextTargetOnsetTime() - 1) Then
Exit Do
End If
If GetNextTargetOnsetTime() - Clock.Read > 4 Then Sleep 4
DoEvents
Loop
2) Last object on Procedure. When the last object on a Procedure has PreRelease, it releases into the final logging of the Procedure and selects the next exemplar for the trial. To assist with this, the default for the Procedure object is to process the last object with script similar to the above. If your paradigm requires a different behavior, set the Procedure.ProcessLastObjectPendingInputMasks to No. The Procedure.ProcessLastObjectPendingInputMasks allows for a consistent use of PreRelease=(same as duration) without having to make special alterations to the last object on a Procedure.
3) FeedbackDisplay. When an object has PreRelease value and the next object is a FeedbackDisplay, then the stats shown during the experiment run could be inaccurate because the Stimulus object may still be accepting responses. To assist with this, the default for the FeedbackDisplay object is to process the input object with script similar to the above. If your paradigm requires a different behavior, set the FeedbackDisplay.ProcessInputObjectPendingInputMasks to No. The FeedbackDisplay.ProcessInputObjectPendingInputMasks allows for a consistent use of PreRelease=(same as duration) without having to make special alterations to objects prior to a FeedbackDisplay.
See Also:
TIMING: Stimulus Preparation Solutions [22857]
For more information view the E-Prime Command Reference for specifics involving E-Basic (https://pstnet.com/ecr).
Legacy End User Comments
David McFarlane Ah, on further testing, I find that I partially misunderstood Procedure.ProcessLastObjectPendingInputMasks. It *does* work as advertised for an input mask running on the last object of a Procedure. The protective behavior simply does not extend to any pending input masks from any objects prior to the last one of a Procedure, as is made clear by carefully reading the reference code above. Brandon Cernicky This property was primarily introduced to assist with the change for (same as duration) for PreRelease. The overwhelming majority of timing related questions from support advised using more PreRelease thus the change. The (same as duration) does have a learning curve to deal with the special cases such that Procedure.ProcessLastObjectPendingInputMasks property. David McFarlane Well, it seems that this behavior has been improved for the production release, 2.0.10.242. At least in my example, extended input through the last object of a Procedure now logs the desired earlier input, and the final object in SessionProc now does remain for its Duration even without an input mask, all with no further fuss. IMO, this is just how things should work. I have not yet inspected the generated E-Basic code to further verify this, but I hope that PST staff can themselves confirm this change. Brandon Cernicky Confirmed. The use of ProcessPendingInputMasks for procedure will behave as you indicated. The use of All under SessionProc (or your top procedure) will generate E-BasicScript that will effectively wait for the next target onset time or other termination condition and not wait for any input masks which is the behavior expected for majority of designs but makes the "input masks" part of the name somewhat misleading. Brandon Cernicky A secondary note that the biggest concern with PreRelease=(same as duration) and use of "top of procedure" for GeneratePreRun is that if your very last object in your procedure is a Movie or Sound, then it will play and then immediately stop your movie/sound because the pre release will go to the next set of trials and then .Load which causes the movie/sound to stop. David McFarlane The problem described above for Movie and Sound also happens to SoundIn. See the KB article on GeneratePreRun and GeneratePostRun (http://www.pstnet.com/support/kb.asp?TopicID=3299) for more information.
2/21/2012 10:49:00 PM
Would be nice to have a Procedure property that would check for pending input masks from *all* objects in a Procedure before logging data. Until then, current improvements notwithstanding, use of PreRelease will continue to take great finesse and vigilance to avoid unpleasant surprises. Because I fear loss of input data more than loss of stimulus timing accuracy, personally I still prefer to default PreRelease to 0 unless the user really knows what they are doing. But my priority may differ from others.
2/29/2012 8:14:00 PM
Detection of handling a case where the last/input object has no input masks is being under advisment (i.e. it wait for the next onset time if no input masks).
For any situation, the Logging tab has a PendingInputMasks property that can be used to find situations where input masks are still enabled at the end of a procedure.
In addition, there is a Experiment Advisor Module that will report when objects have PendingInputMask property set at the end of a procedure.
7/26/2012 8:13:00 PM
9/10/2012 8:00:00 PM
9/10/2012 8:02:00 PM
12/13/2013 3:28:00 PM
Comments
0 comments
Please sign in to leave a comment.