Skip to content

PsychoPy 2023.2.0

Compare
Choose a tag to compare
@peircej peircej released this 28 Jul 12:56
· 2066 commits to dev since this release
a23ba5f

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 to draggable=True then that stimulus should check/update position on each frame using stim.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 to TrialHandler2 and MultiStairHandler 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 over websockets 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

Full Changelog: 2023.1.2...2023.2.0rc7