Four conditions - One pool of stimuli

1,218 views
Skip to first unread message

Emmet

unread,
Jun 14, 2011, 12:18:46 PM6/14/11
to E-Prime
Hi all,

I have battled through the entire user guide and I am definitely
getting places with my E Prime project but I have one sticking point I
hope you can help me with. I have a within-groups design with four
groups (and one practice condition) and each condition will receive 25
picture slides. I think that my answer may lie within the nested lists
option but I'm struggling to a find a way to have each of the
conditions randomly sample (without replacement) their 25 pictures
from the same 125 picture list so that, in effect, each participant,
regardless of the counterbalancing of conditions has a unique ordering
of the stimuli from start through finish.

Please let me know if I have not explained myself clearly or if you
would like me to post up a screenshot or something (can I do that?)

many thanks in advance,

Emmet Clarke

University of York

David McFarlane

unread,
Jun 16, 2011, 2:39:50 PM6/16/11
to e-p...@googlegroups.com
Emmet,

Stock reminder: 1) I do not work for PST. 2) PST's trained staff
takes 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 -- this is pretty
much their substitute for proper documentation, so make full use of
it. 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...

Not sure that I follow your question, so I will answer one that I
can. Suppose you have a pool of 125 stimuli and, *within any one
session*, you want to sample 25 at a time randomly without
replacement (i.e., no stimulus reused either within any sample of 25
nor until all 125 stimuli are sampled). You can do this very easily
with a nested List. Just put all your stimuli in their own nested
List, say, StimList. Set that List to Random. Now, in any other
List where you want to use stimuli from StimList, simply add StimList
in the Nested column, and then use the attributes from StimList just
as you normally would. You can have one main List take 25 samples
from StimList, and later take another 25 samples, and it will pick up
right where it left off. IOW, E-Prime essentially shuffles all 125
stimuli, and then "draws" from that shuffled List until the List is
exhausted, and then reshuffles the List and starts over. Or, you can
get other effects by changing settings under the List Reset/Exit tab.

In general, just think of Lists (whether nested or not) as decks of
playing cards, that's how I have come to understand them. Think of
nested Lists as just additional, separate decks of cards that get
drawn from whenever you draw a row from a main List that names a
nested List. I have written about this elsewhere, if you search
around you may find my earlier posts here or on the PST Forum, but
here is another attempt...

So, each "card" (row) in any "deck" (List) has some attribute values
written on it; some of those may be the names of other decks (nested
Lists) to draw from. So, you start by shuffling all these decks as
needed. Then you draw a card from a "main" deck, and read off the
attribute values written on it. If any of these names another deck,
you draw a card from those decks and read off those attribute values;
once again, if any of these names another deck then you draw from
that deck, etc. When you are done you will have a set of attribute
values to work with for that trial. At the end of the trial you put
all the cards that you drew onto a discard pile for each deck, and
then draw new cards. Whenever you exhaust any deck, you pick up its
discard pile, reshuffle that deck as needed, and carry on.

It gets a little more complicated than this because you can modify
this behavior by changing the settings under the List Reset/Exit tab,
but this is a pretty good first approximation.

Now, if you want samples of 25 to take place *across* separate
sessions, well, that is an entirely different and more complex
matter. Could be done, but no sense trying to explain that now.

-- David McFarlane, Professional Faultfinder
"For a successful technology, reality must take precedence over
public relations, for nature cannot be fooled." (Richard Feynman,
Nobel prize-winning physicist)

Emmet

unread,
Jun 23, 2011, 9:26:00 AM6/23/11
to E-Prime
Hi David,

Thank you for your response- it was spot on. I also had a response
emailed to me from another member, so thank you too! I understand what
you are telling me although I am having one operational problem with
it:

>You can do this very easily
> with a nested List. Just put all your stimuli in their own nested
> List, say, StimList.

So I have my nested list which I have called Stimlist and I currently,
for practice reasons, have one level which samples perfectly from my
slide object. Now when I add in a second level with another stimulus I
get this error message:

"Run-time Error (Line 295) -999: Factor Error:
Can't find procedure definition"

So it runs through fine until I add a second level to my nested list.
Considering I need 125 levels (pictures) to enter into this list, I am
slighty worries. I have been reading other topics and have seen that
perhaps I should enter all 125 pictures into one Level?

many thanks in advance,

Emmet

University of York





