Forum Replies Created
-
AuthorPosts
-
robpetrosino
ParticipantOh okay, makes sense. Thanks!
robpetrosino
ParticipantThanks for your message, Jeremy! I have a clarification question on this:
2. All should be fine as long as you specify the right table for each Template command, and as long as your tables contain the same set of values in their Group columns (since PennController 1.4). That is, if trials are generated from rows where Group is A is table 1, trials will be generated from rows where Group is A in table 2.
Does that mean that I will have to add a Group variable for the fillers csv’s as well? Since the fillers will have to be same for each subject regardless of the list each subject is assigned to, that would mean that I would have to replicate all the fillers for each of the list and assign each replication to a list. Is that correct? If so, I am tempted to stick to the original plan of having separate projects for each list and then use R to bind all results files together.
robpetrosino
ParticipantHi Jeremy,
thanks for your explanation, it’s clearer now. It was just a curiosity I wanted to ask you, but I feel like it is not a crucial feature at moment. R handles that seamlessly.
-r
robpetrosino
ParticipantI am going to jump in the conversation since I have an almost similar question.
I have 6 word lists of the same rating experiment. Right now I have 6 different PCIbex projects with the same script, but different word lists (= 6 different csv’s); each experiment also has a number of fillers (they are the same across projects). As far as I could gather from your explanation, Jeremy, I can collapse the 6 lists in a single csv and add a “Group” column with the number from 1 to 6. I would then have to put
PennController.SetCounter();
at the beginning of the experiment so that the counter increments as soon as a new participant start the experiment, but then PCIbex will deal with it. Is that correct? If so, I have three remaining questions:1. To store which group each subject has been associated with, I should just call the
.log
command for the corresponding column, right?
2. In my code, the set of fillers is coded separately from the set of trials (i.e., they have differentPennController.Template()
calls) and they refer to different csv’s. Could this possibly mess with the grouping of the actual trials?
3. Do you think that changing the URL and enforcing selection of a specific word list would be more reliable than exclusively relying on PCIbex? We are going to use AMT, so either way will work from the recruitment side; I was just wondering which method would be optimal.Thanks!
robpetrosino
ParticipantHi Jeremy,
line-height
does not seem to work in either contexts. If I add `settings.cssContainer(‘line-height’, ’50px’) on each text elements, the text only appears slightly closer to the first scale button:The text label moves with the
.settings.cssContainer('vertical-align', "15")
command, which though seems to overwrite any other css properties defined within the text element. So, the definitions ofpadding
andmargin
are somehow ignored.Do you have any suggestion?
Interestingly, changing the order of the css properties changes which css properties is ignored. Compare, for example, the two excerpts below:
A.
newScale("scale", "1", "2", "3", "4", "5", "6", "7") .settings.before( newText("1", "very bad") .settings.css("font-size", "large") //.settings.cssContainer("margin-right", "30px") .settings.cssContainer('vertical-align', "15") //.settings.cssContainer("padding-right", "15")
B.
newScale("scale", "1", "2", "3", "4", "5", "6", "7") .settings.before( newText("1", "very bad") .settings.css("font-size", "large") .settings.cssContainer("margin-right", "30px") .settings.cssContainer('vertical-align', "15") //.settings.cssContainer("padding-right", "15")
It seems that only all but the *first* of the
cssContainer
methods get ignored.The behavior is different when adding the CSS properties in the css file – they seem to be completely ignored regardless of the order. I thought it might have been useful for you to know.
Thanks!
-
This reply was modified 5 years, 8 months ago by
robpetrosino. Reason: new info
robpetrosino
ParticipantOk, thanks! Although I would also like to align the labels “very bad” and “very good” so that they occur at midline of the buttons (see image below).
I was trying to use the CSS
vertical-align
command, but it did not work. Any suggestion?robpetrosino
ParticipantSounds good! Thanks!
robpetrosino
ParticipantI think I found a solution for this – I had to prepend
global_
to the name of the css file (i.e.,global_PennController.css
), as suggested in the IBEX tutorial. I am not sure why it is like that, but it might be good for you to know, in case you want to find out/fix it…robpetrosino
ParticipantHi Jeremy,
thanks, this makes sense. I created a the
PennController.css
with the code you suggested and uploaded it undercss_includes
, but it did not have any effect on the aesthetics of the scale buttons. (I have already encountered this problem before, around a couple of months ago, when I was trying to modify the aesthetics of a text object).robpetrosino
ParticipantHi Jeremy,
1. I’m not sure why you say that you can’t put all the stimuli in one CSV file: you can use their labels (as defined according to the Item column) to determine their order in PennController.Sequence (maybe you want to use the endsWith function described in the original Ibex manual)
Re. the cross-table groups, support is currently shaky, I would say. If your Group column is the same in both tables (i.e. the different values appear in the same order in both tables’ columns) then I think it should automatically select the rows from the same group for all tables.
I can’t put all the stimuli in one CSV file because there seems to me to be no way to then customize the order of presentation in
PennController.Sequence
. I have tried to callPennController.GetTable()
inPennController.Sequence
but did not work:PennController.Sequence( seq ( shuffle(PennController.GetTable("4r_1.csv").filter("condition", /warm_up/)), seq(rshuffle(PennController.GetTable("4r_1.csv").filter("condition", /list/)), rshuffle(PennController.GetTable("4r_1.csv").filter("condition", /filler/)) ) );
This is I figured that I have to split the trials in multiple csv and have different
PennController.Template()
calls (with different names) for each of them. I guess this is what you were referring to as “shaky” in your comment.
I did not understand what you meant when suggesting to use the trials’ labels (i.e. something likestartsWith(Item-)
). In my csv table, I defined two columns:Item
, which lists all the words to be presented, andcondition
, which groups words together with respect to the condition to test. None of the IBEX original functions, it seems to me, would help to ensure the order or presentation I want (i.e., first thewarmup
condition trials, then shuffling betweenlist
condition trials andfiller
condition trials).robpetrosino
ParticipantSorry I have another couple of question related to this.
1. Suppose that I have multiple csv files to retrieve stimuli from. I can’t put the stimuli together in a single csv file because I also need to pseudo-randomize their presentation order. So, for example:
PennController.Template ("4r_list1.csv", //test stimuli row => [ "AcceptabilityJudgment", {s: " ", q: row.Item, as: ["1", "2", "3", "4", "5","6","7"], leftComment: "(very bad)", rightComment: "(very good)"} ] ); PennController.Template ("4r_filler1.csv", //fillers_1 row => [ "AcceptabilityJudgment", {s: " ", q: row.Item, as: ["1", "2", "3", "4", "5","6","7"], leftComment: "(very bad)", rightComment: "(very good)"} ] ); PennController.Template ("4r_filler2.csv", //fillers_2 row => [ "AcceptabilityJudgment", {s: " ", q: row.Item, as: ["1", "2", "3", "4", "5","6","7"], leftComment: "(very bad)", rightComment: "(very good)"} ] );
My question is: how can I refer to each of the groups in the
PennController.Sequence()
?2. Taking the code above as reference, how can I add the PennController’s
.log()
command relative to the given item?Thank you for all of your help!
-
This reply was modified 5 years, 9 months ago by
robpetrosino. Reason: question updated
robpetrosino
ParticipantOk- the trick worked!
Thanks!!
robpetrosino
ParticipantHi Jeremy,
ok, I’ll try that – so the code above is correct (though I should change
item
toItem
) and I just need to modify thePennController.Sequence
()?robpetrosino
ParticipantUPDATE.
Hi again,
I am trying the first solution you suggested. If I understand correctly, the following code should do the trick:
PennController.Template ("4r_warmup.csv", row => [ "AcceptabilityJudgment", {s: " ", q: row.item, as: ["1", "2", "3", "4", "5","6","7"], leftComment: "(very bad)", rightComment: "(very good)"} ] );
The csv file “4r_warmup.csv” contains a column “item” in which the stimuli are listed. However, this does not work (the whole command is skipped and the other part of the experiment is instead shown).
-
This reply was modified 5 years, 9 months ago by
robpetrosino.
robpetrosino
ParticipantHi Jeremy,
thanks for the prompt reply.
as described in the documentation (second example—you don’t have to have two screens, you can use just one “Acceptability” controller instead).
Sorry for missing this. 🙂 I’ll try that out and see if I can figure out how to get what I want.
Though to be fair, you can have boxes with PennController scales as well, using .settings.button. And I just realize now that I haven’t added the documentation page for this option, which I’m gonna fix ASAP.
You would probably want to play with the CSS though, as the default rendering is quite ugly. You can take a look at the Aesthetics documentation page to get a sense of how CSS works in PennController.Thanks also for this! I don’t know which solution is easier, but both are for sure worth trying.
-roberto
-
This reply was modified 5 years, 8 months ago by
-
AuthorPosts