Forum Replies Created
-
AuthorPosts
-
Jeremy
KeymasterHi,
Did you double-check which
)
your.log
commands were attached to? It’s a common issue to attach them to a PennController element instead ofnewTrial
, in which case you are actually calling a differentlog
command, eg:newTrial( newScale("yesno", "Yes", "No") .button() .print() , newButton("Next") .print() .wait( getScale("yesno").test.selected() ) .log( "ID", GetURLParameter("id") ) )
In this code, although the indentation would be consistent with
log
attaching tonewTrial
, it actually attaches to the closing parenthesis ofwait
, so effectively to the Button element. You can see that there is a)
on the line underlog
that actually closesnewTrial
Jeremy
Jeremy
KeymasterHi Anna,
The database indicates that you have 9 submissions for that experiment received via the data-collection link, all from today (February 11) starting around 19:30GMT. Those submissions each have between 3500 and 5000 rows, so they probably took a little while to be added to the database. Let me know if the problem persists tomorrow
Jeremy
Jeremy
KeymasterHi Marisol,
Your code uses two Var elements to track accuracy: one named “ACCURACY,” which is global, and one named “acc,” which is not. You use another Var element, named “shouldend,” to determine whether the trial labeled “trytoend” should execute its code, which you set according to whether the value of “acc” is greater than 3. Because “acc” is a local Var element, it is set to 0 at the beginning of every trial, and because you only increase it by 1 during a trial (if the answer was incorrect) it can never reach 3, and you Var element “shouldend” is never to to
true
All you need to do is make your Var element named “acc” global (
newVar("acc", 0).global()
) and your code should workThere is no command for the TextInput element that disabled a particular key. You would need to use a javascript function, for example if you want to prevent the participant from typing
s
orS
you could do this:newTextInput("myInput", "").print() , newFunction(()=>setTimeout(()=>document.querySelector("textarea.PennController-myInput").addEventListener("keydown",e=>{ if (!e.key.match(/s/i)) return true; e.preventDefault(); e.stopPropagation(); return false; }),200)).call()
Jeremy
Jeremy
KeymasterHi Juliana,
I’m sorry for the inconvenience. I can’t address this issue at the moment, but will take care of it later today
Jeremy
Jeremy
KeymasterJust remember, you need at least one blocking
UploadRecordings
trial beforeSendResults
to make sure the last recordings have successfully uploaded and a line with the corresponding’s zip filename has been added to the results file before it’s too late. Normally such a blockingUploadRecordings
trial is automatically added, but you can always add one manually too just to be extra sureJeremy
Jeremy
KeymasterHi Jones,
Glad to read that you’ve fixed the PHP issue
UploadRecordings
trials will compress in a single zip archive all the recordings made at the time the trial is executed, which haven’t been uploaded yet. If you have a singleMediaRecorder
element in each trial and you insert anUploadRecordings
trial after each recording trial, and assuming eachUploadRecordings
successfully uploads its zip archive in time before the next recording has completed, then each uploaded zip file will indeed contain a single recording. However, there are plenty of situations where zip files will contain more than one recording, as you can imagine. This is why you cannot name zip files based on single elements (or even single trials) and PennController simply randomly generates a unique filenameI understand it might not make for the most straightforward data processing, but the results file lists all the filenames of the archives that were uploaded for a given submission (look for the UploadRecordings lines), so you can unzip the content of those files in a dedicated subfolder (which you can name after whatever participant-identifying string you use) and look for the recording files named after the MediaRecorder elements in those subfolders
Jeremy
Jeremy
KeymasterHi,
The problem is that I get more than one value in the ‘target_onset_time’ and ‘selection_time’ columns.
Your
group_by
function needs to identify a single “target” and “answerTarget” line per tidy group, butgroup_by(Group, Condition)
will get you at least 6 lines per tidy group (based on the content of list.csv in the Masked Priming template project: 6 A-transparent, 6 A-opaque, 6 A-nw_fillers, 6 B-transparent, 6 B-opaque and 6 B-nw_fillers, to be exhaustive). If you have more than one submission, you’ll have just as many times 6-lines, because you are not grouping by submission eitherYou could use
group_by(ID, Order.number.of.item)
instead (assuming you don’t have more than one submission with the same ID). Just make sure to also include those columns in yourselect
:select(ID, Order.number.of.item, Group, Condition, Expected, PrimeType, PennElementName, Value, EventTime)
Jeremy
February 9, 2022 at 6:55 pm in reply to: Comprehension question and rshuffle in self-paced reading #7735Jeremy
KeymasterHi again,
For example, here’s what I used in the script (the .log() commands are appended to the end of newTrial):
Yes, you are using
newTrial().log
correctly: it will add the values ofrow.Group
,row.Item_ID
androw.Condition
to every single results line generated for the corresponding trial, whether for its start/end event, or for the Controller or Scale elementBut I found that no participant’s information has been stored. Do I need to add another command to “log” their responses?
Yes, you need to use
.log
on the Html element to log its informationAnother issue is that each participant has been assigned a label consisting of digits and letters. I thought these labels were unique for each participant
If you are referring to the values in the second column of the results file, they are “based on the subject’s IP address and various properties of their browser. Together with the value of the first column, this value should uniquely identify each subject.” If two submissions are sent using the same browser on the same device with the same IP, the MD5 hash will be the same for the two submissions. It is extremely unlikely, however, that the first column (Reception Time) would also have the same value, and if it does, either something went wrong and the same submission was submitted multiple times within a millisecond, or someone developed an algorithm to send multiple submissions in parallel; in either case, you should probably discard the submissions. Long story short: in the absence of a custom ID parameter, use the two first columns to uniquely identify your participants
Jeremy
Jeremy
KeymasterHi Jones,
I guess the first question to answer is, is there an issue with that PHP script in particular, or with executing any PHP script from your folder. You could try uploading another file called
hello_world.php
in the same folder with this content:<!DOCTYPE html> <html> <head> <title>Hello, World! Page</title> </head> <body> <?php echo 'Hello, World!'; ?> </body> </html>
Then, if you also get a 500 error when visiting https://userpage.fu-berlin.de/jonesanam/audios/hello_world.php it means there is an issue with how PHP and PHP permissions are configured regarding your folder. Unfortunately, if that turns out to be true, and your IT cannot assist you, I’m afraid I won’t be of much help either
If you see “Hello World,” we’d have to determine where in the PHP code the problem comes from
Jeremy
February 9, 2022 at 11:42 am in reply to: Comprehension question and rshuffle in self-paced reading #7729Jeremy
KeymasterHi Jun,
You need to use the
newTrial().log
command to append columns to your results lines. See an illustration in the advanced tutorialAnother minor issue is that for some reason, the Item ID for each trial was incremented by a fixed number (maybe by the number of practice trials and number of instruction texts).
Column #4 reports the order of creation of the trial: if you add
newTrial
s above anothernewTrial
then the latter will necessarily see its ID increase. Column #9 for each trial’s “Start” and “End” rows reports a similar information, except it applies to PennController trials exclusivelySo, all things considered, nothing went wrong: you can control what information you add to each line by using
newTrial().log
, and you can decide to use or not use the information in column 4. Alternatively, if you have an “ID” column in the CSV table that you use to generate your items, you can append it to your results lines using.log
and use that in your analyses instead of column 4Jeremy
Jeremy
KeymasterHi,
Replace the line
$("body").click(e=>e.target.type=="range"&&this.scales.push(e.target.parentElement.classList[1].replace(/PennController-/,'')));
with$("body").click(e=>{ if (e.target.type=="range") this.scales.push(e.target.parentElement.classList[1].replace(/PennController-/,'')) }); }).call()
in your “Uebung” trials
Jeremy
Jeremy
KeymasterHello,
When you have entered at least 6 incorrect passwords in a row, you cannot enter a new password for another 3 hours. After that, you can start entering new passwords again, within the same limit of 5 attempts. If you have forgotten your password, you can use the “Forgot your password?” link under the “Log in” button in the popup window that appears when you click “Log in,” and fill in the email address you used when you created your account
Let me know if problems persist
Jeremy
Jeremy
KeymasterDear Clair,
Thank you for your feedback. Sometimes it can take a while for submitted results to be added to the database, but three and a half day seems excessive. Refreshing your project’s page can help, but I will investigate the issue further
Jeremy
Jeremy
KeymasterHi again,
The server at userpage.fu-berlin.de indeed seems to impose narrower restrictions than the one at amor.cms.hu-berlin.de
It is true that https://userpage.fu-berlin.de/jonesanam/stimuli/ is not publicly accessible, but the images you upload there are publicly accessible (see, for example, https://userpage.fu-berlin.de/jonesanam/stimuli/1erbsenradiopfanne.png)
The PHP script’s address, however, returns a 500 error: https://userpage.fu-berlin.de/jonesanam/audios/saveRecordings.php. It might be that they refuse to serve PHP scripts altogether, or that something is wrong with part of the configuration somewhere. It’s really hard to tell, a 500 error is very generic. You said you made sure your PHP file is executable (you could try permission code
0644
)?Jeremy
Jeremy
KeymasterHello,
I had about 10 participants in the experiment version, though the like below is for a demo.
I see 7 submissions received for that experiment’s data-collection link, each consisting of 391 or 392 rows
Hello. I’ve also got the same problem. The last time I was able to download my results was Tuesday night.
Would you mind sharing the link to your experiment so I can look up the database?
What happens exactly when you try to download your results? Do you see a number indicating how many lines have been downloaded so far? Do you use the main “Results” button, or do you first open the modal window with the “…” button to the right of “Results”? Do you make sure you are trying to download the set of results you are interested in (corresponding to the data-collection link for example)?
Also, have you refreshed the page since the first time you tried and failed to download the results?
Jeremy
-
AuthorPosts