robpetrosino

Forum Replies Created

Viewing 15 posts - 1 through 15 (of 18 total)
  • Author
    Posts
  • in reply to: Group Columns – distribution #4136
    robpetrosino
    Participant

    Oh okay, makes sense. Thanks!

    in reply to: Group Columns – distribution #4134
    robpetrosino
    Participant

    Thanks 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.

    in reply to: choosing values in the result sheet #4131
    robpetrosino
    Participant

    Hi 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

    in reply to: Group Columns – distribution #4130
    robpetrosino
    Participant

    I 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 different PennController.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!

    in reply to: logging scale choice by key pressing #3685
    robpetrosino
    Participant

    Hi 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:

    screenshot

    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 of padding and margin are somehow ignored.

    screenshot

    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 4 years, 11 months ago by robpetrosino. Reason: new info
    in reply to: logging scale choice by key pressing #3683
    robpetrosino
    Participant

    Ok, 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).

    buttons and labels

    I was trying to use the CSS vertical-align command, but it did not work. Any suggestion?

    in reply to: putting a frame around element of a scale object #3675
    robpetrosino
    Participant

    Sounds good! Thanks!

    in reply to: putting a frame around element of a scale object #3673
    robpetrosino
    Participant

    I 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…

    in reply to: putting a frame around element of a scale object #3672
    robpetrosino
    Participant

    Hi Jeremy,

    thanks, this makes sense. I created a the PennController.css with the code you suggested and uploaded it under css_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).

    in reply to: mixing PennController and other controller #3671
    robpetrosino
    Participant

    Hi 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 call PennController.GetTable() in PennController.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 like startsWith(Item-)). In my csv table, I defined two columns: Item, which lists all the words to be presented, and condition, 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 the warmup condition trials, then shuffling between list condition trials and filler condition trials).

    in reply to: mixing PennController and other controller #3668
    robpetrosino
    Participant

    Sorry 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 4 years, 11 months ago by robpetrosino. Reason: question updated
    in reply to: mixing PennController and other controller #3667
    robpetrosino
    Participant

    Ok- the trick worked!

    Thanks!!

    in reply to: mixing PennController and other controller #3666
    robpetrosino
    Participant

    Hi Jeremy,

    ok, I’ll try that – so the code above is correct (though I should change item to Item) and I just need to modify the PennController.Sequence()?

    in reply to: mixing PennController and other controller #3662
    robpetrosino
    Participant

    UPDATE.

    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 4 years, 11 months ago by robpetrosino.
    in reply to: mixing PennController and other controller #3660
    robpetrosino
    Participant

    Hi 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

Viewing 15 posts - 1 through 15 (of 18 total)