psychopy 2024.2.5__py3-none-any.whl → 2025.1.0__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.

Files changed (860) hide show
  1. psychopy/CHANGELOG.txt +4 -4
  2. psychopy/GIT_SHA +1 -1
  3. psychopy/LICENSE.txt +1 -1
  4. psychopy/VERSION +1 -1
  5. psychopy/__init__.py +10 -7
  6. psychopy/alerts/__init__.py +1 -1
  7. psychopy/alerts/_alerts.py +53 -17
  8. psychopy/alerts/_errorHandler.py +3 -4
  9. psychopy/alerts/alertsCatalogue/3210.yaml +27 -0
  10. psychopy/alerts/alertsCatalogue/3610.yaml +19 -0
  11. psychopy/alerts/alertsCatalogue/4130.yaml +19 -0
  12. psychopy/alerts/alertsCatalogue/alertCategories.yaml +8 -1
  13. psychopy/alerts/alertsCatalogue/alertmsg.py +1 -1
  14. psychopy/alerts/alerttools.py +0 -16
  15. psychopy/app/Resources/betasplash.png +0 -0
  16. psychopy/app/Resources/betasplash@2x.png +0 -0
  17. psychopy/app/Resources/classic/case.png +0 -0
  18. psychopy/app/Resources/classic/case@2x.png +0 -0
  19. psychopy/app/Resources/classic/fileaudio.png +0 -0
  20. psychopy/app/Resources/classic/fileaudio@2x.png +0 -0
  21. psychopy/app/Resources/classic/filecss.png +0 -0
  22. psychopy/app/Resources/classic/filecss@2x.png +0 -0
  23. psychopy/app/Resources/classic/filecsv.png +0 -0
  24. psychopy/app/Resources/classic/filecsv@2x.png +0 -0
  25. psychopy/app/Resources/classic/filedesign.png +0 -0
  26. psychopy/app/Resources/classic/filedesign@2x.png +0 -0
  27. psychopy/app/Resources/classic/filefont.png +0 -0
  28. psychopy/app/Resources/classic/filefont@2x.png +0 -0
  29. psychopy/app/Resources/classic/filegit.png +0 -0
  30. psychopy/app/Resources/classic/filegit@2x.png +0 -0
  31. psychopy/app/Resources/classic/filehtml.png +0 -0
  32. psychopy/app/Resources/classic/filehtml@2x.png +0 -0
  33. psychopy/app/Resources/classic/fileimage.png +0 -0
  34. psychopy/app/Resources/classic/fileimage@2x.png +0 -0
  35. psychopy/app/Resources/classic/fileinfo.png +0 -0
  36. psychopy/app/Resources/classic/fileinfo@2x.png +0 -0
  37. psychopy/app/Resources/classic/filejs.png +0 -0
  38. psychopy/app/Resources/classic/filejs@2x.png +0 -0
  39. psychopy/app/Resources/classic/filejson.png +0 -0
  40. psychopy/app/Resources/classic/filejson@2x.png +0 -0
  41. psychopy/app/Resources/classic/filepkg.png +0 -0
  42. psychopy/app/Resources/classic/filepkg@2x.png +0 -0
  43. psychopy/app/Resources/classic/filepsyexp.png +0 -0
  44. psychopy/app/Resources/classic/filepsyexp@2x.png +0 -0
  45. psychopy/app/Resources/classic/filepy.png +0 -0
  46. psychopy/app/Resources/classic/filepy@2x.png +0 -0
  47. psychopy/app/Resources/classic/filetxt.png +0 -0
  48. psychopy/app/Resources/classic/filetxt@2x.png +0 -0
  49. psychopy/app/Resources/classic/fileunknown.png +0 -0
  50. psychopy/app/Resources/classic/fileunknown@2x.png +0 -0
  51. psychopy/app/Resources/classic/filevideo.png +0 -0
  52. psychopy/app/Resources/classic/filevideo@2x.png +0 -0
  53. psychopy/app/Resources/classic/find.png +0 -0
  54. psychopy/app/Resources/classic/find@2x.png +0 -0
  55. psychopy/app/Resources/classic/loop.png +0 -0
  56. psychopy/app/Resources/classic/loop@2x.png +0 -0
  57. psychopy/app/Resources/classic/regex.png +0 -0
  58. psychopy/app/Resources/classic/regex@2x.png +0 -0
  59. psychopy/app/Resources/dark/case.png +0 -0
  60. psychopy/app/Resources/dark/case@2x.png +0 -0
  61. psychopy/app/Resources/dark/fileaudio.png +0 -0
  62. psychopy/app/Resources/dark/fileaudio@2x.png +0 -0
  63. psychopy/app/Resources/dark/filecss.png +0 -0
  64. psychopy/app/Resources/dark/filecss@2x.png +0 -0
  65. psychopy/app/Resources/dark/filecsv.png +0 -0
  66. psychopy/app/Resources/dark/filecsv@2x.png +0 -0
  67. psychopy/app/Resources/dark/filedesign.png +0 -0
  68. psychopy/app/Resources/dark/filedesign@2x.png +0 -0
  69. psychopy/app/Resources/dark/filefont.png +0 -0
  70. psychopy/app/Resources/dark/filefont@2x.png +0 -0
  71. psychopy/app/Resources/dark/filegit.png +0 -0
  72. psychopy/app/Resources/dark/filegit@2x.png +0 -0
  73. psychopy/app/Resources/dark/filehtml.png +0 -0
  74. psychopy/app/Resources/dark/filehtml@2x.png +0 -0
  75. psychopy/app/Resources/dark/fileimage.png +0 -0
  76. psychopy/app/Resources/dark/fileimage@2x.png +0 -0
  77. psychopy/app/Resources/dark/fileinfo.png +0 -0
  78. psychopy/app/Resources/dark/fileinfo@2x.png +0 -0
  79. psychopy/app/Resources/dark/filejs.png +0 -0
  80. psychopy/app/Resources/dark/filejs@2x.png +0 -0
  81. psychopy/app/Resources/dark/filejson.png +0 -0
  82. psychopy/app/Resources/dark/filejson@2x.png +0 -0
  83. psychopy/app/Resources/dark/filepkg.png +0 -0
  84. psychopy/app/Resources/dark/filepkg@2x.png +0 -0
  85. psychopy/app/Resources/dark/filepsyexp.png +0 -0
  86. psychopy/app/Resources/dark/filepsyexp@2x.png +0 -0
  87. psychopy/app/Resources/dark/filepy.png +0 -0
  88. psychopy/app/Resources/dark/filepy@2x.png +0 -0
  89. psychopy/app/Resources/dark/filetxt.png +0 -0
  90. psychopy/app/Resources/dark/filetxt@2x.png +0 -0
  91. psychopy/app/Resources/dark/fileunknown.png +0 -0
  92. psychopy/app/Resources/dark/fileunknown@2x.png +0 -0
  93. psychopy/app/Resources/dark/filevideo.png +0 -0
  94. psychopy/app/Resources/dark/filevideo@2x.png +0 -0
  95. psychopy/app/Resources/dark/find.png +0 -0
  96. psychopy/app/Resources/dark/find@2x.png +0 -0
  97. psychopy/app/Resources/dark/loop.png +0 -0
  98. psychopy/app/Resources/dark/loop@2x.png +0 -0
  99. psychopy/app/Resources/dark/regex.png +0 -0
  100. psychopy/app/Resources/dark/regex@2x.png +0 -0
  101. psychopy/app/Resources/light/case.png +0 -0
  102. psychopy/app/Resources/light/case@2x.png +0 -0
  103. psychopy/app/Resources/light/fileaudio.png +0 -0
  104. psychopy/app/Resources/light/fileaudio@2x.png +0 -0
  105. psychopy/app/Resources/light/filecss.png +0 -0
  106. psychopy/app/Resources/light/filecss@2x.png +0 -0
  107. psychopy/app/Resources/light/filecsv.png +0 -0
  108. psychopy/app/Resources/light/filecsv@2x.png +0 -0
  109. psychopy/app/Resources/light/filedesign.png +0 -0
  110. psychopy/app/Resources/light/filedesign@2x.png +0 -0
  111. psychopy/app/Resources/light/filefont.png +0 -0
  112. psychopy/app/Resources/light/filefont@2x.png +0 -0
  113. psychopy/app/Resources/light/filegit.png +0 -0
  114. psychopy/app/Resources/light/filegit@2x.png +0 -0
  115. psychopy/app/Resources/light/filehtml.png +0 -0
  116. psychopy/app/Resources/light/filehtml@2x.png +0 -0
  117. psychopy/app/Resources/light/fileimage.png +0 -0
  118. psychopy/app/Resources/light/fileimage@2x.png +0 -0
  119. psychopy/app/Resources/light/fileinfo.png +0 -0
  120. psychopy/app/Resources/light/fileinfo@2x.png +0 -0
  121. psychopy/app/Resources/light/filejs.png +0 -0
  122. psychopy/app/Resources/light/filejs@2x.png +0 -0
  123. psychopy/app/Resources/light/filejson.png +0 -0
  124. psychopy/app/Resources/light/filejson@2x.png +0 -0
  125. psychopy/app/Resources/light/filepkg.png +0 -0
  126. psychopy/app/Resources/light/filepkg@2x.png +0 -0
  127. psychopy/app/Resources/light/filepsyexp.png +0 -0
  128. psychopy/app/Resources/light/filepsyexp@2x.png +0 -0
  129. psychopy/app/Resources/light/filepy.png +0 -0
  130. psychopy/app/Resources/light/filepy@2x.png +0 -0
  131. psychopy/app/Resources/light/filetxt.png +0 -0
  132. psychopy/app/Resources/light/filetxt@2x.png +0 -0
  133. psychopy/app/Resources/light/fileunknown.png +0 -0
  134. psychopy/app/Resources/light/fileunknown@2x.png +0 -0
  135. psychopy/app/Resources/light/filevideo.png +0 -0
  136. psychopy/app/Resources/light/filevideo@2x.png +0 -0
  137. psychopy/app/Resources/light/find.png +0 -0
  138. psychopy/app/Resources/light/find@2x.png +0 -0
  139. psychopy/app/Resources/light/loop.png +0 -0
  140. psychopy/app/Resources/light/loop@2x.png +0 -0
  141. psychopy/app/Resources/light/regex.png +0 -0
  142. psychopy/app/Resources/light/regex@2x.png +0 -0
  143. psychopy/app/Resources/routine_templates/Basic.psyexp +0 -1
  144. psychopy/app/Resources/routine_templates/Misc.psyexp +0 -1
  145. psychopy/app/Resources/routine_templates/Online.psyexp +0 -2
  146. psychopy/app/Resources/routine_templates/Trials.psyexp +0 -1
  147. psychopy/app/Resources/splash.png +0 -0
  148. psychopy/app/Resources/splash@2x.png +0 -0
  149. psychopy/app/__init__.py +49 -8
  150. psychopy/app/__main__.py +3 -0
  151. psychopy/app/_psychopyApp.py +134 -125
  152. psychopy/app/builder/builder.py +42 -22
  153. psychopy/app/builder/dialogs/__init__.py +44 -11
  154. psychopy/app/builder/dialogs/dlgsCode.py +1 -1
  155. psychopy/app/builder/dialogs/dlgsConditions.py +1 -1
  156. psychopy/app/builder/dialogs/findDlg.py +106 -20
  157. psychopy/app/builder/dialogs/paramCtrls.py +42 -1
  158. psychopy/app/builder/validators.py +1 -1
  159. psychopy/app/coder/codeEditorBase.py +8 -8
  160. psychopy/app/coder/coder.py +32 -29
  161. psychopy/app/coder/fileBrowser.py +68 -22
  162. psychopy/app/coder/folding.py +1 -1
  163. psychopy/app/coder/psychoParser.py +1 -1
  164. psychopy/app/coder/repl.py +1 -1
  165. psychopy/app/coder/sourceTree.py +1 -1
  166. psychopy/app/connections/__init__.py +1 -1
  167. psychopy/app/connections/news.py +1 -1
  168. psychopy/app/connections/sendusage.py +1 -1
  169. psychopy/app/connections/updates.py +1 -1
  170. psychopy/app/console.py +1 -1
  171. psychopy/app/errorDlg.py +1 -1
  172. psychopy/app/frametracker.py +1 -1
  173. psychopy/app/idle.py +1 -1
  174. psychopy/app/jobs.py +5 -2
  175. psychopy/app/linuxconfig/__init__.py +1 -1
  176. psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
  177. psychopy/app/locale/ar_001/LC_MESSAGE/messages.po +4 -4
  178. psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
  179. psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
  180. psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
  181. psychopy/app/locale/de_DE/LC_MESSAGE/messages.po +3 -3
  182. psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
  183. psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
  184. psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
  185. psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo +0 -0
  186. psychopy/app/locale/es_CO/LC_MESSAGE/messages.po +4 -4
  187. psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
  188. psychopy/app/locale/es_ES/LC_MESSAGE/messages.po +4 -4
  189. psychopy/app/locale/es_US/LC_MESSAGE/messages.mo +0 -0
  190. psychopy/app/locale/es_US/LC_MESSAGE/messages.po +4 -4
  191. psychopy/app/locale/et_EE/LC_MESSAGE/messages.mo +0 -0
  192. psychopy/app/locale/et_EE/LC_MESSAGE/messages.po +2 -2
  193. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
  194. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.po +1 -1
  195. psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
  196. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
  197. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.po +2 -2
  198. psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
  199. psychopy/app/locale/he_IL/LC_MESSAGE/messages.po +2 -2
  200. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
  201. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.po +2 -2
  202. psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
  203. psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
  204. psychopy/app/locale/it_IT/LC_MESSAGE/messages.po +2 -2
  205. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
  206. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +3421 -2396
  207. psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
  208. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
  209. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.po +2 -2
  210. psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
  211. psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
  212. psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
  213. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
  214. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.po +4 -4
  215. psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
  216. psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
  217. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
  218. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.po +2 -2
  219. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
  220. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.po +2 -2
  221. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
  222. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.po +3 -3
  223. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
  224. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.po +2 -2
  225. psychopy/app/{builder/localizedStrings.py → localizedStrings.py} +173 -26
  226. psychopy/app/pavlovia_ui/__init__.py +1 -1
  227. psychopy/app/pavlovia_ui/_base.py +1 -1
  228. psychopy/app/pavlovia_ui/functions.py +1 -1
  229. psychopy/app/pavlovia_ui/menu.py +1 -1
  230. psychopy/app/pavlovia_ui/project.py +1 -1
  231. psychopy/app/pavlovia_ui/search.py +1 -1
  232. psychopy/app/pavlovia_ui/sync.py +1 -1
  233. psychopy/app/pavlovia_ui/user.py +1 -1
  234. psychopy/app/plugin_manager/dialog.py +34 -96
  235. psychopy/app/plugin_manager/packages.py +10 -14
  236. psychopy/app/plugin_manager/plugins.py +64 -4
  237. psychopy/app/preferencesDlg.py +12 -37
  238. psychopy/app/psychopyApp.py +130 -44
  239. psychopy/app/ribbon.py +1 -0
  240. psychopy/app/runner/runner.py +19 -7
  241. psychopy/app/runner/scriptProcess.py +11 -6
  242. psychopy/app/stdout/stdOutRich.py +9 -2
  243. psychopy/app/themes/fonts.py +1 -1
  244. psychopy/app/themes/icons.py +2 -38
  245. psychopy/app/ui/__init__.py +1 -1
  246. psychopy/app/utils.py +3 -3
  247. psychopy/assets/default.mp3 +0 -0
  248. psychopy/assets/fonts/NotoSans-Bold.ttf +0 -0
  249. psychopy/assets/fonts/NotoSans-BoldItalic.ttf +0 -0
  250. psychopy/assets/fonts/NotoSans-Italic.ttf +0 -0
  251. psychopy/assets/fonts/NotoSans-Regular.ttf +0 -0
  252. psychopy/assets/voicekeyThresholdStim.wav +0 -0
  253. psychopy/clock.py +4 -1
  254. psychopy/colors.py +2 -0
  255. psychopy/core.py +1 -1
  256. psychopy/data/base.py +1 -1
  257. psychopy/data/experiment.py +151 -46
  258. psychopy/data/routine.py +27 -1
  259. psychopy/data/staircase.py +2 -1
  260. psychopy/data/trial.py +62 -14
  261. psychopy/data/utils.py +1 -1
  262. psychopy/demos/builder/Design Templates/branchedExperiment/branchedExperiment.psyexp +333 -218
  263. psychopy/demos/builder/Design Templates/psychophysicsStaircase/psychophysicsStaircase.psyexp +261 -239
  264. psychopy/demos/builder/Design Templates/psychophysicsStairsInterleaved/psychophysicsStaircaseInterleaved.psyexp +319 -180
  265. psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks.psyexp +204 -116
  266. psychopy/demos/builder/Experiments/BART/assets/background.jpg +0 -0
  267. psychopy/demos/builder/Experiments/BART/assets/blueBalloon.png +0 -0
  268. psychopy/demos/builder/Experiments/BART/assets/greenBalloon.png +0 -0
  269. psychopy/demos/builder/Experiments/BART/assets/redBalloon.png +0 -0
  270. psychopy/demos/builder/Experiments/BART/bart.psyexp +779 -866
  271. psychopy/demos/builder/Experiments/BigFiveInventory/BFI.psyexp +242 -180
  272. psychopy/demos/builder/Experiments/GoNoGo/gng.psyexp +419 -406
  273. psychopy/demos/builder/Experiments/dragAndDrop/README.md +2 -37
  274. psychopy/demos/builder/Experiments/dragAndDrop/drag_and_drop.psyexp +460 -1204
  275. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/blank_grid.png +0 -0
  276. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/make_shapes.psyexp +221 -0
  277. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/readme.md +4 -0
  278. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_1.png +0 -0
  279. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_10.png +0 -0
  280. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_2.png +0 -0
  281. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_3.png +0 -0
  282. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_4.png +0 -0
  283. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_5.png +0 -0
  284. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_6.png +0 -0
  285. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_7.png +0 -0
  286. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_8.png +0 -0
  287. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_9.png +0 -0
  288. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solutions.xlsx +0 -0
  289. psychopy/demos/builder/Experiments/mentalRotation/MentalRotation.psyexp +583 -542
  290. psychopy/demos/builder/Experiments/navon/NavonTask.psyexp +458 -427
  291. psychopy/demos/builder/Experiments/sternberg/sternberg.psyexp +588 -550
  292. psychopy/demos/builder/Experiments/stroop/stroop.psyexp +303 -207
  293. psychopy/demos/builder/Experiments/stroopExtended/stroop.psyexp +390 -215
  294. psychopy/demos/builder/Experiments/stroopExtended/stroopReverse.psyexp +390 -215
  295. psychopy/demos/builder/Experiments/stroopVoice/stroopVoice.psyexp +357 -331
  296. psychopy/demos/builder/Feature Demos/buttonBox/buttonBoxDemo.psyexp +3 -2
  297. psychopy/demos/builder/Feature Demos/counterbalance/counterbalance.psyexp +287 -277
  298. psychopy/demos/builder/Feature Demos/gratings/gratings.psyexp +370 -320
  299. psychopy/demos/builder/Feature Demos/noise/noise.psyexp +452 -399
  300. psychopy/demos/builder/Feature Demos/panorama/panorama.psyexp +168 -133
  301. psychopy/demos/builder/Feature Demos/pilotMode/pilotMode.psyexp +4 -3
  302. psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp +420 -392
  303. psychopy/demos/builder/Feature Demos/sliders/sliders.psyexp +917 -871
  304. psychopy/demos/builder/Feature Demos/visualValidator/readme.md +7 -0
  305. psychopy/demos/builder/Feature Demos/visualValidator/visualValidator.psyexp +200 -0
  306. psychopy/demos/builder/Hardware/EEG_parallel_component/EEG_triggers_parallel_comp.psyexp +25 -9
  307. psychopy/demos/builder/Hardware/EEG_serial_code/EEG_triggers_serial_code.psyexp +372 -361
  308. psychopy/demos/builder/Hardware/EEG_serial_component/EEG_triggers_serial_comp.psyexp +25 -9
  309. psychopy/demos/builder/Hardware/EGI_netstation/stroop.psyexp +320 -235
  310. psychopy/demos/builder/Hardware/Eyetracking_visual_search/visualSearch.psyexp +790 -651
  311. psychopy/demos/builder/Hardware/camera/camera.psyexp +326 -246
  312. psychopy/demos/builder/Hardware/eyetracking/eyetracking.psyexp +432 -327
  313. psychopy/demos/builder/Hardware/eyetracking_custom_cal/eyetracking_custom_cal.psyexp +440 -321
  314. psychopy/demos/builder/Hardware/fMRI/fMRI_demo.psyexp +190 -181
  315. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo.psyexp +323 -312
  316. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy.psyexp +360 -0
  317. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy_legacy.psyexp +312 -0
  318. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy.psyexp +329 -273
  319. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy.psyexp +360 -0
  320. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy_legacy.psyexp +312 -0
  321. psychopy/demos/builder/Hardware/microphone/microphone.psyexp +450 -404
  322. psychopy/demos/builder/Hardware/pump/pump.psyexp +593 -329
  323. psychopy/demos/builder/Helper Tools/achorVSalignment/FlowCircular-Regular.ttf +0 -0
  324. psychopy/demos/builder/Helper Tools/achorVSalignment/anchorAlignment.psyexp +336 -274
  325. psychopy/demos/builder/Helper Tools/clockFace/clockFace.psyexp +200 -149
  326. psychopy/demos/builder/Helper Tools/colors/colors.psyexp +300 -279
  327. psychopy/demos/builder/Helper Tools/drawPolygon/drawPolygon.psyexp +677 -564
  328. psychopy/demos/builder/Helper Tools/keyNameFinder/keyNameFinder.psyexp +214 -158
  329. psychopy/demos/builder/Helper Tools/spatialUnits/unitDemo.psyexp +195 -146
  330. psychopy/demos/coder/experiment control/runtimeInfo.py +1 -1
  331. psychopy/devices/__init__.py +1 -1
  332. psychopy/event.py +1 -1
  333. psychopy/exceptions.py +1 -1
  334. psychopy/experiment/__init__.py +1 -1
  335. psychopy/experiment/_experiment.py +30 -9
  336. psychopy/experiment/components/__init__.py +1 -6
  337. psychopy/experiment/components/_base.py +44 -19
  338. psychopy/experiment/components/aperture/__init__.py +1 -1
  339. psychopy/experiment/components/brush/__init__.py +2 -2
  340. psychopy/experiment/components/button/__init__.py +24 -28
  341. psychopy/experiment/components/camera/__init__.py +38 -39
  342. psychopy/experiment/components/code/__init__.py +1 -1
  343. psychopy/experiment/components/dots/__init__.py +1 -1
  344. psychopy/experiment/components/eyetracker_record/__init__.py +7 -3
  345. psychopy/experiment/components/form/__init__.py +3 -3
  346. psychopy/experiment/components/grating/__init__.py +1 -1
  347. psychopy/experiment/components/image/__init__.py +1 -1
  348. psychopy/experiment/components/joyButtons/__init__.py +2 -2
  349. psychopy/experiment/components/joyButtons/virtualJoyButtons.py +1 -1
  350. psychopy/experiment/components/joystick/__init__.py +3 -3
  351. psychopy/experiment/components/joystick/virtualJoystick.py +1 -1
  352. psychopy/experiment/components/keyboard/__init__.py +98 -122
  353. psychopy/experiment/components/microphone/__init__.py +54 -98
  354. psychopy/experiment/components/mouse/__init__.py +92 -93
  355. psychopy/experiment/components/movie/__init__.py +28 -50
  356. psychopy/experiment/components/parallelOut/__init__.py +3 -3
  357. psychopy/experiment/components/polygon/__init__.py +2 -3
  358. psychopy/experiment/components/roi/__init__.py +2 -2
  359. psychopy/experiment/components/routineSettings/__init__.py +2 -0
  360. psychopy/experiment/components/serialOut/__init__.py +7 -7
  361. psychopy/experiment/components/settings/__init__.py +317 -313
  362. psychopy/experiment/components/settings/eyetracking.py +108 -0
  363. psychopy/experiment/components/slider/__init__.py +5 -5
  364. psychopy/experiment/components/sound/__init__.py +168 -78
  365. psychopy/experiment/components/soundsensor/__init__.py +361 -0
  366. psychopy/experiment/components/soundsensor/classic/soundsensor.png +0 -0
  367. psychopy/experiment/components/soundsensor/classic/soundsensor@2x.png +0 -0
  368. psychopy/experiment/components/soundsensor/dark/soundsensor.png +0 -0
  369. psychopy/experiment/components/soundsensor/dark/soundsensor@2x.png +0 -0
  370. psychopy/experiment/components/soundsensor/light/soundsensor.png +0 -0
  371. psychopy/experiment/components/soundsensor/light/soundsensor@2x.png +0 -0
  372. psychopy/experiment/components/static/__init__.py +59 -33
  373. psychopy/experiment/components/text/__init__.py +2 -6
  374. psychopy/experiment/components/textbox/__init__.py +3 -7
  375. psychopy/experiment/components/unknown/__init__.py +2 -0
  376. psychopy/experiment/components/unknownPlugin/__init__.py +2 -0
  377. psychopy/experiment/exports.py +1 -1
  378. psychopy/experiment/flow.py +2 -2
  379. psychopy/experiment/localization.py +1 -1
  380. psychopy/experiment/loops.py +43 -10
  381. psychopy/experiment/params.py +6 -4
  382. psychopy/experiment/plugins.py +8 -1
  383. psychopy/experiment/py2js.py +1 -1
  384. psychopy/experiment/py2js_transpiler.py +1 -1
  385. psychopy/experiment/routines/__init__.py +1 -1
  386. psychopy/experiment/routines/_base.py +23 -24
  387. psychopy/experiment/routines/audioValidator/__init__.py +343 -0
  388. psychopy/experiment/routines/audioValidator/classic/audio_validator.png +0 -0
  389. psychopy/experiment/routines/audioValidator/classic/audio_validator@2x.png +0 -0
  390. psychopy/experiment/routines/audioValidator/dark/audio_validator.png +0 -0
  391. psychopy/experiment/routines/audioValidator/dark/audio_validator@2x.png +0 -0
  392. psychopy/experiment/routines/audioValidator/light/audio_validator.png +0 -0
  393. psychopy/experiment/routines/audioValidator/light/audio_validator@2x.png +0 -0
  394. psychopy/experiment/routines/eyetracker_calibrate/__init__.py +76 -17
  395. psychopy/experiment/routines/eyetracker_validate/__init__.py +1 -1
  396. psychopy/experiment/routines/unknown/__init__.py +2 -0
  397. psychopy/experiment/routines/{photodiodeValidator → visualValidator}/__init__.py +89 -120
  398. psychopy/experiment/routines/visualValidator/classic/visual_validator.png +0 -0
  399. psychopy/experiment/routines/visualValidator/classic/visual_validator@2x.png +0 -0
  400. psychopy/experiment/routines/visualValidator/dark/visual_validator.png +0 -0
  401. psychopy/experiment/routines/visualValidator/dark/visual_validator@2x.png +0 -0
  402. psychopy/experiment/routines/visualValidator/light/visual_validator.png +0 -0
  403. psychopy/experiment/routines/visualValidator/light/visual_validator@2x.png +0 -0
  404. psychopy/experiment/utils.py +1 -1
  405. psychopy/gui/__init__.py +1 -1
  406. psychopy/gui/qtgui.py +15 -6
  407. psychopy/gui/wxgui.py +1 -1
  408. psychopy/hardware/__init__.py +0 -1
  409. psychopy/hardware/base.py +147 -16
  410. psychopy/hardware/bbtk/__init__.py +10 -16
  411. psychopy/hardware/brainproducts.py +7 -13
  412. psychopy/hardware/button.py +21 -2
  413. psychopy/hardware/buttonbox/__init__.py +1 -1
  414. psychopy/hardware/camera/__init__.py +16 -3
  415. psychopy/hardware/cedrus.py +5 -16
  416. psychopy/hardware/crs/__init__.py +1 -1
  417. psychopy/hardware/crs/bits.py +36 -33
  418. psychopy/hardware/crs/colorcal.py +8 -11
  419. psychopy/hardware/crs/optical.py +7 -10
  420. psychopy/hardware/crs/shaders.py +18 -5
  421. psychopy/hardware/emotiv.py +1 -1
  422. psychopy/hardware/emulator.py +11 -5
  423. psychopy/hardware/exceptions.py +86 -0
  424. psychopy/hardware/forp.py +18 -23
  425. psychopy/hardware/gammasci.py +8 -3
  426. psychopy/hardware/iolab.py +8 -19
  427. psychopy/hardware/joystick/__init__.py +865 -266
  428. psychopy/hardware/joystick/_base.py +251 -0
  429. psychopy/hardware/joystick/backend_glfw.py +306 -0
  430. psychopy/hardware/joystick/backend_pyglet.py +309 -0
  431. psychopy/hardware/joystick/mappings.py +287 -0
  432. psychopy/hardware/keyboard.py +4 -2
  433. psychopy/hardware/labhackers.py +1 -1
  434. psychopy/hardware/labjacks.py +9 -13
  435. psychopy/hardware/{photodiode.py → lightsensor.py} +146 -203
  436. psychopy/hardware/listener.py +9 -8
  437. psychopy/hardware/manager.py +24 -35
  438. psychopy/hardware/microphone.py +534 -154
  439. psychopy/hardware/minolta.py +14 -4
  440. psychopy/hardware/mouse/__init__.py +1 -1
  441. psychopy/hardware/photometer/__init__.py +2 -2
  442. psychopy/hardware/pr.py +14 -4
  443. psychopy/hardware/qmix.py +18 -27
  444. psychopy/hardware/serialdevice.py +43 -12
  445. psychopy/hardware/soundsensor.py +473 -0
  446. psychopy/hardware/spatial/__init__.py +231 -0
  447. psychopy/hardware/speaker.py +298 -36
  448. psychopy/hardware/triggerbox/__init__.py +1 -1
  449. psychopy/hardware/triggerbox/base.py +1 -1
  450. psychopy/hardware/triggerbox/parallel.py +1 -1
  451. psychopy/info.py +1 -1
  452. psychopy/iohub/devices/eyetracker/__init__.py +10 -18
  453. psychopy/iohub/devices/eyetracker/calibration/procedure.py +15 -33
  454. psychopy/iohub/devices/eyetracker/hw/pupil_labs/neon/__init__.py +1 -0
  455. psychopy/iohub/devices/mouse/linux2.py +2 -1
  456. psychopy/layout.py +1 -1
  457. psychopy/liaison.py +91 -39
  458. psychopy/locale_setup.py +11 -1
  459. psychopy/localization/__init__.py +1 -1
  460. psychopy/localization/_localization.py +1 -1
  461. psychopy/localization/messages.pot +2 -2
  462. psychopy/logging.py +14 -12
  463. psychopy/microphone.py +4 -3
  464. psychopy/misc.py +1 -1
  465. psychopy/monitors/MonitorCenter.py +3 -3
  466. psychopy/monitors/__init__.py +1 -1
  467. psychopy/monitors/calibData.py +1 -1
  468. psychopy/monitors/calibTools.py +3 -2
  469. psychopy/platform_specific/__init__.py +1 -1
  470. psychopy/platform_specific/darwin.py +1 -1
  471. psychopy/platform_specific/linux.py +1 -1
  472. psychopy/platform_specific/win32.py +1 -1
  473. psychopy/plugins/__init__.py +26 -17
  474. psychopy/plugins/util.py +65 -0
  475. psychopy/preferences/Darwin.spec +11 -3
  476. psychopy/preferences/FreeBSD.spec +11 -3
  477. psychopy/preferences/Linux.spec +11 -3
  478. psychopy/preferences/Windows.spec +11 -3
  479. psychopy/preferences/__init__.py +1 -1
  480. psychopy/preferences/baseNoArch.spec +11 -3
  481. psychopy/preferences/hints.py +78 -61
  482. psychopy/preferences/preferences.py +82 -13
  483. psychopy/projects/__init__.py +1 -1
  484. psychopy/projects/pavlovia.py +29 -13
  485. psychopy/scripts/psyexpCompile.py +1 -1
  486. psychopy/session.py +81 -8
  487. psychopy/sound/__init__.py +25 -10
  488. psychopy/sound/_base.py +134 -34
  489. psychopy/sound/audioclip.py +38 -15
  490. psychopy/sound/audiodevice.py +1 -1
  491. psychopy/sound/backend_ptb.py +53 -321
  492. psychopy/sound/backend_pygame.py +7 -3
  493. psychopy/sound/backend_pyo.py +53 -22
  494. psychopy/sound/backend_pysound.py +10 -27
  495. psychopy/sound/backend_sounddevice.py +33 -21
  496. psychopy/sound/exceptions.py +1 -1
  497. psychopy/sound/microphone.py +83 -5
  498. psychopy/sound/transcribe.py +3 -3
  499. psychopy/tests/data/test_basic_run.py +1 -0
  500. psychopy/tests/data/test_sounds/default_16000.wav +0 -0
  501. psychopy/tests/data/test_sounds/default_192000.wav +0 -0
  502. psychopy/tests/data/test_sounds/default_22050.wav +0 -0
  503. psychopy/tests/data/test_sounds/default_32000.wav +0 -0
  504. psychopy/tests/data/test_sounds/default_44100.wav +0 -0
  505. psychopy/tests/data/test_sounds/default_48000.wav +0 -0
  506. psychopy/tests/data/test_sounds/default_8000.wav +0 -0
  507. psychopy/tests/data/test_sounds/default_96000.wav +0 -0
  508. psychopy/tests/test_alerts/test_alerttools.py +2 -1
  509. psychopy/tests/test_app/test_command_line.py +65 -0
  510. psychopy/tests/test_data/test_TrialHandler2.py +18 -7
  511. psychopy/tests/test_demos/test_builder_demos.py +1 -1
  512. psychopy/tests/test_experiment/needs_wx/componsTemplate.txt +5238 -4188
  513. psychopy/tests/test_experiment/needs_wx/test_components.py +1 -1
  514. psychopy/tests/test_experiment/test_components/test_RoutineSettingsComponent.py +16 -0
  515. psychopy/tests/test_experiment/test_components/test_all_components.py +1 -1
  516. psychopy/tests/test_experiment/test_components/test_base_components.py +26 -17
  517. psychopy/tests/test_experiment/test_loops.py +12 -4
  518. psychopy/tests/test_experiment/test_params.py +17 -4
  519. psychopy/tests/test_experiment/test_routines/test_PhotodiodeValidationRoutine.py +2 -2
  520. psychopy/tests/test_hardware/test_photodiode.py +66 -0
  521. psychopy/tests/test_liaison/test_Liaison.py +4 -4
  522. psychopy/tests/test_misc/test_clock.py +2 -0
  523. psychopy/tests/test_misc/test_color.py +2 -0
  524. psychopy/tests/test_misc/test_event.py +1 -0
  525. psychopy/tests/test_plugins/__init__.py +0 -0
  526. psychopy/tests/test_plugins/test_plugin_stubs.py +125 -0
  527. psychopy/tests/test_sound/test_sound.py +111 -40
  528. psychopy/tests/test_tools/test_colorspacetools.py +24 -23
  529. psychopy/tests/test_tools/test_mathtools.py +9 -9
  530. psychopy/tests/test_tools/test_viewtools.py +101 -0
  531. psychopy/tests/test_validators/__init__.py +0 -0
  532. psychopy/tests/test_validators/test_voicekeyValidator.py +95 -0
  533. psychopy/tests/test_visual/test_all_stimuli.py +2 -2
  534. psychopy/tests/test_visual/test_basevisual.py +37 -7
  535. psychopy/tests/test_visual/test_button.py +2 -2
  536. psychopy/tests/test_visual/test_circle.py +10 -2
  537. psychopy/tests/test_visual/test_dots.py +1 -1
  538. psychopy/tests/test_visual/test_form.py +13 -13
  539. psychopy/tests/test_visual/test_gamma.py +3 -3
  540. psychopy/tests/test_visual/test_image.py +2 -2
  541. psychopy/tests/test_visual/test_progress.py +2 -2
  542. psychopy/tests/test_visual/test_roi.py +8 -2
  543. psychopy/tests/test_visual/test_shape.py +2 -2
  544. psychopy/tests/test_visual/test_slider.py +2 -2
  545. psychopy/tests/test_visual/test_target.py +2 -2
  546. psychopy/tests/test_visual/test_textbox.py +6 -8
  547. psychopy/tests/test_visual/test_winScalePos.py +6 -5
  548. psychopy/tests/test_visual/test_window.py +17 -0
  549. psychopy/tests/utils.py +51 -1
  550. psychopy/tools/__init__.py +1 -1
  551. psychopy/tools/arraytools.py +2 -2
  552. psychopy/tools/attributetools.py +52 -1
  553. psychopy/tools/audiotools.py +4 -1
  554. psychopy/tools/colorspacetools.py +6 -4
  555. psychopy/tools/coordinatetools.py +1 -1
  556. psychopy/tools/fileerrortools.py +21 -9
  557. psychopy/tools/filetools.py +2 -2
  558. psychopy/tools/fontmanager.py +47 -28
  559. psychopy/tools/gltools.py +2964 -558
  560. psychopy/tools/imagetools.py +1 -1
  561. psychopy/tools/mathtools.py +997 -127
  562. psychopy/tools/monitorunittools.py +7 -1
  563. psychopy/tools/movietools.py +1 -2
  564. psychopy/tools/pkgtools.py +157 -127
  565. psychopy/tools/plottools.py +1 -1
  566. psychopy/tools/rifttools.py +1 -1
  567. psychopy/tools/stereotools.py +1 -1
  568. psychopy/tools/stimulustools.py +172 -2
  569. psychopy/tools/stringtools.py +22 -2
  570. psychopy/tools/systemtools.py +1 -1
  571. psychopy/tools/typetools.py +1 -1
  572. psychopy/tools/unittools.py +1 -1
  573. psychopy/tools/versionchooser.py +3 -1
  574. psychopy/tools/viewtools.py +54 -70
  575. psychopy/tools/wizard.py +2 -2
  576. psychopy/validation/__init__.py +6 -0
  577. psychopy/validation/audio.py +74 -0
  578. psychopy/validation/visual.py +115 -0
  579. psychopy/visual/__init__.py +1 -4
  580. psychopy/visual/aperture.py +9 -6
  581. psychopy/visual/backends/__init__.py +1 -1
  582. psychopy/visual/backends/_base.py +1 -1
  583. psychopy/visual/backends/gamma.py +1 -1
  584. psychopy/visual/backends/glfwbackend.py +8 -12
  585. psychopy/visual/backends/pygamebackend.py +1 -1
  586. psychopy/visual/backends/pygletbackend.py +32 -11
  587. psychopy/visual/basevisual.py +93 -13
  588. psychopy/visual/brush.py +1 -1
  589. psychopy/visual/bufferimage.py +90 -10
  590. psychopy/visual/button.py +1 -1
  591. psychopy/visual/circle.py +12 -20
  592. psychopy/visual/custommouse.py +1 -1
  593. psychopy/visual/dot.py +80 -14
  594. psychopy/visual/elementarray.py +84 -10
  595. psychopy/visual/filters.py +1 -1
  596. psychopy/visual/form.py +43 -28
  597. psychopy/visual/grating.py +105 -25
  598. psychopy/visual/helpers.py +1 -1
  599. psychopy/visual/image.py +98 -20
  600. psychopy/visual/line.py +15 -25
  601. psychopy/visual/movie.py +1 -1
  602. psychopy/visual/movie2.py +4 -3
  603. psychopy/visual/movie3.py +4 -3
  604. psychopy/visual/movies/__init__.py +1 -1
  605. psychopy/visual/movies/frame.py +1 -1
  606. psychopy/visual/movies/metadata.py +1 -1
  607. psychopy/visual/movies/players/__init__.py +1 -1
  608. psychopy/visual/movies/players/_base.py +1 -1
  609. psychopy/visual/movies/players/ffpyplayer_player.py +2 -3
  610. psychopy/visual/nnlvs.py +9 -6
  611. psychopy/visual/noise.py +4 -16
  612. psychopy/visual/patch.py +4 -3
  613. psychopy/visual/pie.py +3 -14
  614. psychopy/visual/polygon.py +21 -28
  615. psychopy/visual/radial.py +4 -18
  616. psychopy/visual/ratingscale.py +4 -3
  617. psychopy/visual/rect.py +16 -25
  618. psychopy/visual/rift.py +8 -2
  619. psychopy/visual/secondorder.py +4 -16
  620. psychopy/visual/shaders.py +620 -286
  621. psychopy/visual/shape.py +281 -90
  622. psychopy/visual/simpleimage.py +1 -1
  623. psychopy/visual/slider.py +78 -25
  624. psychopy/visual/stim3d.py +5 -608
  625. psychopy/visual/text.py +13 -3
  626. psychopy/visual/textbox2/textbox2.py +188 -56
  627. psychopy/visual/vlcmoviestim.py +1 -1
  628. psychopy/visual/window.py +373 -200
  629. psychopy/web.py +1 -1
  630. {psychopy-2024.2.5.dist-info → psychopy-2025.1.0.dist-info}/METADATA +9 -9
  631. {psychopy-2024.2.5.dist-info → psychopy-2025.1.0.dist-info}/RECORD +644 -621
  632. psychopy/.DS_Store +0 -0
  633. psychopy/__init__.py.orig +0 -65
  634. psychopy/app/.DS_Store +0 -0
  635. psychopy/app/Resources/.DS_Store +0 -0
  636. psychopy/app/Resources/classic/filecsv16.png +0 -0
  637. psychopy/app/Resources/classic/fileimage16.png +0 -0
  638. psychopy/app/Resources/classic/fileunknown16.png +0 -0
  639. psychopy/app/Resources/dark/filecsv16.png +0 -0
  640. psychopy/app/Resources/dark/filecsv16@2x.png +0 -0
  641. psychopy/app/Resources/dark/fileimage16.png +0 -0
  642. psychopy/app/Resources/dark/fileimage16@2x.png +0 -0
  643. psychopy/app/Resources/dark/fileunknown16.png +0 -0
  644. psychopy/app/Resources/dark/fileunknown16@2x.png +0 -0
  645. psychopy/app/Resources/fonts/OpenSans-Bold.ttf +0 -0
  646. psychopy/app/Resources/fonts/OpenSans-BoldItalic.ttf +0 -0
  647. psychopy/app/Resources/fonts/OpenSans-ExtraBold.ttf +0 -0
  648. psychopy/app/Resources/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  649. psychopy/app/Resources/fonts/OpenSans-Italic.ttf +0 -0
  650. psychopy/app/Resources/fonts/OpenSans-Light.ttf +0 -0
  651. psychopy/app/Resources/fonts/OpenSans-LightItalic.ttf +0 -0
  652. psychopy/app/Resources/fonts/OpenSans-Regular.ttf +0 -0
  653. psychopy/app/Resources/fonts/OpenSans-SemiBold.ttf +0 -0
  654. psychopy/app/Resources/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  655. psychopy/app/Resources/light/filecsv16.png +0 -0
  656. psychopy/app/Resources/light/filecsv16@2x.png +0 -0
  657. psychopy/app/Resources/light/fileimage16.png +0 -0
  658. psychopy/app/Resources/light/fileimage16@2x.png +0 -0
  659. psychopy/app/Resources/light/fileunknown16.png +0 -0
  660. psychopy/app/Resources/light/fileunknown16@2x.png +0 -0
  661. psychopy/app/Resources/psychopySplash.png +0 -0
  662. psychopy/app/Resources/psychopySplash@2x.png +0 -0
  663. psychopy/app/builder/builder.py.orig +0 -3932
  664. psychopy/app/builder/dialogs/__init__.py.orig +0 -1679
  665. psychopy/app/builder/dialogs/paramCtrls.py.orig +0 -713
  666. psychopy/app/colorpicker/__init__.py.orig +0 -411
  667. psychopy/app/locale/ar_001/.DS_Store +0 -0
  668. psychopy/app/locale/ar_001/LC_MESSAGE/.DS_Store +0 -0
  669. psychopy/core.py.orig +0 -169
  670. psychopy/demos/builder/.DS_Store +0 -0
  671. psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks_lastrun.py +0 -330
  672. psychopy/demos/builder/Experiments/.DS_Store +0 -0
  673. psychopy/demos/builder/Experiments/dragAndDrop/archived_conditions.xlsx +0 -0
  674. psychopy/demos/builder/Experiments/dragAndDrop/draw grid stim.py +0 -61
  675. psychopy/demos/builder/Experiments/dragAndDrop/shapeMaker.psyexp +0 -91
  676. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_1.png +0 -0
  677. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_10.png +0 -0
  678. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_2.png +0 -0
  679. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_3.png +0 -0
  680. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_4.png +0 -0
  681. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_5.png +0 -0
  682. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_6.png +0 -0
  683. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_7.png +0 -0
  684. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_8.png +0 -0
  685. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_9.png +0 -0
  686. psychopy/demos/builder/Experiments/dragAndDrop/updated_conditions.xlsx +0 -0
  687. psychopy/demos/builder/Tools/.DS_Store +0 -0
  688. psychopy/demos/builder/Tools/gammaCalibration/.DS_Store +0 -0
  689. psychopy/demos/builder/Tools/gammaCalibration/data/.DS_Store +0 -0
  690. psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.csv +0 -38
  691. psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.log +0 -3418
  692. psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.psydat +0 -0
  693. psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.csv +0 -2
  694. psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.log +0 -15
  695. psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.psydat +0 -0
  696. psychopy/demos/builder/Tools/gammaCalibration/gamma_correction_visual_lastrun.py +0 -562
  697. psychopy/demos/coder/.DS_Store +0 -0
  698. psychopy/demos/coder/experiment control/info_gamma.pickle +0 -0
  699. psychopy/demos/coder/iohub/.iohpid +0 -1
  700. psychopy/demos/coder/iohub/eyetracking/.iohpid +0 -1
  701. psychopy/demos/coder/iohub/wintab/.DS_Store +0 -0
  702. psychopy/demos/coder/stimuli/.DS_Store +0 -0
  703. psychopy/experiment/_experiment.py.orig +0 -1032
  704. psychopy/experiment/components/.DS_Store +0 -0
  705. psychopy/experiment/components/_base.py.orig +0 -823
  706. psychopy/experiment/components/form/.DS_Store +0 -0
  707. psychopy/experiment/components/microphone/__init__.py.orig +0 -490
  708. psychopy/experiment/components/settings/__init__.py.orig +0 -1337
  709. psychopy/experiment/components/textbox/__init__.py.orig +0 -310
  710. psychopy/experiment/components/webcam/.DS_Store +0 -0
  711. psychopy/experiment/components/webcam/light/.DS_Store +0 -0
  712. psychopy/experiment/loops.py.orig +0 -829
  713. psychopy/experiment/params.py.orig +0 -408
  714. psychopy/experiment/routine.py.orig +0 -503
  715. psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator.png +0 -0
  716. psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator@2x.png +0 -0
  717. psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator.png +0 -0
  718. psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator@2x.png +0 -0
  719. psychopy/experiment/routines/photodiodeValidator/light/photodiode_validator.png +0 -0
  720. psychopy/experiment/routines/photodiodeValidator/light/photodiode_validator@2x.png +0 -0
  721. psychopy/hardware/.DS_Store +0 -0
  722. psychopy/hardware/brainproducts.py.orig +0 -680
  723. psychopy/hardware/iolab.py.orig +0 -238
  724. psychopy/iohub/datastore/__init__.py.orig +0 -443
  725. psychopy/iohub/datastore/util.py.orig +0 -692
  726. psychopy/iohub/devices/mouse/darwin.py.orig +0 -427
  727. psychopy/iohub/devices/mouse/linux2.py.orig +0 -198
  728. psychopy/preferences/.DS_Store +0 -0
  729. psychopy/projects/pavlovia.py.orig +0 -1295
  730. psychopy/tests/.DS_Store +0 -0
  731. psychopy/tests/data/.DS_Store +0 -0
  732. psychopy/tests/data/TestCircle_fill_local.png +0 -0
  733. psychopy/tests/data/aperture1_normHexbackground_local.png +0 -0
  734. psychopy/tests/data/aperture1_norm_local.png +0 -0
  735. psychopy/tests/data/aperture2_normHexbackground_local.png +0 -0
  736. psychopy/tests/data/beatandrcos_height_local.png +0 -0
  737. psychopy/tests/data/beatandrcos_normAddBlend_local.png +0 -0
  738. psychopy/tests/data/beatandrcos_normHexbackground_local.png +0 -0
  739. psychopy/tests/data/beatandrcos_norm_local.png +0 -0
  740. psychopy/tests/data/beatandrcos_stencil_local.png +0 -0
  741. psychopy/tests/data/blend_add_height_local.png +0 -0
  742. psychopy/tests/data/blend_add_normAddBlend_local.png +0 -0
  743. psychopy/tests/data/blend_add_normHexbackground_local.png +0 -0
  744. psychopy/tests/data/blend_add_normNoShade_local.png +0 -0
  745. psychopy/tests/data/blend_add_norm_local.png +0 -0
  746. psychopy/tests/data/blend_add_stencil_local.png +0 -0
  747. psychopy/tests/data/bufferimg_gabor_height_local.png +0 -0
  748. psychopy/tests/data/bufferimg_gabor_normAddBlend_local.png +0 -0
  749. psychopy/tests/data/bufferimg_gabor_normHexbackground_local.png +0 -0
  750. psychopy/tests/data/bufferimg_gabor_normNoShade_local.png +0 -0
  751. psychopy/tests/data/bufferimg_gabor_norm_local.png +0 -0
  752. psychopy/tests/data/bufferimg_gabor_stencil_local.png +0 -0
  753. psychopy/tests/data/circleHex_height_local.png +0 -0
  754. psychopy/tests/data/circleHex_normAddBlend_local.png +0 -0
  755. psychopy/tests/data/circleHex_normHexbackground_local.png +0 -0
  756. psychopy/tests/data/circleHex_normNoShade_local.png +0 -0
  757. psychopy/tests/data/circleHex_norm_local.png +0 -0
  758. psychopy/tests/data/circleHex_stencil_local.png +0 -0
  759. psychopy/tests/data/color_comparison_local.png +0 -0
  760. psychopy/tests/data/correctScript/.DS_Store +0 -0
  761. psychopy/tests/data/dots_height_local.png +0 -0
  762. psychopy/tests/data/dots_normAddBlend_local.png +0 -0
  763. psychopy/tests/data/dots_normHexbackground_local.png +0 -0
  764. psychopy/tests/data/dots_normNoShade_local.png +0 -0
  765. psychopy/tests/data/dots_norm_local.png +0 -0
  766. psychopy/tests/data/dots_stencil_local.png +0 -0
  767. psychopy/tests/data/elarray1_height_local.png +0 -0
  768. psychopy/tests/data/elarray1_normAddBlend_local.png +0 -0
  769. psychopy/tests/data/elarray1_normHexbackground_local.png +0 -0
  770. psychopy/tests/data/elarray1_norm_local.png +0 -0
  771. psychopy/tests/data/elarray1_stencil_local.png +0 -0
  772. psychopy/tests/data/envelopeandrcos_height_local.png +0 -0
  773. psychopy/tests/data/envelopeandrcos_normAddBlend_local.png +0 -0
  774. psychopy/tests/data/envelopeandrcos_normHexbackground_local.png +0 -0
  775. psychopy/tests/data/envelopeandrcos_norm_local.png +0 -0
  776. psychopy/tests/data/envelopeandrcos_stencil_local.png +0 -0
  777. psychopy/tests/data/envelopepowerandrcos_height_local.png +0 -0
  778. psychopy/tests/data/envelopepowerandrcos_normAddBlend_local.png +0 -0
  779. psychopy/tests/data/envelopepowerandrcos_normHexbackground_local.png +0 -0
  780. psychopy/tests/data/envelopepowerandrcos_norm_local.png +0 -0
  781. psychopy/tests/data/envelopepowerandrcos_stencil_local.png +0 -0
  782. psychopy/tests/data/gabor1_height_local.png +0 -0
  783. psychopy/tests/data/gabor1_normAddBlend_local.png +0 -0
  784. psychopy/tests/data/gabor1_normHexbackground_local.png +0 -0
  785. psychopy/tests/data/gabor1_normNoShade_local.png +0 -0
  786. psychopy/tests/data/gabor1_norm_local.png +0 -0
  787. psychopy/tests/data/gabor1_stencil_local.png +0 -0
  788. psychopy/tests/data/greyscale_normHexbackground_local.png +0 -0
  789. psychopy/tests/data/imageAndGauss_height_local.png +0 -0
  790. psychopy/tests/data/imageAndGauss_normAddBlend_local.png +0 -0
  791. psychopy/tests/data/imageAndGauss_normHexbackground_local.png +0 -0
  792. psychopy/tests/data/imageAndGauss_normNoShade_local.png +0 -0
  793. psychopy/tests/data/imageAndGauss_norm_local.png +0 -0
  794. psychopy/tests/data/imageAndGauss_stencil_local.png +0 -0
  795. psychopy/tests/data/movFrame1_stencil_local.png +0 -0
  796. psychopy/tests/data/noiseAndRcos_height_local.png +0 -0
  797. psychopy/tests/data/noiseAndRcos_normAddBlend_local.png +0 -0
  798. psychopy/tests/data/noiseAndRcos_normHexbackground_local.png +0 -0
  799. psychopy/tests/data/noiseAndRcos_normNoShade_local.png +0 -0
  800. psychopy/tests/data/noiseAndRcos_norm_local.png +0 -0
  801. psychopy/tests/data/noiseAndRcos_stencil_local.png +0 -0
  802. psychopy/tests/data/noiseFiltersAndRcos_height_local.png +0 -0
  803. psychopy/tests/data/noiseFiltersAndRcos_normAddBlend_local.png +0 -0
  804. psychopy/tests/data/noiseFiltersAndRcos_normHexbackground_local.png +0 -0
  805. psychopy/tests/data/noiseFiltersAndRcos_normNoShade_local.png +0 -0
  806. psychopy/tests/data/noiseFiltersAndRcos_norm_local.png +0 -0
  807. psychopy/tests/data/noiseFiltersAndRcos_stencil_local.png +0 -0
  808. psychopy/tests/data/numpyImage_height_local.png +0 -0
  809. psychopy/tests/data/numpyImage_normAddBlend_local.png +0 -0
  810. psychopy/tests/data/numpyImage_normHexbackground_local.png +0 -0
  811. psychopy/tests/data/numpyImage_normNoShade_local.png +0 -0
  812. psychopy/tests/data/numpyImage_norm_local.png +0 -0
  813. psychopy/tests/data/numpyImage_stencil_local.png +0 -0
  814. psychopy/tests/data/shape2_1_normAddBlend_local.png +0 -0
  815. psychopy/tests/data/shape2_1_normHexbackground_local.png +0 -0
  816. psychopy/tests/data/shape2_1_normNoShade_local.png +0 -0
  817. psychopy/tests/data/shape2_1_norm_local.png +0 -0
  818. psychopy/tests/data/shape2_1_stencil_local.png +0 -0
  819. psychopy/tests/data/text1_height_local.png +0 -0
  820. psychopy/tests/data/text1_normAddBlend_local.png +0 -0
  821. psychopy/tests/data/text1_normHexbackground_local.png +0 -0
  822. psychopy/tests/data/text1_norm_local.png +0 -0
  823. psychopy/tests/data/text1_stencil_local.png +0 -0
  824. psychopy/tests/data/wedge1_height_local.png +0 -0
  825. psychopy/tests/data/wedge1_normAddBlend_local.png +0 -0
  826. psychopy/tests/data/wedge1_normHexbackground_local.png +0 -0
  827. psychopy/tests/data/wedge1_normNoShade_local.png +0 -0
  828. psychopy/tests/data/wedge1_norm_local.png +0 -0
  829. psychopy/tests/data/wedge1_stencil_local.png +0 -0
  830. psychopy/tests/test_app/.DS_Store +0 -0
  831. psychopy/tests/test_app/test_builder/.DS_Store +0 -0
  832. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.log +0 -177
  833. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.psydat +0 -0
  834. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.xlsx +0 -0
  835. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.log +0 -168
  836. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.psydat +0 -0
  837. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.xlsx +0 -0
  838. psychopy/tests/test_data/.DS_Store +0 -0
  839. psychopy/tests/test_hardware/test_CRS_BitsSharp.py +0 -67
  840. psychopy/tests/test_hardware/test_CRS_BitsSharp.py.orig +0 -68
  841. psychopy/tests/test_hardware/test_CRS_bitsShaders.py +0 -110
  842. psychopy/tests/test_visual/test_image.py.orig +0 -219
  843. psychopy/visual/basevisual.py.orig +0 -1723
  844. psychopy/visual/form.py.orig +0 -1181
  845. psychopy/visual/text.py.orig +0 -752
  846. psychopy/visual/textbox2/textbox2.py.orig +0 -1315
  847. psychopy/visual/windowwarp.py.orig +0 -463
  848. /psychopy/{app/cortex.log → alerts/alertsCatalogue/3600.yaml} +0 -0
  849. /psychopy/{app/Resources → assets}/fonts/Arvo-Bold.ttf +0 -0
  850. /psychopy/{app/Resources → assets}/fonts/Arvo-BoldItalic.ttf +0 -0
  851. /psychopy/{app/Resources → assets}/fonts/Arvo-Italic.ttf +0 -0
  852. /psychopy/{app/Resources → assets}/fonts/Arvo-Regular.ttf +0 -0
  853. /psychopy/{app/Resources → assets}/fonts/DejaVuSerif.ttf +0 -0
  854. /psychopy/{app/Resources → assets}/fonts/IndieFlower-Regular.ttf +0 -0
  855. /psychopy/{app/Resources → assets}/fonts/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
  856. /psychopy/{app/Resources → assets}/fonts/JetBrainsMono-VariableFont_wght.ttf +0 -0
  857. /psychopy/demos/builder/Experiments/{GoNoGo → goNoGo}/readme.md +0 -0
  858. {psychopy-2024.2.5.dist-info → psychopy-2025.1.0.dist-info}/WHEEL +0 -0
  859. {psychopy-2024.2.5.dist-info → psychopy-2025.1.0.dist-info}/entry_points.txt +0 -0
  860. {psychopy-2024.2.5.dist-info → psychopy-2025.1.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,330 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
- """
4
- This experiment was created using PsychoPy3 Experiment Builder (v2022.2.0dev3),
5
- on Thu May 26 17:00:03 2022
6
- If you publish work using this script the most relevant publication is:
7
-
8
- Peirce J, Gray JR, Simpson S, MacAskill M, Höchenberger R, Sogo H, Kastman E, Lindeløv JK. (2019)
9
- PsychoPy2: Experiments in behavior made easy Behav Res 51: 195.
10
- https://doi.org/10.3758/s13428-018-01193-y
11
-
12
- """
13
-
14
- # --- Import packages ---
15
- from psychopy import locale_setup
16
- from psychopy import prefs
17
- from psychopy import sound, gui, visual, core, data, event, logging, clock, colors, layout
18
- from psychopy.constants import (NOT_STARTED, STARTED, PLAYING, PAUSED,
19
- STOPPED, FINISHED, PRESSED, RELEASED, FOREVER)
20
-
21
- import numpy as np # whole numpy lib is available, prepend 'np.'
22
- from numpy import (sin, cos, tan, log, log10, pi, average,
23
- sqrt, std, deg2rad, rad2deg, linspace, asarray)
24
- from numpy.random import random, randint, normal, shuffle, choice as randchoice
25
- import os # handy system and path functions
26
- import sys # to get file system encoding
27
-
28
- import psychopy.iohub as io
29
- from psychopy.hardware import keyboard
30
-
31
-
32
-
33
- # Ensure that relative paths start from the same directory as this script
34
- _thisDir = os.path.dirname(os.path.abspath(__file__))
35
- os.chdir(_thisDir)
36
- # Store info about the experiment session
37
- psychopyVersion = '2022.2.0dev3'
38
- expName = 'blockedTrials' # from the Builder filename that created this script
39
- expInfo = {
40
- 'session': '001',
41
- 'participant': "subj%06.0f" %(random()*100000),
42
- }
43
- # --- Show participant info dialog --
44
- dlg = gui.DlgFromDict(dictionary=expInfo, sortKeys=False, title=expName)
45
- if dlg.OK == False:
46
- core.quit() # user pressed cancel
47
- expInfo['date'] = data.getDateStr() # add a simple timestamp
48
- expInfo['expName'] = expName
49
- expInfo['psychopyVersion'] = psychopyVersion
50
-
51
- # Data file name stem = absolute path + name; later add .psyexp, .csv, .log, etc
52
- filename = _thisDir + os.sep + u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])
53
-
54
- # An ExperimentHandler isn't essential but helps with data saving
55
- thisExp = data.ExperimentHandler(name=expName, version='',
56
- extraInfo=expInfo, runtimeInfo=None,
57
- originPath='psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks_lastrun.py',
58
- savePickle=True, saveWideText=True,
59
- dataFileName=filename)
60
- # save a log file for detail verbose info
61
- logFile = logging.LogFile(filename+'.log', level=logging.EXP)
62
- logging.console.setLevel(logging.WARNING) # this outputs to the screen, not a file
63
-
64
- endExpNow = False # flag for 'escape' or other condition => quit the exp
65
- frameTolerance = 0.001 # how close to onset before 'same' frame
66
-
67
- # Start Code - component code to be run after the window creation
68
-
69
- # --- Setup the Window ---
70
- win = visual.Window(
71
- size=[1440, 900], fullscr=True, screen=0,
72
- winType='pyglet', allowGUI=False, allowStencil=False,
73
- monitor='testMonitor', color=[0,0,0], colorSpace='rgb',
74
- blendMode='avg', useFBO=True,
75
- units='height')
76
- # store frame rate of monitor if we can measure it
77
- expInfo['frameRate'] = win.getActualFrameRate()
78
- if expInfo['frameRate'] != None:
79
- frameDur = 1.0 / round(expInfo['frameRate'])
80
- else:
81
- frameDur = 1.0 / 60.0 # could not measure, so guess
82
- # --- Setup input devices ---
83
- ioConfig = {}
84
-
85
- # Setup iohub keyboard
86
- ioConfig['Keyboard'] = dict(use_keymap='psychopy')
87
-
88
- ioSession = '1'
89
- if 'session' in expInfo:
90
- ioSession = str(expInfo['session'])
91
- ioServer = io.launchHubServer(window=win, **ioConfig)
92
- eyetracker = None
93
-
94
- # create a default keyboard (e.g. to check for escape)
95
- defaultKeyboard = keyboard.Keyboard(backend='iohub')
96
-
97
- # --- Initialize components for Routine "readyMessage" ---
98
- readyMessageClock = core.Clock()
99
- textbox = visual.TextBox2(
100
- win, text='', font='Open Sans',
101
- pos=(0, 0), letterHeight=0.05,
102
- size=(0.4, 0.4), borderWidth=2.0,
103
- color='white', colorSpace='rgb',
104
- opacity=1.0,
105
- bold=False, italic=False,
106
- lineSpacing=1.0,
107
- padding=None, alignment='center',
108
- anchor='center',
109
- fillColor=None, borderColor=None,
110
- flipHoriz=False, flipVert=False, languageStyle='LTR',
111
- editable=False,
112
- name='textbox',
113
- autoLog=True,
114
- )
115
-
116
- # --- Initialize components for Routine "trial" ---
117
- trialClock = core.Clock()
118
- image = visual.ImageStim(
119
- win=win,
120
- name='image', units='height',
121
- image='sin', mask=None, anchor='center',
122
- ori=0, pos=(0, 0), size=(0.5,0.5),
123
- color=[1,1,1], colorSpace='rgb', opacity=1,
124
- flipHoriz=False, flipVert=False,
125
- texRes=128, interpolate=True, depth=0.0)
126
-
127
- # Create some handy timers
128
- globalClock = core.Clock() # to track the time since experiment started
129
- routineTimer = core.CountdownTimer() # to track time remaining of each (non-slip) routine
130
-
131
- # set up handler to look after randomisation of conditions etc
132
- blocks = data.TrialHandler(nReps=2, method='random',
133
- extraInfo=expInfo, originPath=-1,
134
- trialList=data.importConditions('chooseBlock.xlsx'),
135
- seed=None, name='blocks')
136
- thisExp.addLoop(blocks) # add the loop to the experiment
137
- thisBlock = blocks.trialList[0] # so we can initialise stimuli with some values
138
- # abbreviate parameter names if possible (e.g. rgb = thisBlock.rgb)
139
- if thisBlock != None:
140
- for paramName in thisBlock:
141
- exec('{} = thisBlock[paramName]'.format(paramName))
142
-
143
- for thisBlock in blocks:
144
- currentLoop = blocks
145
- # abbreviate parameter names if possible (e.g. rgb = thisBlock.rgb)
146
- if thisBlock != None:
147
- for paramName in thisBlock:
148
- exec('{} = thisBlock[paramName]'.format(paramName))
149
-
150
- # --- Prepare to start Routine "readyMessage" ---
151
- continueRoutine = True
152
- routineTimer.add(1.000000)
153
- # update component parameters for each repeat
154
- textbox.reset()
155
- textbox.setText(readyMsg)
156
- # keep track of which components have finished
157
- readyMessageComponents = [textbox]
158
- for thisComponent in readyMessageComponents:
159
- thisComponent.tStart = None
160
- thisComponent.tStop = None
161
- thisComponent.tStartRefresh = None
162
- thisComponent.tStopRefresh = None
163
- if hasattr(thisComponent, 'status'):
164
- thisComponent.status = NOT_STARTED
165
- # reset timers
166
- t = 0
167
- _timeToFirstFrame = win.getFutureFlipTime(clock="now")
168
- readyMessageClock.reset(-_timeToFirstFrame) # t0 is time of first possible flip
169
- frameN = -1
170
-
171
- # --- Run Routine "readyMessage" ---
172
- while continueRoutine and routineTimer.getTime() > 0:
173
- # get current time
174
- t = readyMessageClock.getTime()
175
- tThisFlip = win.getFutureFlipTime(clock=readyMessageClock)
176
- tThisFlipGlobal = win.getFutureFlipTime(clock=None)
177
- frameN = frameN + 1 # number of completed frames (so 0 is the first frame)
178
- # update/draw components on each frame
179
-
180
- # *textbox* updates
181
- if textbox.status == NOT_STARTED and tThisFlip >= 0.0-frameTolerance:
182
- # keep track of start time/frame for later
183
- textbox.frameNStart = frameN # exact frame index
184
- textbox.tStart = t # local t and not account for scr refresh
185
- textbox.tStartRefresh = tThisFlipGlobal # on global time
186
- win.timeOnFlip(textbox, 'tStartRefresh') # time at next scr refresh
187
- textbox.setAutoDraw(True)
188
- if textbox.status == STARTED:
189
- # is it time to stop? (based on global clock, using actual start)
190
- if tThisFlipGlobal > textbox.tStartRefresh + 1.0-frameTolerance:
191
- # keep track of stop time/frame for later
192
- textbox.tStop = t # not accounting for scr refresh
193
- textbox.frameNStop = frameN # exact frame index
194
- win.timeOnFlip(textbox, 'tStopRefresh') # time at next scr refresh
195
- textbox.setAutoDraw(False)
196
-
197
- # check for quit (typically the Esc key)
198
- if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]):
199
- core.quit()
200
-
201
- # check if all components have finished
202
- if not continueRoutine: # a component has requested a forced-end of Routine
203
- break
204
- continueRoutine = False # will revert to True if at least one component still running
205
- for thisComponent in readyMessageComponents:
206
- if hasattr(thisComponent, "status") and thisComponent.status != FINISHED:
207
- continueRoutine = True
208
- break # at least one component has not yet finished
209
-
210
- # refresh the screen
211
- if continueRoutine: # don't flip if this routine is over or we'll get a blank screen
212
- win.flip()
213
-
214
- # --- Ending Routine "readyMessage" ---
215
- for thisComponent in readyMessageComponents:
216
- if hasattr(thisComponent, "setAutoDraw"):
217
- thisComponent.setAutoDraw(False)
218
- blocks.addData('textbox.started', textbox.tStartRefresh)
219
- blocks.addData('textbox.stopped', textbox.tStopRefresh)
220
-
221
- # set up handler to look after randomisation of conditions etc
222
- trials = data.TrialHandler(nReps=1, method='random',
223
- extraInfo=expInfo, originPath=-1,
224
- trialList=data.importConditions(condsFile),
225
- seed=None, name='trials')
226
- thisExp.addLoop(trials) # add the loop to the experiment
227
- thisTrial = trials.trialList[0] # so we can initialise stimuli with some values
228
- # abbreviate parameter names if possible (e.g. rgb = thisTrial.rgb)
229
- if thisTrial != None:
230
- for paramName in thisTrial:
231
- exec('{} = thisTrial[paramName]'.format(paramName))
232
-
233
- for thisTrial in trials:
234
- currentLoop = trials
235
- # abbreviate parameter names if possible (e.g. rgb = thisTrial.rgb)
236
- if thisTrial != None:
237
- for paramName in thisTrial:
238
- exec('{} = thisTrial[paramName]'.format(paramName))
239
-
240
- # --- Prepare to start Routine "trial" ---
241
- continueRoutine = True
242
- routineTimer.add(1.500000)
243
- # update component parameters for each repeat
244
- image.setImage(stimFile)
245
- # keep track of which components have finished
246
- trialComponents = [image]
247
- for thisComponent in trialComponents:
248
- thisComponent.tStart = None
249
- thisComponent.tStop = None
250
- thisComponent.tStartRefresh = None
251
- thisComponent.tStopRefresh = None
252
- if hasattr(thisComponent, 'status'):
253
- thisComponent.status = NOT_STARTED
254
- # reset timers
255
- t = 0
256
- _timeToFirstFrame = win.getFutureFlipTime(clock="now")
257
- trialClock.reset(-_timeToFirstFrame) # t0 is time of first possible flip
258
- frameN = -1
259
-
260
- # --- Run Routine "trial" ---
261
- while continueRoutine and routineTimer.getTime() > 0:
262
- # get current time
263
- t = trialClock.getTime()
264
- tThisFlip = win.getFutureFlipTime(clock=trialClock)
265
- tThisFlipGlobal = win.getFutureFlipTime(clock=None)
266
- frameN = frameN + 1 # number of completed frames (so 0 is the first frame)
267
- # update/draw components on each frame
268
-
269
- # *image* updates
270
- if image.status == NOT_STARTED and tThisFlip >= 0.5-frameTolerance:
271
- # keep track of start time/frame for later
272
- image.frameNStart = frameN # exact frame index
273
- image.tStart = t # local t and not account for scr refresh
274
- image.tStartRefresh = tThisFlipGlobal # on global time
275
- win.timeOnFlip(image, 'tStartRefresh') # time at next scr refresh
276
- image.setAutoDraw(True)
277
- if image.status == STARTED:
278
- # is it time to stop? (based on global clock, using actual start)
279
- if tThisFlipGlobal > image.tStartRefresh + 1.0-frameTolerance:
280
- # keep track of stop time/frame for later
281
- image.tStop = t # not accounting for scr refresh
282
- image.frameNStop = frameN # exact frame index
283
- win.timeOnFlip(image, 'tStopRefresh') # time at next scr refresh
284
- image.setAutoDraw(False)
285
-
286
- # check for quit (typically the Esc key)
287
- if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]):
288
- core.quit()
289
-
290
- # check if all components have finished
291
- if not continueRoutine: # a component has requested a forced-end of Routine
292
- break
293
- continueRoutine = False # will revert to True if at least one component still running
294
- for thisComponent in trialComponents:
295
- if hasattr(thisComponent, "status") and thisComponent.status != FINISHED:
296
- continueRoutine = True
297
- break # at least one component has not yet finished
298
-
299
- # refresh the screen
300
- if continueRoutine: # don't flip if this routine is over or we'll get a blank screen
301
- win.flip()
302
-
303
- # --- Ending Routine "trial" ---
304
- for thisComponent in trialComponents:
305
- if hasattr(thisComponent, "setAutoDraw"):
306
- thisComponent.setAutoDraw(False)
307
- trials.addData('image.started', image.tStartRefresh)
308
- trials.addData('image.stopped', image.tStopRefresh)
309
- thisExp.nextEntry()
310
-
311
- # completed 1 repeats of 'trials'
312
-
313
- # completed 2 repeats of 'blocks'
314
-
315
-
316
- # --- End experiment ---
317
- # Flip one final time so any remaining win.callOnFlip()
318
- # and win.timeOnFlip() tasks get executed before quitting
319
- win.flip()
320
-
321
- # these shouldn't be strictly necessary (should auto-save)
322
- thisExp.saveAsWideText(filename+'.csv', delim='auto')
323
- thisExp.saveAsPickle(filename)
324
- logging.flush()
325
- # make sure everything is closed down
326
- if eyetracker:
327
- eyetracker.setConnectionState(False)
328
- thisExp.abort() # or data files will save again on exit
329
- win.close()
330
- core.quit()
@@ -1,61 +0,0 @@
1
- import os
2
- import random
3
- from PIL import Image, ImageDraw
4
-
5
- # Grid parameters
6
- grid_size = 100 # Size of each grid square
7
- gap_size = 5 # Size of the gap between grid squares
8
- num_rows = 3 # Number of rows in the grid
9
- num_cols = 3 # Number of columns in the grid
10
- total_grids = num_rows * num_cols
11
- num_images = 10 # Number of images to create
12
-
13
- # Specify the number of white and pink squares you want in each image
14
- # Possibly to use 0 if you don't want that colour
15
- num_white_squares = 1
16
- num_pink_squares = 1
17
-
18
- # Create the "stimuli" folder if it doesn't exist
19
- if not os.path.exists("stimuli"):
20
- os.makedirs("stimuli")
21
-
22
- # Calculate total image size including gaps
23
- image_width = num_cols * (grid_size + gap_size) - gap_size
24
- image_height = num_rows * (grid_size + gap_size) - gap_size
25
-
26
- # Create 10 images
27
- for image_index in range(1, num_images + 1): # Start indexing from 1
28
- # Create a new blank image
29
- image = Image.new("RGB", (image_width, image_height), "white")
30
- draw = ImageDraw.Draw(image)
31
-
32
- # Randomly choose positions for the white grids
33
- white_grid_indices = random.sample(range(total_grids), num_white_squares)
34
-
35
- # Randomly choose positions for the pink grids, excluding white grid positions
36
- pink_grid_indices = random.sample([i for i in range(total_grids) if i not in white_grid_indices], num_pink_squares)
37
-
38
- # Fill the grids with black, white, and pink colors
39
- for row in range(num_rows):
40
- for col in range(num_cols):
41
- x0 = col * (grid_size + gap_size)
42
- y0 = row * (grid_size + gap_size)
43
- x1 = x0 + grid_size
44
- y1 = y0 + grid_size
45
-
46
- grid_index = row * num_cols + col
47
-
48
- if grid_index in white_grid_indices:
49
- color = "white"
50
- elif grid_index in pink_grid_indices:
51
- color = "pink"
52
- else:
53
- color = "black"
54
-
55
- draw.rectangle([x0, y0, x1, y1], fill=color)
56
-
57
- # Save the image in the "stimuli" folder
58
- image_path = os.path.join("stimuli", f"grid_image_{image_index}.png")
59
- image.save(image_path)
60
-
61
- print("Images created and saved in the 'stimuli' folder.")
@@ -1,91 +0,0 @@
1
- <PsychoPy2experiment encoding="utf-8" version="3.2.0">
2
- <Settings>
3
- <Param name="Audio latency priority" updates="None" val="Use prefs" valType="str" />
4
- <Param name="Audio lib" updates="None" val="Use prefs" valType="str" />
5
- <Param name="Completed URL" updates="None" val="" valType="str" />
6
- <Param name="Data filename" updates="None" val="u'data/%s_%s' % (expName, expInfo['date'])" valType="code" />
7
- <Param name="Enable Escape" updates="None" val="True" valType="bool" />
8
- <Param name="Experiment info" updates="None" val="{'rows': '[2,3]'}" valType="code" />
9
- <Param name="Force stereo" updates="None" val="True" valType="bool" />
10
- <Param name="Full-screen window" updates="None" val="True" valType="bool" />
11
- <Param name="HTML path" updates="None" val="html" valType="str" />
12
- <Param name="Incomplete URL" updates="None" val="" valType="str" />
13
- <Param name="JS libs" updates="None" val="packaged" valType="str" />
14
- <Param name="Monitor" updates="None" val="testMonitor" valType="str" />
15
- <Param name="Save csv file" updates="None" val="False" valType="bool" />
16
- <Param name="Save excel file" updates="None" val="False" valType="bool" />
17
- <Param name="Save log file" updates="None" val="True" valType="bool" />
18
- <Param name="Save psydat file" updates="None" val="True" valType="bool" />
19
- <Param name="Save wide csv file" updates="None" val="True" valType="bool" />
20
- <Param name="Screen" updates="None" val="1" valType="num" />
21
- <Param name="Show info dlg" updates="None" val="True" valType="bool" />
22
- <Param name="Show mouse" updates="None" val="False" valType="bool" />
23
- <Param name="Units" updates="None" val="pix" valType="str" />
24
- <Param name="Use version" updates="None" val="" valType="str" />
25
- <Param name="Window size (pixels)" updates="None" val="[1920, 1080]" valType="code" />
26
- <Param name="blendMode" updates="None" val="avg" valType="str" />
27
- <Param name="color" updates="None" val="$[0,0,0]" valType="str" />
28
- <Param name="colorSpace" updates="None" val="rgb" valType="str" />
29
- <Param name="expName" updates="None" val="shapeMaker" valType="str" />
30
- <Param name="exportHTML" updates="None" val="on Sync" valType="str" />
31
- <Param name="logging level" updates="None" val="exp" valType="code" />
32
- <Param val="0" valType="code" updates="constant" name="runMode" /></Settings>
33
- <Routines>
34
- <Routine name="trial">
35
- <CodeComponent name="code">
36
- <Param name="Begin Experiment" updates="constant" val="baseShape = visual.Rect(win, units=&quot;pix&quot;, size=(600,600), fillColor=&quot;white&quot;)&amp;#10;&amp;#10;def randCol():&amp;#10; if random() &gt;=.5:&amp;#10; return &quot;black&quot;&amp;#10; return &quot;white&quot;&amp;#10;&amp;#10;def createGrid(rows, size, pos, names):&amp;#10; inc = (size/rows)/2&amp;#10; if rows == 2:&amp;#10; rowStart = pos[0] - size/4&amp;#10; colStart = pos[1] + size/4&amp;#10; else:&amp;#10; rowStart = pos[0] - size/2&amp;#10; colStart = pos[1] + size/2&amp;#10; row, col = rowStart/rows, colStart/rows&amp;#10; counter = 0&amp;#10; &amp;#10; grid = []&amp;#10; for i in range(rows):&amp;#10; for j in range(rows):&amp;#10; grid.append(visual.Rect(win, name=names[counter], units='pix', size = [size/rows, size/rows], pos= [row,col], lineColor= 'lightgrey', fillColor=randCol()))&amp;#10; row += inc&amp;#10; counter += 1&amp;#10; col -= inc&amp;#10; row = rowStart/rows&amp;#10; return grid&amp;#10;&amp;#10;def drawGrid(grid):&amp;#10; for i in grid:&amp;#10; i.draw()&amp;#10;&amp;#10;imageCounter = 0" valType="extendedCode" />
37
- <Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode" />
38
- <Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode" />
39
- <Param name="Begin Routine" updates="constant" val="grid = createGrid(int(expInfo['rows']), 600, (0,0), names=[1,2,3,4,5,6,7,8,9])&amp;#10;captured = False" valType="extendedCode" />
40
- <Param name="Code Type" updates="None" val="Py" valType="str" />
41
- <Param name="Each Frame" updates="constant" val="for i in range(60):&amp;#10; baseShape.draw()&amp;#10; drawGrid(grid)&amp;#10; if i == 20 and not captured:&amp;#10; win.getMovieFrame(buffer='back')&amp;#10; captured = True&amp;#10; " valType="extendedCode" />
42
- <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode" />
43
- <Param name="End Experiment" updates="constant" val="" valType="extendedCode" />
44
- <Param name="End JS Experiment" updates="constant" val="" valType="extendedCode" />
45
- <Param name="End JS Routine" updates="constant" val="" valType="extendedCode" />
46
- <Param name="End Routine" updates="constant" val="win.saveMovieFrames('design{}_{}pieces.jpg'.format(imageCounter,int(expInfo['rows'])**2))&amp;#10;imageCounter += 1" valType="extendedCode" />
47
- <Param name="disabled" updates="None" val="False" valType="bool" />
48
- <Param name="name" updates="None" val="code" valType="code" />
49
- </CodeComponent>
50
- <TextComponent name="text">
51
- <Param name="color" updates="constant" val="white" valType="str" />
52
- <Param name="colorSpace" updates="constant" val="rgb" valType="str" />
53
- <Param name="disabled" updates="None" val="False" valType="bool" />
54
- <Param name="durationEstim" updates="None" val="" valType="code" />
55
- <Param name="flip" updates="constant" val="" valType="str" />
56
- <Param name="font" updates="constant" val="Arial" valType="str" />
57
- <Param name="languageStyle" updates="None" val="LTR" valType="str" />
58
- <Param name="letterHeight" updates="constant" val="0.1" valType="code" />
59
- <Param name="name" updates="None" val="text" valType="code" />
60
- <Param name="opacity" updates="constant" val="1" valType="code" />
61
- <Param name="ori" updates="constant" val="0" valType="code" />
62
- <Param name="pos" updates="constant" val="(0, 0)" valType="code" />
63
- <Param name="saveStartStop" updates="None" val="True" valType="bool" />
64
- <Param name="startEstim" updates="None" val="" valType="code" />
65
- <Param name="startType" updates="None" val="time (s)" valType="str" />
66
- <Param name="startVal" updates="None" val="0.0" valType="code" />
67
- <Param name="stopType" updates="None" val="duration (s)" valType="str" />
68
- <Param name="stopVal" updates="constant" val=".4" valType="code" />
69
- <Param name="syncScreenRefresh" updates="None" val="True" valType="bool" />
70
- <Param name="text" updates="constant" val="" valType="str" />
71
- <Param name="units" updates="None" val="from exp settings" valType="str" />
72
- <Param name="wrapWidth" updates="constant" val="" valType="code" />
73
- </TextComponent>
74
- </Routine>
75
- </Routines>
76
- <Flow>
77
- <LoopInitiator loopType="TrialHandler" name="trials">
78
- <Param name="Selected rows" updates="None" val="" valType="str" />
79
- <Param name="conditions" updates="None" val="None" valType="str" />
80
- <Param name="conditionsFile" updates="None" val="" valType="str" />
81
- <Param name="endPoints" updates="None" val="[0, 1]" valType="num" />
82
- <Param name="isTrials" updates="None" val="True" valType="bool" />
83
- <Param name="loopType" updates="None" val="random" valType="str" />
84
- <Param name="nReps" updates="None" val="5" valType="code" />
85
- <Param name="name" updates="None" val="trials" valType="code" />
86
- <Param name="random seed" updates="None" val="" valType="code" />
87
- </LoopInitiator>
88
- <Routine name="trial" />
89
- <LoopTerminator name="trials" />
90
- </Flow>
91
- </PsychoPy2experiment>
Binary file
@@ -1,38 +0,0 @@
1
- frame_cycles.thisRepN,frame_cycles.thisTrialN,frame_cycles.thisN,frame_cycles.thisIndex,trials.startVal,trials.startValSd,trials.label,trials.thisIndex,trials.thisRepN,trials.thisN,trials.direction,trials.stepSize,trials.stepType,trials.intensity,trials.response,participant,session,date,expName,psychopyVersion,frameRate,
2
- ,,,,0.8,0.2,start low,0,1,0,start,4,lin,0.8,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
3
- ,,,,3,0.2,start high,1,1,1,start,4,lin,3,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
4
- ,,,,0.8,0.2,start low,0,2,2,start,4,lin,0.9742382824467385,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
5
- ,,,,3,0.2,start high,1,2,3,start,4,lin,2.9939328828188576,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
6
- ,,,,0.8,0.2,start low,0,3,4,start,4,lin,1.0829717988169412,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
7
- ,,,,3,0.2,start high,1,3,5,start,4,lin,2.9543043722999296,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
8
- ,,,,0.8,0.2,start low,0,4,6,start,4,lin,1.17081333883496,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
9
- ,,,,3,0.2,start high,1,4,7,start,4,lin,2.9191776572267263,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
10
- ,,,,3,0.2,start high,1,5,8,start,4,lin,3.0469823681526607,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
11
- ,,,,0.8,0.2,start low,0,5,9,start,4,lin,1.2470220577784352,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
12
- ,,,,0.8,0.2,start low,0,6,10,start,4,lin,1.316132170465703,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
13
- ,,,,3,0.2,start high,1,6,11,start,4,lin,3.021452166430676,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
14
- ,,,,0.8,0.2,start low,0,7,12,start,4,lin,1.3022729364739205,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
15
- ,,,,3,0.2,start high,1,7,13,start,4,lin,3.119441751241255,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
16
- ,,,,3,0.2,start high,1,8,14,start,4,lin,3.097244825678901,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
17
- ,,,,0.8,0.2,start low,0,8,15,start,4,lin,1.289403232336042,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
18
- ,,,,3,0.2,start high,1,9,16,start,4,lin,3.185617137511655,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
19
- ,,,,0.8,0.2,start low,0,9,17,start,4,lin,1.342119422611197,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
20
- ,,,,0.8,0.2,start low,0,10,18,start,4,lin,1.3926118925672575,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
21
- ,,,,3,0.2,start high,1,10,19,start,4,lin,3.166022700065317,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
22
- ,,,,0.8,0.2,start low,0,11,20,start,4,lin,1.381350089846174,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
23
- ,,,,3,0.2,start high,1,11,21,start,4,lin,3.24599595749914,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
24
- ,,,,3,0.2,start high,1,12,22,start,4,lin,3.228460757314609,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
25
- ,,,,0.8,0.2,start low,0,12,23,start,4,lin,1.4273690408286321,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
26
- ,,,,0.8,0.2,start low,0,13,24,start,4,lin,1.417165322346265,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
27
- ,,,,3,0.2,start high,1,13,25,start,4,lin,3.213040878255229,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
28
- ,,,,3,0.2,start high,1,14,26,start,4,lin,3.1992454352827493,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
29
- ,,,,0.8,0.2,start low,0,14,27,start,4,lin,1.460758223208908,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
30
- ,,,,0.8,0.2,start low,0,15,28,start,4,lin,1.4511913159428556,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
31
- ,,,,3,0.2,start high,1,15,29,start,4,lin,3.1871349093881,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
32
- ,,,,0.8,0.2,start low,0,16,30,start,4,lin,1.442371565991715,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
33
- ,,,,3,0.2,start high,1,16,31,start,4,lin,3.238361057089684,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
34
- ,,,,3,0.2,start high,1,17,32,start,4,lin,3.2266413468886985,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
35
- ,,,,0.8,0.2,start low,0,17,33,start,4,lin,1.4789059563524067,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
36
- ,,,,3,0.2,start high,1,18,34,start,4,lin,3.216211958511995,0,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
37
- ,,,,0.8,0.2,start low,0,18,35,start,4,lin,1.4705100761905188,1,,001,2022-05-18_14h18.29.439,gamma_correction_visual,2022.2.0dev3,59.93152834587774,
38
- ,,,,3,0.2,start high,1,19,36,start,4,lin,3.261143633039598,,,,,,,,