On Jun 16, 7:39 pm, David McFarlane <mcfar...@msu.edu> wrote:
> Emmet,
>
> Stock reminder:  1) I do not work for PST.  2) PST's trained staff
> takes any and all questions athttp://support.pstnet.com/e%2Dprime/support/login.asp, and they
> >conditionsrandomly sample (without replacement) their 25 pictures
> >from the same 125 picture list so that, in effect, each participant,
> >regardless of the counterbalancing ofconditionshas a unique ordering
> >of the stimuli from start through finish.
>
> >Please let me know if I have not explained myself clearly or if you
> >would like me to post up a screenshot or something (can I do that?)
>
> >many thanks in advance,
>
> >Emmet Clarke
>
> >University of York- Hide quoted text -
>
> - Show quoted text -

liwenna

unread,
Jun 24, 2011, 6:15:29 AM6/24/11
to E-Prime
and what happens if you, in the new nested list, remove whatever is
entered in the collumn 'procedure' ?

Emmet

unread,
Jun 27, 2011, 6:40:27 AM6/27/11
to E-Prime
Hi Liwenna,

Thanks for the advice- emptying the procedure column worked and I am
now able to show more than one slide per each condition of my
experiment. This has created another problem for me because now I can
only seem to get text into my slides. I used text just to get the
design up and running but now when I enter a filename into the
Stimulus attribute of my nested list, it enters the text of the
filename rather than referencing the file itself. I can get my picture
up but only if I insert it directly into the slide object. But I can't
do that because I have 125 of them to exhibit! I'm getting for antsy
about my project now, deadlines and this eprime business has consumed
my life!

many many thanks,

Emmet
> > > - Show quoted text -- Hide quoted text -

Emmet

unread,
Jun 27, 2011, 11:05:55 AM6/27/11
to E-Prime
Hi everyone,

I had a very productive few hours since my last panicked entry and I
think I have my experiment sorted very well. It was almost a couple of
Eureka moments and browsing previous questions and the PST forums. I
now have three conditions and a practice block, all drawing 25 random
pictures from a nested list of 125 pictures. I must say, the
userguide, while initially helpful, was more of a hindrance towards
the end. I felt that discovering how to construct the bare bones
"skeleton" of the sequence of events was the key. Since I did that,
I've been adding bits and pieces on here and there for the last couple
of hours and I think I may be ready to test my participants in a few
days. Thank you for your help, David and Liwenna.

best regards,

Emmet

University of York

Ingrid

unread,
Mar 17, 2015, 4:18:08 AM3/17/15
to e-p...@googlegroups.com
Hi everyone,

I have a problem a bit similar to the one described above by Emmet (a long time ago..). I have nested lists that have worked fine - until I added another list with nesting, to make the procedure a bit different in one block of trials. I then got the same error message as Emmet also described:

"The following runtime error occured:

Factor Error:
Can't find procedure definition
Line:1206
Error Number:-999"

