Forum Replies Created
-
AuthorPosts
-
Jeremy
KeymasterThank you for the detailed updates
Unfortunately
navigator.userAgentData.mobile
is not currently supported by Firefox and Safari according to MDN Web DocsChecking the min/max width of the page is indeed a minimally intrusive proxy, although it doesn’t really check whether the participant is using a mobile device—admittedly, user agent sniffing also has its limits, as it can be tweaked by the client
Jeremy
Jeremy
KeymasterHi Jana,
The experiment works on my browser: I press Space until the sentence disappears from the page (ie. I press space after the last period character of the self-paced reading sentence) and then I click a button on the 5-point scale, at which point a button “Nastavi” shows up and I click it, and it moves to the next trial
I think Alex Drummond (who wrote the code for the DashedSentence controller) included a button you can click to reveal the next word on touchscreen devices rather than pressing space, but if my memory serves me it only shows up on iPhones. You can take a look at this thread on the original Ibex google group forums
FYI, you might want to share your demonstration link rather than your data-collection link here (with
/r/
instead of/p/
, and a different sequence of characters) so you don’t get data from testruns in your final results file and, more importantly, so we can see the debugger and edit your project to help you troubleshoot the issueJeremy
Jeremy
KeymasterHi,
Unfortunately that submission was sent to the farm’s servers precisely at the beginning of a short downtime episode, at 2:12am GMT on January 13. The submission entry was created, but the service crashed right before the data could be saved to memory
Unfortunately there is not much you can do on your end. I have been monitoring the problem more closely these past couple days, and the crashes appear to happen when there is a lot of incoming data at once, so minimizing the data in the submissions is good practice, but in your case, we’re talking about only 30 lines per submission, which is already very little
My attempts at controlling or working around those crashes have not been the most successful so far. The service is supposed to temporarily save a copy of the incoming data on disk before sending it to the database, but even that copy seems to have failed to be saved in your case
I apologize for the inconvenience. I am still actively working on addressing the issue
Jeremy
Jeremy
KeymasterDear Jones,
You will have to write some custom javascript for that. The idea is to store the audio references in an array that you shuffle, and use that array to generate both types of trials. Then you can run the trials themselves in their original order, since the references will have been randomized anyway
Assuming you are using a CSV file with a column named Audio that references filenames, your code should look like this:
Sequence("start","Item","ItemQ") newTrial("start", newButton("Start").print().wait() ) audios = [] // audios will reference the audios in a randomized order for simple playback audios2 = [] // audios2 will ultimately be a copy of audios // Create dummy trials to browse the table and feed then shuffle audios Template( row => newTrial( audios.push(row.Audio),fisherYates(audios) ) ) // Now create the Item trials reading the audio references from audios audio = "" Template( row => newTrial( "Item", audio = audios.shift(), // Extract next entry from audios audios2.push(audio) // Place it in audios2 , newAudio( audio ).play().wait() // Play back the audio , newButton( "Next" ).print().wait() ) .log("audio", audio) // Log which audio was played ) // Now create the ItemQ trials reading the audio references from audios2 audio = "" Template( row => newTrial( "ItemQ", audio = audios2.shift() // Extract next entry from audios2 , newAudio( audio ).play().wait() // Play back the audio , newTextInput("answer", "What did it say?").print().log() , newButton( "Next" ).print().wait() ) .log("audio", audio) )
Jeremy
Jeremy
KeymasterHi Monica,
Thank you for following up! It’s funny, when I edit the experiment you shared above (https://farm.pcibex.net/r/ldGLsD/) and upload PennController 2.1 beta to the Modules folder and then test it on Firefox, everything just runs smoothly: I don’t experience any preloading time and the videos play back normally. It’s actually when I don’t upgrade to 2.1 beta that I experience preloading times. This will be hard to troubleshoot…
Anyway, happy new year to you too!
Jeremy
Jeremy
KeymasterDear Marije,
I looked up our database, and your project does have a total of 25 submissions, with the most recent being received on 2021-12-22, and the one before that on 2021-11-22
All these submissions represent a total of 62300 rows, so you can download them in a single batch with no worries of exceeding the 100000 line threshold
Submissions are not always ordered chronologically in the results file (something I should fix). Could you double-check whether the December 22 submission appears somewhere before the November 22 when you download your results in batches?
Jeremy
Jeremy
KeymasterHi Elise,
I disabled
DebugOff
at demonstration links on the farm during the last update, as several issues that users faced proved to be detected by the debugger although it had been turned off while the project was still under development. The debugger is automatically turned off at the data-collection link though, makingDebugOff
entirely effectless on the farmYou can close the debugger while testing your experiment by clicking the cross button at the top-right corner of its popup window (and you can bring it back up later by pressing ctrl-d, by the way)
Jeremy
Jeremy
KeymasterHi Özge,
You can use the same
css
commands on your Text elements:newScale(7) .radio() .labelsPosition("bottom") .before( newText("left", row.answer1).css("font-size","24px").css("font-family", "Helvetica, sans-serif") ) .after( newText("right", row.answer2).css("font-size","24px").css("font-family", "Helvetica, sans-serif") ) .css("font-size","24px") .css("font-family", "Helvetica, sans-serif") .log() .print() .wait()
Jeremy
Jeremy
KeymasterHi Elise,
Thank you for your messages, it will be certainly be helpful to future users who face the same situation
Jeremy
Jeremy
KeymasterHello Camelia,
Apologies for the late reply, and happy new year to you too!
Were you able to fix this issue? Your code looks fine to me
Jeremy
Jeremy
KeymasterHi Elias,
Use the command
Sequence
, as illustrated here, to control the order of presentation of your trials. For example:Sequence("consent", "instructions", "questionnaire", randomize("phase1"), randomize("phase2"), randomize("phase3"))
(the details will depend on the specificities of your project, but I cannot see trials labeled “questionnaire” or “phase1/2/3” in the project at the link you shared—all three )Jeremy
January 10, 2022 at 11:31 am in reply to: Change calibration threshold randomly by participant #7653Jeremy
KeymasterHello,
Apologies for the late reply. You can use
30+20*Math.floor(3*Math.random())
in place of???
to randomly draw a number from30
,50
and70
. However, in order to keep track of that number in your results file, you might want to do something like:caltresh = 30+20*Math.floor(3*Math.random()); newTrial( "calibration", newFunction(() => $( "div:contains(Not recording), .PennController-MediaRecorder-record" ).hide() ).call(), // Explain that the website uses the participant's web-cam, and that the calibration starts newText(`<p style="text-align:center">この実験では視線計測を行うために,お使いのパソコンのウェブカメラを使用します。</p> <p style="text-align:center">この実験の実施中,みなさまがパソコン画面のどこを見ているか記録します。</p> <p style="text-align:center">これから視線計測のための調整をします。</p>`) .center() .print(), // Permission to continue newButton("同意して続行") .center() .print() .wait(newEyeTracker("tracker").test.ready()) .remove(), clear(), fullscreen(), // Start calibrating the eye-tracker, allow for up to 2 attempts // 50 means that calibration succeeds when 50% of the estimates match the click coordinates // Increase the threshold for better accuracy, but more risks of losing participants getEyeTracker("tracker").calibrate(caltresh, 2), // Explain that participants are required to see a green ball during the calibration session newText(`<p>試行の前に,毎回●(丸印)が画面中央に表示されます。</p> <p>丸印をクリックしてから,丸印を一定時間見続けてください。</p> <p>視線が正しく計測できている場合,実験が自動的に始まります。</p> <p>視線が正しく計測できていない場合,再調整の案内が表示されます。</p>`) .center() .print(), // Click here to continue newButton("このボタンを押すと実験が始まります").center().print().wait() ) .log("calibration", caltresh)
Jeremy
Jeremy
KeymasterHi Philip,
Apologies for the late reply. I am not sure I can identify the issue you describe, and your project is no longer accessible at the URL you shared. Let me know if you’d still like assistance with this, and if so please share a new URL with me
Jeremy
-
AuthorPosts