PennController for IBEX › Forums › Support › Scale order troubles + logging oddities
Tagged: logging, results file, scale
- This topic has 3 replies, 2 voices, and was last updated 1 year, 2 months ago by Jeremy.
-
AuthorPosts
-
August 28, 2023 at 10:33 am #10840KateKParticipant
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!
August 31, 2023 at 2:12 am #10846JeremyKeymasterHi,
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 acallback
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 theirnewTrial
(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 inlog
: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
September 5, 2023 at 12:36 pm #10851KateKParticipantHi 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,
KateSeptember 26, 2023 at 4:27 am #10868JeremyKeymasterHi 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 -
AuthorPosts
- You must be logged in to reply to this topic.