PsychoPy 2023.2.0
Highlights
- Routine settings: Routines now have parameters of their own, giving control over their max duration, skipping the Routine altogether, or changing the way the window looks just for that Routine.
- Sort by priority: Columns in the data file can now be given a "priority" value, with the option to sort by priority instead of chronologically.
- Whisper transcription PLUGIN for Microphone: Using the OpenAI backend, Microphone transcriptions can be done quicker and more accurately, and include timing info for each word.
- Progress bar component: A visual component to show progress along an axis.
- Builder search dialog: Search for values across your whole experiment, then jump to the specific Routine/Component where it's present. Makes debugging much easier.
- Most stimuli now support a
draggable
attribute. If set todraggable=True
then that stimulus should check/update position on each frame usingstim.doDragging()
Behaviour changes
- Eyetrackers (Tobii, SRR Eyelink, Gazepoint, PupilLabs) are now plugins rather than built-in, in keeping with the drive to cut down the dependencies of core PsychoPy
New features and enhancements
- PsychoJS: Mobile-friendly viewport settings. by @lightest in #5380
- Allow experiment to run with different clocks (e.g. wall clock time instead of starting at t=0) by @TEParsons in #5621
- PsychoJS ShapeStim from Builder now supports custom vertices by @TEParsons in #5522
- Numerous improvements to plugins system and dialog
- Added
abortCurrentTrial
(Python only for now) method toTrialHandler2
andMultiStairHandler
by @mdcutone in #5423 - Better performance and fixes to FFPyPlayer movie engine
- Added
letterSpacing
attribute to Textbox by @TEParsons in #5487 - New
Session
class to run multiple experiments - create your stimulus window once and run multiple experiments in it, with the ability to pause/resume/stop the experiment. (Python only for now) Session can be controlled overwebsockets
using the Liaison server - Full support for Python 3.10, wxPython 4.2, and PyQt6
- Preserve tab order for Routines when saving/loading an experiment by @TEParsons in #5517
- Added audio settings to Camera component by @mdcutone in #5681
- Improved streaming of camera to disk by @mdcutone in #5551
- Window now explains it is performing timing test by @mdcutone in #5511
- Keyboard Components from Builder will store duration if available (if release has already occurred) by @TEParsons in #5569
- Show status text for objects in Flow panel by @TEParsons in #5443
- Make psychopy.Window title (and icon in pyglet) settable by @TEParsons in #5540
- UI enhancements to Coder and Runner by @TEParsons in #5539
- Multihead support for X11/Linux by @mdcutone in #5520
- Plugins Dialog now checks for version compatibility with PsychoPy by @TEParsons in #5649
- Install plugins to subdirectories by @mdcutone in #5398
- Make Save & Edit/View buttons on README window more explicit by @TEParsons in #5523
- New option to abbreviate long component names in Preferences, fixes #5574 by @TEParsons in #5586
- Highlight selected Routine in Flow panel by @TEParsons in #5588
- Better Builder visualisation very large experiments by @TEParsons in #5618
- Lock Flow panel buttons to the left when scrolling by @TEParsons in #5620
- ExperimentHandler.addData() now has optional
row
argument to specify previous entry by @TEParsons in #5652 - Fixed useVersion warning untracked working tree files would be overwritten by @peircej in #5670
- Add param to control whether movies/sounds end when the Routine does, by @TEParsons in #5415
- Add "transparent" as named color by @TEParsons in #5689
- Radio button styling was not work in Slider component in 2023.1, fixes #5661 (dev) by @TEParsons in #5691
- Allow expInfo fields to be marked as required (*) by @ainazay in #5543
- Fix VlcMovieStim by @marcpabst in #5702
- Added data file separator to expInfo by @EitanHemed in #5607
- Minor Textbox bugfixes by @ollie-d in #5723
- Extended autotranslate functions supported by py2js by @roelofsaj in #5713
- Submitting GitHub issues now supports templates by @shun2wang in #5732
- Numerous Documentation improvements by @fboers @kimDundas @patrickabolger @EitanHemed @larsoner @pmolfese
Bug fixes
- Fixed missing comma in Brush component code by @TEParsons in #5564
- Mouse position incorrect when desktop scaling not 100% on Windows by @mdcutone in #5758
- Fixed
AttributeError: 'SoundPTB' object has no attribute 'isFinished'
by @mdcutone in #5541 - Better handling of missing audio libraries - allow the app to load always and fallback to PsychToolBox if possible
- Better handling of Mouse.getPos() when no windows open by @peircej in #5763
- Param updates code for Sound in JS was using Python syntax by @TEParsons in #5762
- More informative error when useVersion fails to write script by @TEParsons in #5761
- saveAsWideText was using deprecated DataFrame.append function by @TEParsons in #5507
- Polygon/ROI vertices caused error if trying to set each frame by @TEParsons in #5686
- Don't crash if user attempts to initialise ioHub more than once by @TEParsons in #5533
- Added log file entry for Keyboard.clearEvents() by @peircej in #5558
- Fixed missing movie file in MoviePause.py demo by @EitanHemed in #5583
- Coder source tree thought any variable name beginning with
def
was a function def by @TEParsons in #5581 - README filename wasn't being updated for new frames by @TEParsons in #5593
- Fix Markdown parsing on README files by @TEParsons in #5572
- Ignore Escape in Keyboard component if needed to end experiment by @TEParsons in #5598
- Joystick component - SyntaxError in generated code by @EitanHemed in #5601
- Error
got an unexpected keyword argument "reset"
when trying to pause using PTB sounds by @peircej in #5619 - PsychoPJS: Fix issue with first frame of image being shown as default.png in JS by @TEParsons in #5716
- Add
self
to list of disallowed Component names by @TEParsons in #5742 - Split compound Survey answers into individual columns by @TEParsons in #5734
- Fixed audio file not resetting during (Python) experiment by @mdcutone in #5712
- If trying to load previously open file that is corrupted, do at least open the app (with an empty window) by @TEParsons in #5696
- Better catching of name errors in conditions file by @TEParsons in #5654
New Contributors
- @ranibaron made their first contribution in #5394
- @patrickabolger made their first contribution in #5414
- @fboers made their first contribution in #5482
- @gtosh4 made their first contribution in #5609
- @ainazay made their first contribution in #5543
- @marcpabst made their first contribution in #5702
Full Changelog: 2023.1.2...2023.2.0rc7