psychopy 2025.1.0__py3-none-any.whl → 2025.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of psychopy might be problematic. Click here for more details.
- psychopy/VERSION +1 -1
- psychopy/alerts/alertsCatalogue/4810.yaml +19 -0
- psychopy/alerts/alertsCatalogue/alertCategories.yaml +4 -0
- psychopy/alerts/alertsCatalogue/alertmsg.py +15 -1
- psychopy/alerts/alertsCatalogue/generateAlertmsg.py +2 -2
- psychopy/app/Resources/classic/add_many.png +0 -0
- psychopy/app/Resources/classic/add_many@2x.png +0 -0
- psychopy/app/Resources/classic/devices.png +0 -0
- psychopy/app/Resources/classic/devices@2x.png +0 -0
- psychopy/app/Resources/classic/photometer.png +0 -0
- psychopy/app/Resources/classic/photometer@2x.png +0 -0
- psychopy/app/Resources/dark/add_many.png +0 -0
- psychopy/app/Resources/dark/add_many@2x.png +0 -0
- psychopy/app/Resources/dark/devices.png +0 -0
- psychopy/app/Resources/dark/devices@2x.png +0 -0
- psychopy/app/Resources/dark/photometer.png +0 -0
- psychopy/app/Resources/dark/photometer@2x.png +0 -0
- psychopy/app/Resources/light/add_many.png +0 -0
- psychopy/app/Resources/light/add_many@2x.png +0 -0
- psychopy/app/Resources/light/devices.png +0 -0
- psychopy/app/Resources/light/devices@2x.png +0 -0
- psychopy/app/Resources/light/photometer.png +0 -0
- psychopy/app/Resources/light/photometer@2x.png +0 -0
- psychopy/app/_psychopyApp.py +35 -13
- psychopy/app/builder/builder.py +88 -35
- psychopy/app/builder/dialogs/__init__.py +69 -220
- psychopy/app/builder/dialogs/dlgsCode.py +29 -8
- psychopy/app/builder/dialogs/paramCtrls.py +1468 -904
- psychopy/app/builder/validators.py +25 -17
- psychopy/app/coder/coder.py +12 -1
- psychopy/app/coder/repl.py +5 -2
- psychopy/app/colorpicker/__init__.py +1 -1
- psychopy/app/deviceManager/__init__.py +1 -0
- psychopy/app/deviceManager/addDialog.py +218 -0
- psychopy/app/deviceManager/dialog.py +185 -0
- psychopy/app/deviceManager/panel.py +191 -0
- psychopy/app/deviceManager/utils.py +60 -0
- psychopy/app/idle.py +7 -0
- psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ar_001/LC_MESSAGE/messages.po +12695 -10592
- psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.po +10199 -24
- psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/da_DK/LC_MESSAGE/messages.po +10199 -24
- psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/de_DE/LC_MESSAGE/messages.po +11221 -9712
- psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/el_GR/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/en_NZ/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/en_US/LC_MESSAGE/messages.po +10195 -18
- psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_CO/LC_MESSAGE/messages.po +11917 -9101
- psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_ES/LC_MESSAGE/messages.po +11924 -9103
- psychopy/app/locale/es_US/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_US/LC_MESSAGE/messages.po +11917 -9101
- psychopy/app/locale/et_EE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/et_EE/LC_MESSAGE/messages.po +11084 -9569
- psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fa_IR/LC_MESSAGE/messages.po +11590 -5806
- psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fi_FI/LC_MESSAGE/messages.po +10199 -24
- psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fr_FR/LC_MESSAGE/messages.po +11091 -9577
- psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/he_IL/LC_MESSAGE/messages.po +11072 -9549
- psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/hi_IN/LC_MESSAGE/messages.po +11071 -9559
- psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/hu_HU/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/it_IT/LC_MESSAGE/messages.po +11072 -9560
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +1485 -1137
- psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ko_KR/LC_MESSAGE/messages.po +10199 -24
- psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ms_MY/LC_MESSAGE/messages.po +11463 -8757
- psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/nl_NL/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/nn_NO/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pl_PL/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pt_PT/LC_MESSAGE/messages.po +11288 -9434
- psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ro_RO/LC_MESSAGE/messages.po +10200 -25
- psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ru_RU/LC_MESSAGE/messages.po +10199 -24
- psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/sv_SE/LC_MESSAGE/messages.po +11441 -8747
- psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/tr_TR/LC_MESSAGE/messages.po +11069 -9545
- psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/zh_CN/LC_MESSAGE/messages.po +12085 -8268
- psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/zh_TW/LC_MESSAGE/messages.po +11929 -8022
- psychopy/app/plugin_manager/dialog.py +12 -3
- psychopy/app/plugin_manager/packageIndex.py +303 -0
- psychopy/app/plugin_manager/packages.py +203 -63
- psychopy/app/plugin_manager/plugins.py +120 -240
- psychopy/app/preferencesDlg.py +6 -1
- psychopy/app/psychopyApp.py +16 -4
- psychopy/app/runner/runner.py +10 -2
- psychopy/app/runner/scriptProcess.py +8 -3
- psychopy/app/stdout/stdOutRich.py +11 -4
- psychopy/app/themes/icons.py +3 -0
- psychopy/app/utils.py +61 -0
- psychopy/colors.py +10 -5
- psychopy/data/experiment.py +133 -23
- psychopy/data/routine.py +12 -0
- psychopy/data/staircase.py +42 -20
- psychopy/data/trial.py +20 -12
- psychopy/data/utils.py +43 -3
- psychopy/demos/builder/Experiments/dragAndDrop/drag_and_drop.psyexp +22 -5
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solutions.xlsx +0 -0
- psychopy/demos/builder/Experiments/stroopVoice/stroopVoice.psyexp +2 -12
- psychopy/demos/builder/Feature Demos/buttonBox/buttonBoxDemo.psyexp +3 -8
- psychopy/demos/builder/Feature Demos/movies/movie.psyexp +220 -0
- psychopy/demos/builder/Feature Demos/movies/readme.md +3 -0
- psychopy/demos/builder/Feature Demos/visualValidator/visualValidator.psyexp +1 -2
- psychopy/demos/builder/Hardware/camera/camera.psyexp +3 -16
- psychopy/demos/builder/Hardware/microphone/microphone.psyexp +3 -16
- psychopy/demos/coder/hardware/hdf5_extract.py +133 -0
- psychopy/event.py +20 -15
- psychopy/experiment/_experiment.py +86 -10
- psychopy/experiment/components/__init__.py +3 -10
- psychopy/experiment/components/_base.py +9 -20
- psychopy/experiment/components/button/__init__.py +1 -1
- psychopy/experiment/components/buttonBox/__init__.py +50 -54
- psychopy/experiment/components/camera/__init__.py +137 -359
- psychopy/experiment/components/keyboard/__init__.py +17 -24
- psychopy/experiment/components/microphone/__init__.py +61 -110
- psychopy/experiment/components/movie/__init__.py +2 -3
- psychopy/experiment/components/serialOut/__init__.py +192 -93
- psychopy/experiment/components/settings/__init__.py +45 -27
- psychopy/experiment/components/sound/__init__.py +82 -73
- psychopy/experiment/components/soundsensor/__init__.py +43 -80
- psychopy/experiment/devices.py +303 -0
- psychopy/experiment/exports.py +20 -18
- psychopy/experiment/flow.py +7 -0
- psychopy/experiment/loops.py +47 -29
- psychopy/experiment/monitor.py +74 -0
- psychopy/experiment/params.py +48 -10
- psychopy/experiment/plugins.py +28 -108
- psychopy/experiment/py2js_transpiler.py +1 -1
- psychopy/experiment/routines/__init__.py +1 -1
- psychopy/experiment/routines/_base.py +59 -24
- psychopy/experiment/routines/audioValidator/__init__.py +19 -155
- psychopy/experiment/routines/visualValidator/__init__.py +25 -25
- psychopy/hardware/__init__.py +20 -57
- psychopy/hardware/button.py +15 -2
- psychopy/hardware/camera/__init__.py +2237 -1394
- psychopy/hardware/joystick/__init__.py +1 -1
- psychopy/hardware/keyboard.py +5 -8
- psychopy/hardware/listener.py +4 -1
- psychopy/hardware/manager.py +75 -35
- psychopy/hardware/microphone.py +53 -7
- psychopy/hardware/monitor.py +144 -0
- psychopy/hardware/photometer/__init__.py +156 -117
- psychopy/hardware/serialdevice.py +16 -2
- psychopy/hardware/soundsensor.py +4 -1
- psychopy/iohub/devices/deviceConfigValidation.py +2 -1
- psychopy/iohub/devices/eyetracker/hw/gazepoint/__init__.py +2 -2
- psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/__init__.py +1 -0
- psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/eyetracker.py +10 -0
- psychopy/iohub/devices/keyboard/darwin.py +8 -5
- psychopy/iohub/util/__init__.py +7 -8
- psychopy/localization/generateTranslationTemplate.py +208 -116
- psychopy/localization/messages.pot +4305 -3502
- psychopy/monitors/MonitorCenter.py +174 -74
- psychopy/plugins/__init__.py +6 -4
- psychopy/preferences/devices.py +80 -0
- psychopy/preferences/generateHints.py +2 -1
- psychopy/preferences/preferences.py +35 -11
- psychopy/scripts/psychopy-pkgutil.py +969 -0
- psychopy/scripts/psyexpCompile.py +1 -1
- psychopy/session.py +34 -38
- psychopy/sound/__init__.py +6 -260
- psychopy/sound/audioclip.py +164 -0
- psychopy/sound/backend_ptb.py +8 -0
- psychopy/sound/backend_pygame.py +10 -0
- psychopy/sound/backend_pysound.py +9 -0
- psychopy/sound/backends/__init__.py +0 -0
- psychopy/sound/microphone.py +3 -0
- psychopy/sound/sound.py +58 -0
- psychopy/tests/data/correctScript/python/correctNoiseStimComponent.py +1 -1
- psychopy/tests/data/duplicateHeaders.csv +2 -0
- psychopy/tests/test_app/test_builder/test_BuilderFrame.py +22 -7
- psychopy/tests/test_app/test_builder/test_CompileFromBuilder.py +0 -2
- psychopy/tests/test_data/test_utils.py +5 -1
- psychopy/tests/test_experiment/test_components/test_ButtonBoxComponent.py +22 -2
- psychopy/tests/test_hardware/test_ports.py +0 -12
- psychopy/tests/test_tools/test_stringtools.py +1 -1
- psychopy/tools/attributetools.py +12 -5
- psychopy/tools/fontmanager.py +17 -14
- psychopy/tools/gltools.py +4 -2
- psychopy/tools/movietools.py +43 -2
- psychopy/tools/stringtools.py +33 -8
- psychopy/tools/versionchooser.py +1 -1
- psychopy/validation/audio.py +5 -1
- psychopy/validation/visual.py +5 -1
- psychopy/visual/basevisual.py +8 -7
- psychopy/visual/circle.py +2 -2
- psychopy/visual/helpers.py +3 -1
- psychopy/visual/image.py +29 -109
- psychopy/visual/movies/__init__.py +1800 -313
- psychopy/visual/polygon.py +4 -0
- psychopy/visual/shape.py +2 -2
- psychopy/visual/window.py +35 -12
- psychopy/voicekey/__init__.py +41 -669
- psychopy/voicekey/labjack_vks.py +7 -48
- psychopy/voicekey/parallel_vks.py +7 -42
- psychopy/voicekey/vk_tools.py +114 -263
- {psychopy-2025.1.0.dist-info → psychopy-2025.2.1.dist-info}/METADATA +20 -13
- {psychopy-2025.1.0.dist-info → psychopy-2025.2.1.dist-info}/RECORD +222 -190
- {psychopy-2025.1.0.dist-info → psychopy-2025.2.1.dist-info}/WHEEL +1 -1
- psychopy/visual/movies/players/__init__.py +0 -62
- psychopy/visual/movies/players/ffpyplayer_player.py +0 -1401
- psychopy/voicekey/demo_vks.py +0 -12
- psychopy/voicekey/signal.py +0 -42
- {psychopy-2025.1.0.dist-info → psychopy-2025.2.1.dist-info}/entry_points.txt +0 -0
- {psychopy-2025.1.0.dist-info → psychopy-2025.2.1.dist-info}/licenses/LICENSE +0 -0
psychopy/data/utils.py
CHANGED
|
@@ -181,6 +181,35 @@ def indicesFromString(indsString):
|
|
|
181
181
|
pass
|
|
182
182
|
|
|
183
183
|
|
|
184
|
+
def dictFromString(val):
|
|
185
|
+
# return as-is if already a dict
|
|
186
|
+
if isinstance(val, dict):
|
|
187
|
+
return val
|
|
188
|
+
# stringify
|
|
189
|
+
if not isinstance(val, str):
|
|
190
|
+
val = str(val)
|
|
191
|
+
# strip spaces
|
|
192
|
+
val = val.strip()
|
|
193
|
+
# make sure we have curly braces
|
|
194
|
+
if not val.startswith("{") and val.endswith("}"):
|
|
195
|
+
val = f"{{{val}}}"
|
|
196
|
+
# try to evaluate with ast (works for simple values)
|
|
197
|
+
try:
|
|
198
|
+
iterable = ast.literal_eval(val)
|
|
199
|
+
assert isinstance(iterable, dict)
|
|
200
|
+
return iterable
|
|
201
|
+
except (ValueError, SyntaxError, AssertionError):
|
|
202
|
+
pass # e.g. "yes, no" won't work. We'll go on and try another way
|
|
203
|
+
# try manually if ast fails
|
|
204
|
+
parsed = {}
|
|
205
|
+
for item in val[1:-1].split(","):
|
|
206
|
+
if ":" in item:
|
|
207
|
+
key, val = item.split(":", maxsplit=1)
|
|
208
|
+
parsed[key.strip()] = val.strip()
|
|
209
|
+
|
|
210
|
+
return parsed
|
|
211
|
+
|
|
212
|
+
|
|
184
213
|
def listFromString(val, excludeEmpties=False):
|
|
185
214
|
"""Take a string that looks like a list (with commas and/or [] and make
|
|
186
215
|
an actual python list"""
|
|
@@ -191,8 +220,7 @@ def listFromString(val, excludeEmpties=False):
|
|
|
191
220
|
elif type(val) == list:
|
|
192
221
|
return list(val) # nothing to do
|
|
193
222
|
elif type(val) != str:
|
|
194
|
-
|
|
195
|
-
.format(repr(val)))
|
|
223
|
+
return [val]
|
|
196
224
|
# try to evaluate with ast (works for "'yes,'no'" or "['yes', 'no']")
|
|
197
225
|
try:
|
|
198
226
|
iterable = ast.literal_eval(val)
|
|
@@ -277,6 +305,10 @@ def importConditions(fileName, returnFieldNames=False, selection=""):
|
|
|
277
305
|
thisAttempt = pd.read_csv(
|
|
278
306
|
fileName, encoding='utf-8-sig', sep=sep, decimal=dec
|
|
279
307
|
)
|
|
308
|
+
# read in the headers separately to bypass pandas sanitization
|
|
309
|
+
thisAttempt.columns = pd.read_csv(
|
|
310
|
+
fileName, encoding='utf-8-sig', sep=sep, decimal=dec, header=None, nrows=1
|
|
311
|
+
).iloc[0, :]
|
|
280
312
|
# if there's only one header, check that it doesn't contain delimiters
|
|
281
313
|
# (one column with delims probably means it's parsed without error but not
|
|
282
314
|
# recognised columns correctly)
|
|
@@ -335,12 +367,20 @@ def importConditions(fileName, returnFieldNames=False, selection=""):
|
|
|
335
367
|
names are OK, return silently; else raise with msg
|
|
336
368
|
"""
|
|
337
369
|
fileName = pathToString(fileName)
|
|
370
|
+
# make sure all columns are named
|
|
338
371
|
if not all(fieldNames):
|
|
339
372
|
raise exceptions.ConditionsImportError(
|
|
340
373
|
"Conditions file %s: Missing parameter name(s); empty cell(s) in the first row?" % fileName,
|
|
341
374
|
translated=_translate("Conditions file %s: Missing parameter name(s); empty cell(s) in the first row?") % fileName
|
|
342
375
|
)
|
|
376
|
+
# check each name
|
|
343
377
|
for name in fieldNames:
|
|
378
|
+
# is this name duplicated?
|
|
379
|
+
if sum([otherName == name for otherName in fieldNames]) > 1:
|
|
380
|
+
raise exceptions.ConditionsImportError(_translate(
|
|
381
|
+
"Duplicate column name '{}'"
|
|
382
|
+
).format(name))
|
|
383
|
+
# is this name a valid variable name?
|
|
344
384
|
OK, msg, translated = isValidVariableName(name)
|
|
345
385
|
if not OK:
|
|
346
386
|
# tailor message to importConditions
|
|
@@ -389,7 +429,7 @@ def importConditions(fileName, returnFieldNames=False, selection=""):
|
|
|
389
429
|
if val.startswith('[') and val.endswith(']'):
|
|
390
430
|
# val = eval('%s' %unicode(val.decode('utf8')))
|
|
391
431
|
val = eval(val)
|
|
392
|
-
elif type(val) == np.
|
|
432
|
+
elif type(val) == np.bytes_:
|
|
393
433
|
val = str(val.decode('utf-8-sig'))
|
|
394
434
|
# if it looks like a list, convert it:
|
|
395
435
|
if val.startswith('[') and val.endswith(']'):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" ?>
|
|
2
|
-
<PsychoPy2experiment encoding="utf-8" version="2025.
|
|
2
|
+
<PsychoPy2experiment encoding="utf-8" version="2025.2.0">
|
|
3
3
|
<Settings>
|
|
4
4
|
<Param val="ptb" valType="str" updates="None" name="Audio lib"/>
|
|
5
5
|
<Param val="" valType="str" updates="None" name="Completed URL"/>
|
|
@@ -258,7 +258,7 @@
|
|
|
258
258
|
<Param val="True" valType="bool" updates="constant" name="bold"/>
|
|
259
259
|
<Param val="None" valType="color" updates="constant" name="borderColor"/>
|
|
260
260
|
<Param val="0" valType="num" updates="constant" name="borderWidth"/>
|
|
261
|
-
<Param val="#
|
|
261
|
+
<Param val="# store time taken&#10;timeTaken = t" valType="extendedCode" updates="constant" name="callback"/>
|
|
262
262
|
<Param val="white" valType="color" updates="constant" name="color"/>
|
|
263
263
|
<Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
|
|
264
264
|
<Param val="1" valType="num" updates="constant" name="contrast"/>
|
|
@@ -292,12 +292,12 @@
|
|
|
292
292
|
<CodeComponent name="onlineChanges" plugin="None">
|
|
293
293
|
<Param val="" valType="extendedCode" updates="constant" name="Before Experiment"/>
|
|
294
294
|
<Param val="" valType="extendedCode" updates="constant" name="Before JS Experiment"/>
|
|
295
|
-
<Param val="
|
|
295
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin Experiment"/>
|
|
296
296
|
<Param val="// create a Mouse to listen for drags&#10;mouse = new core.Mouse({"win": psychoJS.window});" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
|
|
297
|
-
<Param val="
|
|
297
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
|
|
298
298
|
<Param val="" valType="extendedCode" updates="constant" name="Begin Routine"/>
|
|
299
299
|
<Param val="JS" valType="str" updates="None" name="Code Type"/>
|
|
300
|
-
<Param val="
|
|
300
|
+
<Param val="" valType="extendedCode" updates="constant" name="Each Frame"/>
|
|
301
301
|
<Param val="// drag each square if clicked on this frame&#10;if (mouse.isPressedIn(whiteSquare)) {&#10; whiteSquare.setPos(mouse.getPos());&#10;}&#10;if (mouse.isPressedIn(pinkSquare)) {&#10; pinkSquare.setPos(mouse.getPos());&#10;}&#10;" valType="extendedCode" updates="constant" name="Each JS Frame"/>
|
|
302
302
|
<Param val="" valType="extendedCode" updates="constant" name="End Experiment"/>
|
|
303
303
|
<Param val="" valType="extendedCode" updates="constant" name="End JS Experiment"/>
|
|
@@ -306,6 +306,23 @@
|
|
|
306
306
|
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
307
307
|
<Param val="onlineChanges" valType="code" updates="None" name="name"/>
|
|
308
308
|
</CodeComponent>
|
|
309
|
+
<CodeComponent name="calculateCorrect" plugin="None">
|
|
310
|
+
<Param val="" valType="extendedCode" updates="constant" name="Before Experiment"/>
|
|
311
|
+
<Param val="" valType="extendedCode" updates="constant" name="Before JS Experiment"/>
|
|
312
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin Experiment"/>
|
|
313
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
|
|
314
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
|
|
315
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin Routine"/>
|
|
316
|
+
<Param val="Both" valType="str" updates="None" name="Code Type"/>
|
|
317
|
+
<Param val="" valType="extendedCode" updates="constant" name="Each Frame"/>
|
|
318
|
+
<Param val="" valType="extendedCode" updates="constant" name="Each JS Frame"/>
|
|
319
|
+
<Param val="" valType="extendedCode" updates="constant" name="End Experiment"/>
|
|
320
|
+
<Param val="" valType="extendedCode" updates="constant" name="End JS Experiment"/>
|
|
321
|
+
<Param val="// make sure correct answers were read as floats&#10;targetPos = {&#10; white: whiteSquarePos.map(parseFloat),&#10; pink: pinkSquarePos.map(parseFloat)&#10;}&#10;// do same as in Python, but with targetPos.___ rather than ___SquarePos&#10;whiteSquareCorr = ((((targetPos.white[0] - 0.1) < whiteSquare.pos[0]) && (whiteSquare.pos[0] < (targetPos.white[0] + 0.1))) && (((targetPos.white[1] - 0.1) < whiteSquare.pos[1]) && (whiteSquare.pos[1] < (targetPos.white[1] + 0.1))));&#10;pinkSquareCorr = ((((targetPos.pink[0] - 0.1) < pinkSquare.pos[0]) && (pinkSquare.pos[0] < (targetPos.pink[0] + 0.1))) && (((targetPos.pink[1] - 0.1) < pinkSquare.pos[1]) && (pinkSquare.pos[1] < (targetPos.pink[1] + 0.1))));&#10;corr = (whiteSquareCorr && pinkSquareCorr);&#10;psychoJS.experiment.addData("whiteSquare.pos", whiteSquare.pos);&#10;psychoJS.experiment.addData("pinkSquare.pos", pinkSquare.pos);&#10;psychoJS.experiment.addData("whiteSquare.corr", whiteSquareCorr);&#10;psychoJS.experiment.addData("pinkSquare.corr", pinkSquareCorr);&#10;" valType="extendedCode" updates="constant" name="End JS Routine"/>
|
|
322
|
+
<Param val="# each square is correct if it's within 0.1 units of target position&#10;whiteSquareCorr = (&#10; whiteSquarePos[0] - 0.1 < whiteSquare.pos[0] < whiteSquarePos[0] + 0.1&#10; and whiteSquarePos[1] - 0.1 < whiteSquare.pos[1] < whiteSquarePos[1] + 0.1&#10;)&#10;pinkSquareCorr = (&#10; pinkSquarePos[0] - 0.1 < pinkSquare.pos[0] < pinkSquarePos[0] + 0.1&#10; and pinkSquarePos[1] - 0.1 < pinkSquare.pos[1] < pinkSquarePos[1] + 0.1&#10;)&#10;# trial is correct if both squares are correct&#10;corr = whiteSquareCorr and pinkSquareCorr&#10;# save positions and correct&#10;thisExp.addData("whiteSquare.pos", whiteSquare.pos)&#10;thisExp.addData("pinkSquare.pos", pinkSquare.pos)&#10;thisExp.addData("whiteSquare.corr", whiteSquareCorr)&#10;thisExp.addData("pinkSquare.corr", pinkSquareCorr)" valType="extendedCode" updates="constant" name="End Routine"/>
|
|
323
|
+
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
324
|
+
<Param val="calculateCorrect" valType="code" updates="None" name="name"/>
|
|
325
|
+
</CodeComponent>
|
|
309
326
|
</Routine>
|
|
310
327
|
<Routine name="feedback_corr">
|
|
311
328
|
<RoutineSettingsComponent name="feedback_corr" plugin="None">
|
|
Binary file
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" ?>
|
|
2
|
-
<PsychoPy2experiment encoding="utf-8" version="2025.
|
|
2
|
+
<PsychoPy2experiment encoding="utf-8" version="2025.2.0">
|
|
3
3
|
<Settings>
|
|
4
|
-
<Param val="use prefs" valType="str" updates="None" name="Audio latency priority"/>
|
|
5
4
|
<Param val="use prefs" valType="str" updates="None" name="Audio lib"/>
|
|
6
5
|
<Param val="" valType="str" updates="None" name="Completed URL"/>
|
|
7
6
|
<Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
|
|
@@ -13,7 +12,6 @@
|
|
|
13
12
|
<Param val="True" valType="bool" updates="None" name="Full-screen window"/>
|
|
14
13
|
<Param val="" valType="str" updates="None" name="HTML path"/>
|
|
15
14
|
<Param val="" valType="str" updates="None" name="Incomplete URL"/>
|
|
16
|
-
<Param val="packaged" valType="str" updates="None" name="JS libs"/>
|
|
17
15
|
<Param val="testMonitor" valType="str" updates="None" name="Monitor"/>
|
|
18
16
|
<Param val="['conditions.xlsx']" valType="list" updates="None" name="Resources"/>
|
|
19
17
|
<Param val="False" valType="bool" updates="None" name="Save csv file"/>
|
|
@@ -63,9 +61,7 @@
|
|
|
63
61
|
<Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
|
|
64
62
|
<Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
|
|
65
63
|
<Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
|
|
66
|
-
<Param val="True" valType="bool" updates="None" name="plCompanionRecordingEnabled"/>
|
|
67
64
|
<Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
|
|
68
|
-
<Param val="True" valType="bool" updates="None" name="plPupilCaptureRecordingEnabled"/>
|
|
69
65
|
<Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
|
|
70
66
|
<Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
|
|
71
67
|
<Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
|
|
@@ -142,17 +138,12 @@
|
|
|
142
138
|
<Param val="" valType="code" updates="None" name="validator"/>
|
|
143
139
|
</TextboxComponent>
|
|
144
140
|
<MicrophoneComponent name="micResp" plugin="None">
|
|
145
|
-
<Param val="
|
|
146
|
-
<Param val="default" valType="str" updates="None" name="device"/>
|
|
147
|
-
<Param val="" valType="str" updates="None" name="deviceLabel"/>
|
|
141
|
+
<Param val="demoMicrophone" valType="device" updates="None" name="deviceLabel"/>
|
|
148
142
|
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
149
143
|
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
150
|
-
<Param val="False" valType="code" updates="None" name="exclusive"/>
|
|
151
|
-
<Param val="24000" valType="num" updates="None" name="maxSize"/>
|
|
152
144
|
<Param val="micResp" valType="code" updates="None" name="name"/>
|
|
153
145
|
<Param val="default" valType="code" updates="None" name="outputType"/>
|
|
154
146
|
<Param val="warn" valType="str" updates="set every repeat" name="policyWhenFull"/>
|
|
155
|
-
<Param val="DVD Audio (48kHz)" valType="num" updates="None" name="sampleRate"/>
|
|
156
147
|
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
157
148
|
<Param val="True" valType="bool" updates="None" name="speakTimes"/>
|
|
158
149
|
<Param val="" valType="code" updates="None" name="startEstim"/>
|
|
@@ -190,7 +181,6 @@
|
|
|
190
181
|
<KeyboardComponent name="ready" plugin="None">
|
|
191
182
|
<Param val="" valType="list" updates="constant" name="allowedKeys"/>
|
|
192
183
|
<Param val="thisTrial.corrAns" valType="str" updates="constant" name="correctAns"/>
|
|
193
|
-
<Param val="" valType="str" updates="None" name="deviceLabel"/>
|
|
194
184
|
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
195
185
|
<Param val="True" valType="bool" updates="constant" name="discard previous"/>
|
|
196
186
|
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" ?>
|
|
2
|
-
<PsychoPy2experiment encoding="utf-8" version="2025.
|
|
2
|
+
<PsychoPy2experiment encoding="utf-8" version="2025.2.0">
|
|
3
3
|
<Settings>
|
|
4
|
-
<Param val="3" valType="str" updates="None" name="Audio latency priority"/>
|
|
5
4
|
<Param val="ptb" valType="str" updates="None" name="Audio lib"/>
|
|
6
5
|
<Param val="" valType="str" updates="None" name="Completed URL"/>
|
|
7
6
|
<Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
|
|
@@ -62,9 +61,7 @@
|
|
|
62
61
|
<Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
|
|
63
62
|
<Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
|
|
64
63
|
<Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
|
|
65
|
-
<Param val="True" valType="bool" updates="None" name="plCompanionRecordingEnabled"/>
|
|
66
64
|
<Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
|
|
67
|
-
<Param val="True" valType="bool" updates="None" name="plPupilCaptureRecordingEnabled"/>
|
|
68
65
|
<Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
|
|
69
66
|
<Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
|
|
70
67
|
<Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
|
|
@@ -101,12 +98,11 @@
|
|
|
101
98
|
<ButtonBoxComponent name="buttonBox" plugin="None">
|
|
102
99
|
<Param val="" valType="list" updates="None" name="allowedButtons"/>
|
|
103
100
|
<Param val="" valType="list" updates="None" name="correctAns"/>
|
|
104
|
-
<Param val="
|
|
105
|
-
<Param val="demoButtonBox" valType="str" updates="None" name="deviceLabel"/>
|
|
101
|
+
<Param val="demoButtonBox" valType="device" updates="None" name="deviceLabel"/>
|
|
106
102
|
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
103
|
+
<Param val="True" valType="bool" updates="constant" name="discardPrevious"/>
|
|
107
104
|
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
108
105
|
<Param val="False" valType="bool" updates="None" name="forceEndRoutine"/>
|
|
109
|
-
<Param val="'q', 'w', 'e', 'r', 't'" valType="list" updates="None" name="kbButtonAliases"/>
|
|
110
106
|
<Param val="buttonBox" valType="code" updates="None" name="name"/>
|
|
111
107
|
<Param val="True" valType="code" updates="None" name="registerOn"/>
|
|
112
108
|
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
@@ -351,7 +347,6 @@
|
|
|
351
347
|
<KeyboardComponent name="ender" plugin="None">
|
|
352
348
|
<Param val="'return'" valType="list" updates="constant" name="allowedKeys"/>
|
|
353
349
|
<Param val="" valType="str" updates="constant" name="correctAns"/>
|
|
354
|
-
<Param val="" valType="str" updates="None" name="deviceLabel"/>
|
|
355
350
|
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
356
351
|
<Param val="True" valType="bool" updates="constant" name="discard previous"/>
|
|
357
352
|
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<PsychoPy2experiment encoding="utf-8" version="2025.2.0">
|
|
3
|
+
<Settings>
|
|
4
|
+
<Param val="ptb" valType="str" updates="None" name="Audio lib"/>
|
|
5
|
+
<Param val="" valType="str" updates="None" name="Completed URL"/>
|
|
6
|
+
<Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
|
|
7
|
+
<Param val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code" updates="None" name="Data filename"/>
|
|
8
|
+
<Param val="True" valType="bool" updates="None" name="Enable Escape"/>
|
|
9
|
+
<Param val="Thank you for your patience." valType="str" updates="None" name="End Message"/>
|
|
10
|
+
<Param val="{'participant':'f"{randint(0, 999999):06.0f}"', 'session':'"001"'}" valType="code" updates="None" name="Experiment info"/>
|
|
11
|
+
<Param val="True" valType="bool" updates="None" name="Force stereo"/>
|
|
12
|
+
<Param val="True" valType="bool" updates="None" name="Full-screen window"/>
|
|
13
|
+
<Param val="" valType="str" updates="None" name="HTML path"/>
|
|
14
|
+
<Param val="" valType="str" updates="None" name="Incomplete URL"/>
|
|
15
|
+
<Param val="testMonitor" valType="str" updates="None" name="Monitor"/>
|
|
16
|
+
<Param val="[]" valType="list" updates="None" name="Resources"/>
|
|
17
|
+
<Param val="False" valType="bool" updates="None" name="Save csv file"/>
|
|
18
|
+
<Param val="False" valType="bool" updates="None" name="Save excel file"/>
|
|
19
|
+
<Param val="False" valType="bool" updates="None" name="Save hdf5 file"/>
|
|
20
|
+
<Param val="True" valType="bool" updates="None" name="Save log file"/>
|
|
21
|
+
<Param val="True" valType="bool" updates="None" name="Save psydat file"/>
|
|
22
|
+
<Param val="True" valType="bool" updates="None" name="Save wide csv file"/>
|
|
23
|
+
<Param val="1" valType="num" updates="None" name="Screen"/>
|
|
24
|
+
<Param val="True" valType="bool" updates="None" name="Show info dlg"/>
|
|
25
|
+
<Param val="False" valType="bool" updates="None" name="Show mouse"/>
|
|
26
|
+
<Param val="height" valType="str" updates="None" name="Units"/>
|
|
27
|
+
<Param val="" valType="str" updates="None" name="Use version"/>
|
|
28
|
+
<Param val="(1024, 768)" valType="list" updates="None" name="Window size (pixels)"/>
|
|
29
|
+
<Param val="none" valType="str" updates="None" name="backgroundFit"/>
|
|
30
|
+
<Param val="" valType="str" updates="None" name="backgroundImg"/>
|
|
31
|
+
<Param val="avg" valType="str" updates="None" name="blendMode"/>
|
|
32
|
+
<Param val="float" valType="str" updates="None" name="clockFormat"/>
|
|
33
|
+
<Param val="{'thisRow.t': 'priority.CRITICAL', 'expName': 'priority.LOW'}" valType="dict" updates="None" name="colPriority"/>
|
|
34
|
+
<Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
|
|
35
|
+
<Param val="rgb" valType="str" updates="None" name="colorSpace"/>
|
|
36
|
+
<Param val="warning" valType="code" updates="None" name="consoleLoggingLevel"/>
|
|
37
|
+
<Param val="default" valType="str" updates="None" name="ecSampleRate"/>
|
|
38
|
+
<Param val="100.1.1.1" valType="str" updates="None" name="elAddress"/>
|
|
39
|
+
<Param val="FILTER_LEVEL_2" valType="str" updates="None" name="elDataFiltering"/>
|
|
40
|
+
<Param val="FILTER_LEVEL_OFF" valType="str" updates="None" name="elLiveFiltering"/>
|
|
41
|
+
<Param val="EYELINK 1000 DESKTOP" valType="str" updates="None" name="elModel"/>
|
|
42
|
+
<Param val="ELLIPSE_FIT" valType="str" updates="None" name="elPupilAlgorithm"/>
|
|
43
|
+
<Param val="PUPIL_AREA" valType="str" updates="None" name="elPupilMeasure"/>
|
|
44
|
+
<Param val="1000" valType="num" updates="None" name="elSampleRate"/>
|
|
45
|
+
<Param val="False" valType="bool" updates="None" name="elSimMode"/>
|
|
46
|
+
<Param val="RIGHT_EYE" valType="str" updates="None" name="elTrackEyes"/>
|
|
47
|
+
<Param val="PUPIL_CR_TRACKING" valType="str" updates="None" name="elTrackingMode"/>
|
|
48
|
+
<Param val="movie" valType="str" updates="None" name="expName"/>
|
|
49
|
+
<Param val="" valType="str" updates="None" name="expVersion"/>
|
|
50
|
+
<Param val="on Sync" valType="str" updates="None" name="exportHTML"/>
|
|
51
|
+
<Param val="None" valType="str" updates="None" name="eyetracker"/>
|
|
52
|
+
<Param val="" valType="code" updates="None" name="frameRate"/>
|
|
53
|
+
<Param val="Attempting to measure frame rate of screen, please wait..." valType="str" updates="None" name="frameRateMsg"/>
|
|
54
|
+
<Param val="127.0.0.1" valType="str" updates="None" name="gpAddress"/>
|
|
55
|
+
<Param val="4242" valType="num" updates="None" name="gpPort"/>
|
|
56
|
+
<Param val="PsychToolbox" valType="str" updates="None" name="keyboardBackend"/>
|
|
57
|
+
<Param val="info" valType="code" updates="None" name="logging level"/>
|
|
58
|
+
<Param val="True" valType="bool" updates="None" name="measureFrameRate"/>
|
|
59
|
+
<Param val="MIDDLE_BUTTON" valType="list" updates="None" name="mgBlink"/>
|
|
60
|
+
<Param val="CONTINUOUS" valType="str" updates="None" name="mgMove"/>
|
|
61
|
+
<Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
|
|
62
|
+
<Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
|
|
63
|
+
<Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
|
|
64
|
+
<Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
|
|
65
|
+
<Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
|
|
66
|
+
<Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
|
|
67
|
+
<Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
|
|
68
|
+
<Param val="1000" valType="num" updates="None" name="plPupilRemoteTimeoutMs"/>
|
|
69
|
+
<Param val="False" valType="bool" updates="None" name="plPupillometryOnly"/>
|
|
70
|
+
<Param val="psychopy_iohub_surface" valType="str" updates="None" name="plSurfaceName"/>
|
|
71
|
+
<Param val="0" valType="code" updates="None" name="runMode"/>
|
|
72
|
+
<Param val="False" valType="bool" updates="None" name="rush"/>
|
|
73
|
+
<Param val="time" valType="str" updates="None" name="sortColumns"/>
|
|
74
|
+
<Param val="" valType="str" updates="None" name="tbLicenseFile"/>
|
|
75
|
+
<Param val="" valType="str" updates="None" name="tbModel"/>
|
|
76
|
+
<Param val="60" valType="num" updates="None" name="tbSampleRate"/>
|
|
77
|
+
<Param val="" valType="str" updates="None" name="tbSerialNo"/>
|
|
78
|
+
<Param val="pyglet" valType="str" updates="None" name="winBackend"/>
|
|
79
|
+
</Settings>
|
|
80
|
+
<Routines>
|
|
81
|
+
<Routine name="movie_playback">
|
|
82
|
+
<RoutineSettingsComponent name="movie_playback" plugin="None">
|
|
83
|
+
<Param val="none" valType="str" updates="None" name="backgroundFit"/>
|
|
84
|
+
<Param val="" valType="str" updates="None" name="backgroundImg"/>
|
|
85
|
+
<Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
|
|
86
|
+
<Param val="rgb" valType="str" updates="None" name="colorSpace"/>
|
|
87
|
+
<Param val="Contains a Movie Component and controls for its playback." valType="str" updates="constant" name="desc"/>
|
|
88
|
+
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
89
|
+
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
90
|
+
<Param val="False" valType="code" updates="None" name="forceNonSlip"/>
|
|
91
|
+
<Param val="movie_playback" valType="code" updates="None" name="name"/>
|
|
92
|
+
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
93
|
+
<Param val="" valType="code" updates="constant" name="skipIf"/>
|
|
94
|
+
<Param val="duration (s)" valType="str" updates="None" name="stopType"/>
|
|
95
|
+
<Param val="" valType="code" updates="constant" name="stopVal"/>
|
|
96
|
+
<Param val="False" valType="bool" updates="None" name="useWindowParams"/>
|
|
97
|
+
</RoutineSettingsComponent>
|
|
98
|
+
<MovieComponent name="movie" plugin="None">
|
|
99
|
+
<Param val="False" valType="bool" updates="None" name="No audio"/>
|
|
100
|
+
<Param val="center" valType="str" updates="constant" name="anchor"/>
|
|
101
|
+
<Param val="ffpyplayer" valType="str" updates="None" name="backend"/>
|
|
102
|
+
<Param val="1" valType="num" updates="constant" name="contrast"/>
|
|
103
|
+
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
104
|
+
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
105
|
+
<Param val="True" valType="bool" updates="constant" name="forceEndRoutine"/>
|
|
106
|
+
<Param val="False" valType="bool" updates="None" name="loop"/>
|
|
107
|
+
<Param val="default.mp4" valType="file" updates="constant" name="movie"/>
|
|
108
|
+
<Param val="movie" valType="code" updates="None" name="name"/>
|
|
109
|
+
<Param val="" valType="num" updates="constant" name="opacity"/>
|
|
110
|
+
<Param val="0" valType="num" updates="constant" name="ori"/>
|
|
111
|
+
<Param val="(0, 0)" valType="list" updates="constant" name="pos"/>
|
|
112
|
+
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
113
|
+
<Param val="(0.5, 0.5)" valType="list" updates="constant" name="size"/>
|
|
114
|
+
<Param val="" valType="code" updates="None" name="startEstim"/>
|
|
115
|
+
<Param val="time (s)" valType="str" updates="None" name="startType"/>
|
|
116
|
+
<Param val="0.0" valType="code" updates="None" name="startVal"/>
|
|
117
|
+
<Param val="duration (s)" valType="str" updates="None" name="stopType"/>
|
|
118
|
+
<Param val="" valType="code" updates="constant" name="stopVal"/>
|
|
119
|
+
<Param val="True" valType="bool" updates="constant" name="stopWithRoutine"/>
|
|
120
|
+
<Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
|
|
121
|
+
<Param val="from exp settings" valType="str" updates="None" name="units"/>
|
|
122
|
+
<Param val="" valType="code" updates="None" name="validator"/>
|
|
123
|
+
<Param val="1" valType="num" updates="None" name="volume"/>
|
|
124
|
+
</MovieComponent>
|
|
125
|
+
<SliderComponent name="navbar" plugin="None">
|
|
126
|
+
<Param val="darkgrey" valType="color" updates="constant" name="borderColor"/>
|
|
127
|
+
<Param val="" valType="color" updates="constant" name="color"/>
|
|
128
|
+
<Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
|
|
129
|
+
<Param val="1" valType="num" updates="constant" name="contrast"/>
|
|
130
|
+
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
131
|
+
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
132
|
+
<Param val="white" valType="color" updates="constant" name="fillColor"/>
|
|
133
|
+
<Param val="False" valType="bool" updates="constant" name="flip"/>
|
|
134
|
+
<Param val="Noto Sans" valType="str" updates="constant" name="font"/>
|
|
135
|
+
<Param val="False" valType="bool" updates="constant" name="forceEndRoutine"/>
|
|
136
|
+
<Param val="0" valType="num" updates="constant" name="granularity"/>
|
|
137
|
+
<Param val="0" valType="code" updates="None" name="initVal"/>
|
|
138
|
+
<Param val=""", """ valType="list" updates="constant" name="labels"/>
|
|
139
|
+
<Param val="0.05" valType="num" updates="constant" name="letterHeight"/>
|
|
140
|
+
<Param val="navbar" valType="code" updates="None" name="name"/>
|
|
141
|
+
<Param val="" valType="num" updates="constant" name="opacity"/>
|
|
142
|
+
<Param val="0" valType="num" updates="constant" name="ori"/>
|
|
143
|
+
<Param val="(0.1, -0.4)" valType="list" updates="constant" name="pos"/>
|
|
144
|
+
<Param val="False" valType="bool" updates="constant" name="readOnly"/>
|
|
145
|
+
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
146
|
+
<Param val="(0.9, 0.1)" valType="list" updates="constant" name="size"/>
|
|
147
|
+
<Param val="" valType="code" updates="None" name="startEstim"/>
|
|
148
|
+
<Param val="time (s)" valType="str" updates="None" name="startType"/>
|
|
149
|
+
<Param val="0.0" valType="code" updates="None" name="startVal"/>
|
|
150
|
+
<Param val="condition" valType="str" updates="None" name="stopType"/>
|
|
151
|
+
<Param val="" valType="code" updates="constant" name="stopVal"/>
|
|
152
|
+
<Param val="False" valType="bool" updates="constant" name="storeHistory"/>
|
|
153
|
+
<Param val="True" valType="bool" updates="constant" name="storeRating"/>
|
|
154
|
+
<Param val="True" valType="bool" updates="constant" name="storeRatingTime"/>
|
|
155
|
+
<Param val="[]" valType="list" updates="constant" name="styleTweaks"/>
|
|
156
|
+
<Param val="slider" valType="str" updates="constant" name="styles"/>
|
|
157
|
+
<Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
|
|
158
|
+
<Param val="(0, 1)" valType="list" updates="constant" name="ticks"/>
|
|
159
|
+
<Param val="from exp settings" valType="str" updates="None" name="units"/>
|
|
160
|
+
<Param val="" valType="code" updates="None" name="validator"/>
|
|
161
|
+
</SliderComponent>
|
|
162
|
+
<ButtonComponent name="button" plugin="None">
|
|
163
|
+
<Param val="center" valType="str" updates="constant" name="anchor"/>
|
|
164
|
+
<Param val="True" valType="bool" updates="constant" name="bold"/>
|
|
165
|
+
<Param val="" valType="color" updates="constant" name="borderColor"/>
|
|
166
|
+
<Param val="0" valType="num" updates="constant" name="borderWidth"/>
|
|
167
|
+
<Param val="if movie.isPlaying:&#10; movie.pause()&#10;else:&#10; movie.play()" valType="extendedCode" updates="constant" name="callback"/>
|
|
168
|
+
<Param val="white" valType="color" updates="constant" name="color"/>
|
|
169
|
+
<Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
|
|
170
|
+
<Param val="1" valType="num" updates="constant" name="contrast"/>
|
|
171
|
+
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
172
|
+
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
173
|
+
<Param val="darkgrey" valType="color" updates="constant" name="fillColor"/>
|
|
174
|
+
<Param val="JetBrains Mono" valType="str" updates="constant" name="font"/>
|
|
175
|
+
<Param val="False" valType="bool" updates="constant" name="forceEndRoutine"/>
|
|
176
|
+
<Param val="False" valType="bool" updates="constant" name="italic"/>
|
|
177
|
+
<Param val="0.04" valType="num" updates="constant" name="letterHeight"/>
|
|
178
|
+
<Param val="button" valType="code" updates="None" name="name"/>
|
|
179
|
+
<Param val="True" valType="bool" updates="constant" name="oncePerClick"/>
|
|
180
|
+
<Param val="" valType="num" updates="constant" name="opacity"/>
|
|
181
|
+
<Param val="0" valType="num" updates="constant" name="ori"/>
|
|
182
|
+
<Param val="" valType="num" updates="constant" name="padding"/>
|
|
183
|
+
<Param val="(-0.45, -0.4)" valType="list" updates="constant" name="pos"/>
|
|
184
|
+
<Param val="every click" valType="str" updates="None" name="save"/>
|
|
185
|
+
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
186
|
+
<Param val="(0.1, 0.1)" valType="list" updates="constant" name="size"/>
|
|
187
|
+
<Param val="" valType="code" updates="None" name="startEstim"/>
|
|
188
|
+
<Param val="time (s)" valType="str" updates="None" name="startType"/>
|
|
189
|
+
<Param val="0" valType="code" updates="None" name="startVal"/>
|
|
190
|
+
<Param val="duration (s)" valType="str" updates="None" name="stopType"/>
|
|
191
|
+
<Param val="" valType="code" updates="constant" name="stopVal"/>
|
|
192
|
+
<Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
|
|
193
|
+
<Param val="$"||" if movie.isPlaying else "▶"" valType="str" updates="set every frame" name="text"/>
|
|
194
|
+
<Param val="button onset" valType="str" updates="constant" name="timeRelativeTo"/>
|
|
195
|
+
<Param val="from exp settings" valType="str" updates="None" name="units"/>
|
|
196
|
+
<Param val="" valType="code" updates="None" name="validator"/>
|
|
197
|
+
</ButtonComponent>
|
|
198
|
+
<CodeComponent name="playbackCode" plugin="None">
|
|
199
|
+
<Param val="" valType="extendedCode" updates="constant" name="Before Experiment"/>
|
|
200
|
+
<Param val="" valType="extendedCode" updates="constant" name="Before JS Experiment"/>
|
|
201
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin Experiment"/>
|
|
202
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
|
|
203
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
|
|
204
|
+
<Param val="" valType="extendedCode" updates="constant" name="Begin Routine"/>
|
|
205
|
+
<Param val="Auto->JS" valType="str" updates="None" name="Code Type"/>
|
|
206
|
+
<Param val="if navbar._dragging:&#10; # pause the movie while the navbar is being dragged&#10; movie.pause()&#10;elif navbar.rating is not None:&#10; # if slider has been set, navigate to that point in the video then resume&#10; movie.seek(&#10; navbar.rating * movie.duration&#10; )&#10; movie.play()&#10; # reset slider&#10; navbar.reset()&#10;else:&#10; # update slider with movie timestamp each frame&#10; navbar.markerPos = movie.pts / max(movie.duration, 0.0001)" valType="extendedCode" updates="constant" name="Each Frame"/>
|
|
207
|
+
<Param val="if (navbar._dragging) {&#10; movie.pause();&#10;} else {&#10; if ((navbar.rating !== null)) {&#10; movie.seek((navbar.rating * movie.duration));&#10; movie.play();&#10; navbar.reset();&#10; } else {&#10; navbar.markerPos = (movie.pts / Math.max(movie.duration, 0.0001));&#10; }&#10;}&#10;" valType="extendedCode" updates="constant" name="Each JS Frame"/>
|
|
208
|
+
<Param val="" valType="extendedCode" updates="constant" name="End Experiment"/>
|
|
209
|
+
<Param val="" valType="extendedCode" updates="constant" name="End JS Experiment"/>
|
|
210
|
+
<Param val="" valType="extendedCode" updates="constant" name="End JS Routine"/>
|
|
211
|
+
<Param val="" valType="extendedCode" updates="constant" name="End Routine"/>
|
|
212
|
+
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
213
|
+
<Param val="playbackCode" valType="code" updates="None" name="name"/>
|
|
214
|
+
</CodeComponent>
|
|
215
|
+
</Routine>
|
|
216
|
+
</Routines>
|
|
217
|
+
<Flow>
|
|
218
|
+
<Routine name="movie_playback"/>
|
|
219
|
+
</Flow>
|
|
220
|
+
</PsychoPy2experiment>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" ?>
|
|
2
|
-
<PsychoPy2experiment encoding="utf-8" version="2025.
|
|
2
|
+
<PsychoPy2experiment encoding="utf-8" version="2025.2.0">
|
|
3
3
|
<Settings>
|
|
4
4
|
<Param val="ptb" valType="str" updates="None" name="Audio lib"/>
|
|
5
5
|
<Param val="" valType="str" updates="None" name="Completed URL"/>
|
|
@@ -169,7 +169,6 @@
|
|
|
169
169
|
</Routine>
|
|
170
170
|
<VisualValidatorRoutine name="visualVal">
|
|
171
171
|
<Param name="channel" updates="None" val="0" valType="code"/>
|
|
172
|
-
<Param name="deviceBackend" updates="None" val="screenbuffer" valType="code"/>
|
|
173
172
|
<Param name="deviceLabel" updates="None" val="demoLightSensor" valType="str"/>
|
|
174
173
|
<Param name="disabled" updates="None" val="False" valType="bool"/>
|
|
175
174
|
<Param name="findSensor" updates="None" val="True" valType="code"/>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" ?>
|
|
2
|
-
<PsychoPy2experiment encoding="utf-8" version="2025.
|
|
2
|
+
<PsychoPy2experiment encoding="utf-8" version="2025.2.0">
|
|
3
3
|
<Settings>
|
|
4
|
-
<Param val="use prefs" valType="str" updates="None" name="Audio latency priority"/>
|
|
5
4
|
<Param val="use prefs" valType="str" updates="None" name="Audio lib"/>
|
|
6
5
|
<Param val="" valType="str" updates="None" name="Completed URL"/>
|
|
7
6
|
<Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
|
|
@@ -63,7 +62,6 @@
|
|
|
63
62
|
<Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
|
|
64
63
|
<Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
|
|
65
64
|
<Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
|
|
66
|
-
<Param val="True" valType="bool" updates="None" name="plPupilCaptureRecordingEnabled"/>
|
|
67
65
|
<Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
|
|
68
66
|
<Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
|
|
69
67
|
<Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
|
|
@@ -98,22 +96,11 @@
|
|
|
98
96
|
<Param val="False" valType="bool" updates="None" name="useWindowParams"/>
|
|
99
97
|
</RoutineSettingsComponent>
|
|
100
98
|
<CameraComponent name="cam" plugin="None">
|
|
101
|
-
<Param val="
|
|
102
|
-
<Param val="default" valType="str" updates="None" name="device"/>
|
|
103
|
-
<Param val="" valType="str" updates="None" name="deviceLabel"/>
|
|
104
|
-
<Param val="" valType="code" updates="None" name="deviceManual"/>
|
|
99
|
+
<Param val="demoCamera" valType="device" updates="None" name="deviceLabel"/>
|
|
105
100
|
<Param val="False" valType="bool" updates="None" name="disabled"/>
|
|
106
101
|
<Param val="" valType="code" updates="None" name="durationEstim"/>
|
|
107
|
-
<Param val="" valType="
|
|
108
|
-
<Param val="" valType="int" updates="None" name="frameRateManual"/>
|
|
109
|
-
<Param val="Default" valType="str" updates="None" name="mic"/>
|
|
110
|
-
<Param val="auto" valType="str" updates="None" name="micChannels"/>
|
|
111
|
-
<Param val="" valType="str" updates="None" name="micDeviceLabel"/>
|
|
112
|
-
<Param val="24000" valType="num" updates="None" name="micMaxRecSize"/>
|
|
113
|
-
<Param val="DVD Audio (48kHz)" valType="num" updates="None" name="micSampleRate"/>
|
|
102
|
+
<Param val="demoMicrophone" valType="str" updates="None" name="micDeviceLabel"/>
|
|
114
103
|
<Param val="cam" valType="code" updates="None" name="name"/>
|
|
115
|
-
<Param val="" valType="list" updates="None" name="resolution"/>
|
|
116
|
-
<Param val="" valType="list" updates="None" name="resolutionManual"/>
|
|
117
104
|
<Param val="False" valType="bool" updates="None" name="saveFile"/>
|
|
118
105
|
<Param val="True" valType="bool" updates="None" name="saveStartStop"/>
|
|
119
106
|
<Param val="" valType="code" updates="None" name="startEstim"/>
|