My script at line 1206 is: "LearnTrialList2.Run c", referring to the newly added list, which in turn refers to the nestes lists RList and EList2, of which EList2 is also new. But both the nested lists have the same procedure connected (TrialProc), so I can't quite understand why it isn't working (as they have all worked before and I don't have any new procedures, only new lists).

I was looking at Anne-Wil's response as it seemed to work for Emmet, but I can't work out how it's supposed to work to remove the connected procedure. Do I not need the procedure to be linked to EList2 for anything to happen so to speak..?

I am fairly new to E-prime and am very grateful for all your help.

Best, Ingrid

Anne-Wil

unread,
Mar 17, 2015, 8:50:23 AM3/17/15
to e-p...@googlegroups.com
Hi Ingrid,

Long version:


Generally speaking (and this is probably what I was thinking of when I wrote to Emmet, which didn't exactly solve his problem >.<): on any run of a list based procedure e-prime can (normally) only use information that is available within the row of the list that is associated with that procedure (and a single row selected from each list nested into that same row). If within a list you assign different procedures to different rows of the list, do make sure that all the information (attributes) required for that procedure is also available in that row, either as attributes in that same list, or in nested lists. If you want to share one stimlist among two procedures, simply set one level of the list up with "ProcA" and nested "stimlist", and another with "ProcB" and the same nested "stimlist". It is also possible to nest multiple lists at once, separated by a comma: "stimlist, featurelist".  Do however watch out to not associated too much information to any row of the list. Long ago I used to enter the procedure name in the main list and all its' nested lists, giving e-prime an headache ^.^ Also important: if you nest two lists that have an attributename in common, e-prime won't know which to pick (say, "stimlistA", "stimlistB" if both these lists contain the attribute "stimulus"). Quite possibly something similar happens if you nest TWO lists and each of them as a procedure connected to it (even if it's the same procedure).

Short version:
So....Is it possible that Rlist and Elist2 contain attributes with the same name? If so: nest only the one that should be used in that specific level of the 'mainlist'. I nowadays consider it proper form to only specify the procedure in the 'mainlist' ((LearnTrialList2 I think?) and leave procedure blank for nested lists (Rlist and Elist2).

Could you see what happens if you restructure your lists like that?

all best,

AW

Ingrid

unread,
Mar 17, 2015, 11:48:28 AM3/17/15
to e-p...@googlegroups.com
Hi Anne-Wil,

Thanks for your reply! I have now moved the procedure names to the main list (LearnTrialList2) and removed the procedure names from the nested lists RList and EList2, and it worked - wonderful!

Although I (sadly) got a new error message instead:

Run-time Error (Line 886)
-990: Factor Error:
No such attribute: "ImageFile1"

I guess this would maybe have to do with what you wrote about not having the same attribute names in the different nested lists? Although I don't have several nested lists on the same row in the main list, if I understood that correctly (that is, EList2 and RList are on seperate lines in the main list rows). I tried to think how I could restructure things so that I have the data about what image to show in the main list, but I don't know how to do this... I want an image to be shown that corresponds to certain other attributes that I have in the nested lists and I can't rename the attributes in one of the nested lists, so that they are different, as I have a reference to "ImageFile1" on a slide.

My main list now looks like this:
Weight | Nested | Procedure | (Attributes:) TrialType (with data in all the columns)
In the main list I have the two nested lists, alternating on every other row and they both link to my TrialProc procedure (where an image is shown and response collected).

My nested lists look like this (both of them, but of course with different data):
Weight | Nested (no data) | Procedure (no data) | (Attributes:) event | CorrectResponse | ImageFile1

I hope this makes any sense. Thanks again for your help and I hope my problems can be solved somehow.

All the best,
Ingrid

Anne-Wil

unread,
Mar 17, 2015, 11:58:06 AM3/17/15
to e-p...@googlegroups.com
Hi Ingrid,

hmmz if a level of the mainlist is run that uses TrialProc and has either Rlist or Elist2 nested, it should be able to find the attribute ImageFile1 in the nested list for that row. Could you check the attributename "ImageFile1" on each of the nested lists? In my experience an error like that often has to do with a typo in an attribute name ;)
> > takes any and all questions athttp://support.pstnet.com/e%2Dprime/support/login.asp - private, and they

Ingrid

unread,
Mar 18, 2015, 6:28:33 AM3/18/15
to e-p...@googlegroups.com
Hi again,

I checked all the nested lists now and I'm afraid it doesn't seem to be a typo, although I agree it does sound like it should be!

The thing is, I haven't made this experiment myself, but am only changing some variables in it, and there is one thing I really don't understand about hos it works. Maybe the error has something to do with this... The original version's main list has two nested lists: EList and RList - although it's always another list, EBList, that is displayed when I run the experiment (there are different images in the different lists, so I can tell it's not the images from EList that are displayed, but the ones in EBList). The only reference I can find to EBList in the experiment is in an InLine at the beginning:

"If c.GetAttrib("Session") = 7 Then
    c.SetAttrib "EList", "EBList"
    c.SetAttrib "RList", "RList"
Else
    c.SetAttrib "EList", "EBList"
    c.SetAttrib "RList", "RList"
End If

BlockNum = 0"

But surely this code only changes information in the resulting data file, adding an attribute EList with the value EBList? (And the if-statement seems a bit superfluous, as it's the same outcome in all cases - probably a leftover from some previous functionality I guess...)
Would there be any other way that the EBList can be called upon? It's lying among the unreferenced objects and is connected to a different procedure (TrialProc2) than RList and EList. I guess there are also some scripts among the unreferenced objects that I haven't checked, but these aren't active when running the experiment are they?

As you can see, I am not very well acquainted with all of E-prime's features... Very grateful for your help.

Thanks,
Ingrid

Ingrid

unread,
Mar 18, 2015, 6:38:08 AM3/18/15
to e-p...@googlegroups.com
By the way, I have now changed my version of the file (ie not the original that I was discussing in my previous post) to include two nested lists in the first block (RList and EList) with different attributes: ImageFile1 and ImageFile2, respectively. The nested lists therefore also have different procedures now in their respective rows in the main list (and the procedures include a slide that show [ImageFile1] and [ImageFile2] respectively).

I though possibly it might have helped not to have the same attribute names in the nested lists, but it didn't...
Reply all
Reply to author
Forward
0 new messages