Scale order troubles + logging oddities

PennController for IBEX Forums Support Scale order troubles + logging oddities

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #10840
    KateK
    Participant

    Hi!

    I am writing with a couple concerns about my experiment that I’d really appreciate help with:

    (1) After piloting my experiment with some colleagues, they noticed that the experiment in Part 2 gets stuck even if participants do make selections on all Scales as I intend them to. I need to make it so that all Scales have selections before moving onto the next trial. As you can see in the code, I tried using a Selector element with test.selected, but even with that, the experiment will not move on.

    It only moves on if you select from the third scale, *then* the second, but won’t move on if you do the inverse. I’m not sure if there’s something funky happening with the way things are sequencing.

    (2) I’m also wondering if there’s a smarter way for me to log things from the .csv to make the Results file cleaner. Since I am logging different things for different items (i.e., I don’t log “pair” for filler, but do​ log it for target), stuff gets appended in different columns. The column names in the different .csv files don’t match up, and all these mismatched columns end up with weird alignment that I think will make doing data analysis tough. Any advice on how to streamline the logging/Results would be GREATLY appreciated.

    (3) I’m using the dummy table code you suggested that generates three new items per row, but am a little lost on the best way to deal with logging this information – I think I may be over-logging for these target items. I need to log which version of the generated item is presented, but logging based on the .csv results in *all* versions being logged.

    Here is the link: https://farm.pcibex.net/r/kNFjPh/

    Thank you so much for your patience and help!

    #10846
    Jeremy
    Keymaster

    Hi,

    1) Your script waits for a selection on the first scale before printing the second and third ones in a row, then it wait for a selection on the third scale, and after that it waits for a selection on the Selector element, which contains the second and third scales. So what the participant needs to do to execute the whole script is: select a value on the first scale, then select a value on the third scale, and then select a value on the second scale (or a different value on the third scale)

    Remove the .wait() on the third Scale element, and before the second Scale element create a button named, say, “next” (newButton("next")) then add a callback command both on the second and on the third Scale elements that clicks said button (.callback( getButton("next").click() )) and replace the whole Selector bit with:

    getButton("next")
        .wait( getScale("acceptability2").test.selected().and(getScale("acceptability3").test.selected()) )
    

    2) Stuff does get appended in the same columns for all the trials generated by myCustomTrialFunction. The “part2” trials, and all the other trials not generated by that function, will indeed either report blank values in the final columns, or report unrelated values if you also use .log on their newTrial (as you do for the “part2” trials)

    3) You can distinguish which of the three versions a results line corresponds to by comparing the value logged in the “contextsetter” and “targetsentence” columns, with the values reported in the “contextcomparative”/”contextequative”/”contextquestion” and “comparativequestion”/”equativequestion”/”questionquestion” columns, respectively

    If you want to directly log the version info in the results file, you could pass an additional parameter, say “version”, as part of row and use that in log:

    new_targets = new_targets.map(t=>
        [ {contextsetter: t['contextcomparative'], targetsentence: t['comparativequestion'], version: "comp", ...t},
          {contextsetter: t['contextequative'], targetsentence: t['equativequestion'], version: "eq", ...t},
          {contextsetter: t['contextquestion'], targetsentence: t['questionquestion'], version: "qu" ...t}
        ].map(row => ["experiment_"+t.pair,"PennController", myCustomTrialFunction(row).log("version", row.version)] )
    ).flat();

    Jeremy

    #10851
    KateK
    Participant

    Hi Jeremy,

    Thank you so much for this. I am curious – is there a way to get the “Button” effect without the “Button” appearing on screen? Would I be able to make the button invisible using CSS? I wonder if it would distract participants.

    Best,
    Kate

    #10868
    Jeremy
    Keymaster

    Hi Kate,

    My suggestion was to create a Button element and not to print it, so it would never appear on the page to start with. The Button element just serves as a proxy for halting the execution of the script until all the conditions are met

    Best,
    Jeremy

Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.