Note
Version numbers
In general, when a new feature is added the second number is incremented (e.g. 1.00.05 -> 1.01.00). Those releases might break previous code you’ve written because new features often need slight changes to other things. Changes to the final digit (1.00.05 -> 1.00.06) indicate a bug-fixing release or very minor new features that shouldn’t require code changes from the user.
CHANGES, which are identified in this dark red text, typically indicate things that alter the PsychoPy behaviour in a way that could break compatibility. Be especially wary of those!
FIXED:
FIXED:
FIXED:
It’s all about the new timing improvements!
TIMING improvements:
Also ADDED:
FIXED:
We’ve improved keyboard timing a great deal.
As of PsychoPy 3.1 we are now using the underlying code of the kbQueue calls in
Psychophysics Toolbox. The C code from those calls was ported to a new Python
package in late 2018 and this is now the basis of the new Keyboard
class.
This only works on 64-bit Python3 installations, but the Keyboard class will
fall back to the old event.GetKeys calls where the psychtoolbox package is
not available.
FIXED:
FIXED:
FIXED:
FIXED:
Keyboard
:by accidentally creating lots of Kyeboards while checking for ‘escape’ - durations were being reported with correct magnitude but as negative values commit:e43e47460 - problem on Windows if keyboard device name contained unicode (that problem was actually in psychtoolbox package, now updated in Standalone) - on Windows, the ‘return’ key was being called ‘num_enter’
videos were not running online commit:9779579b6 commit:51b0824f7
fixed rounding error in filtering of NoiseStim commit:5d0e360d8
iohub waitKeys should act like getKeys if maxWait<=0 commit:e33f733f3
error if unicode items in the new Form class commit:8287674f4
ADDED:
ADDED:
FIXED:
NEW:
- faster than event.getKeys() (polling is asynchronous with drawing loop and the calls go direct to the USB rather than going via the operating system key calls)
- supports keyDuration fields as well as rt for key down time
PsychoPy3 is the new phase of development including support for online studies at the Pavlovia.org experiment server. Many of the features here are relatively new and, although we have spent hundreds of hours developing and testing them you should be more cautious than ever checking your experiment and data outputs.
FIXED:
FIXED:
FIXED:
FIXED:
ADDED:
CHANGED: Slight change to creation of *new* experiments, which will now default to the units of ‘height’ rather than ‘use preferences’ (which led to potential confusion when the experiment moved to a different computer)
FIXED:
this will switch to height during HTML export commit:a686dbf52 - First push of a new project to Pavlovia didn’t note that remote now exists, so tried to “first push” again commit:f4134a670 - fixed detection of correct non-response in JavaScript outputs (so no-go works online) commit:0c3cea2b2 - added workaround for strange clash of sounddevice with input() commit:f99bef4a9 - various small fixes to iohub for Py3 commit:e6a2169d6 commit:4ca503399 commit:cf432bc3c
ADDED:
FIXED:
FIXED:
ADDED:
Although there were several beta versions preceding this, the changes described below are the broader changes since 1.90.3 (the previous “stable” version).
NEW:
Many bugs have also been fixed, notably in terms of audio library problems and memory problems with MovieStim3.
FIXED:
FIXED:
FIXED:
FIXED:
ADDED:
FIXED: an issue with the app not starting (if git not installed)
PsychoPy3 is the new phase of development including support for online studies at the Pavlovia.org experiment server. Right now this is BETA SOFTWARE. It WILL contain bugs but we’re fixing them as fast as we/you can find them!
NEW:
This is a very major refactor of many parts of the PsychoPy code. Treat very carefully for the first few bug-fix releases as there are likely to be errors some of which could be catastrophic to your data!!
This is the first attempt at support for Python 3, with maintained support for Python 2.7. Note that both are available as Standalone packages for Win and Mac. The Python3.6 version is labelled as Py3 in the download file.
Stick to Python 2.7 if you want your script to break less. If you upgrade to Python 3 then you’ll need to change any print statements to include brackets and you may also get some new errors springing up about unicode/bytes objects.
Released July 2018
FIXED:
Released May 2018
FIXED:
Released April 2018
ADDED:
FIXED:
Released March 2018
ADDED:
CHANGED:
A bug-fix release to solve a few machine-specific issues.
Released: Sept 2017
There was an error building the 1.85.3 release. Rather than building a bug-fix-inly release, version 1.85.3 has accidentally included some substantial code refactoring intended for the 1.86.0 release.
This version, which we will call 1.85.4 is to replace that 1.85.3 release and provides the same fixes (but not the code refactoring) that was intended in 1.85.3
Released: Aug 2017
This release fixes several bugs but it does also add 2 new dependencies:
Released: June 2017
Released: April 2017
* textbox v textstim demo wasn’t working commit:b2913c124 * error with colors when using TextStim with blendmode=’add’ * errors in installer package:
- windows installer could overwrite system path setting rather than append (NSIS short-string problem came back!)
- freetype 32 bit dll is being provided again (was in matplotlib before but disappeared?)
Released: Feb 2017
Released: Sept 2016
Released: Sept 2016
Builder Keyboard component was treating non-response as correct answer. #1230 Thanks Jarrod
MovieStim2 (opencv) now compatible with newer versions of opencv (v3.x) #1223
SSL certificates for OS X causing failure to connect to osf.io for projects
dependencies added/updated in Standalone packages:
- pyHook, pygame, pylink 0.3.2, (win32)
- pysoundcard (OS X)
hello_world demo crashing the app on load
Released: Aug 2016
CHANGED:
- MAJOR REFACTOR: A lot of code has been refactored to be more in line with a thing called PEP8. If that doesn’t mean anything to you don’t worry, it shouldn’t affect you. If you like that sort of thing, sorry we didn’t got further and get rid of camelCase. ;-)
- setting ShapeStim vertices dynamically now requires an explicit assignment of the new vertex list to shape.vertices; this can be slow for filled shapes with many vertices. See shapes.py, selfx example.
- Some file names and locations have changed. To update, replace OLD form in your scripts with NEW form:
- OLD form –> NEW form
- Deprecated since 2012, must now update: * from psychopy import calib –> from psychopy import monitors as calib (or just use monitors) * from psychopy import bits –> from psychopy.hardware.crs import bits * from psychopy import log –> from psychopy import logging
- Newly deprecated (the old way still works but logs a warning): * from psychopy import _shadersPyglet –> from psychopy.visual import shaders * from psychopy import gamma –> from psychopy.visual import gamma * from psychopy import filters –> from psychopy.visual import filters
- API change (only affects people who write their own Builder components): * from psychopy.app.builder.components._visual import VisualComponent –> from psychopy.app.builder.components._base import BaseVisualComponent
- PyQt is now default over wx for dialog boxes (if either PyQt4 or PyQt5 are installed). Also fixed bug to support PyQt5
- No Static Components are created by default (e.g. ISI). Have to add them manually
Released: Feb 2016
Released: Dec 2015 (NB 1.83.02 was never publicly released)
Released: Oct 2015
Released: Oct 2015
Released: Aug 2015
- FIXED: TrialHandler wasn’t saving extraInfo (was overwritten during trials) #815
- FIXED: don’t have pickle file re-saving itself when it comes back from pickling #833
- FIXED: Mouse Component could crash data saving if no response was made #839
- FIXED: memory leaks in MovieStim2 (opencv backend) #838 and #919
- FIXED: checked that window positions are integers #854
- FIXED: OSX “10.10” incorrectly looked older than “10.9” #866
- FIXED: RatingScale would show “False” for scale description in some cases #870
- FIXED: problem with microphone saving files that end with w, a or v #875
- FIXED: MonitorCenter failing to create new monitor #887
- FIXED: universal line endings in csv outputs files #889
- FIXED: unicode in conditions files #892
- FIXED: iohub not detecting Linux mouse events #894
- FIXED: if output file is set to be stdout this should then be closed #902
- FIXED: don’t abbreviate the path name of conditions files #913
- FIXED: minor error in logging for rush() under win32 #914
- FIXED: unicode issues in user preferences panel #930 #932
- FIXED: MonitorCenter won’t lock you out if given an invalid screen number #937
- FIXED: mono++ mode in CRS Bits++/#/Display++ is now using full dynamic range (previously 8bit blue gun overlay was overriding the 16bit screen buffer)
Released: Feb 2015
Released: Feb 2015
Released: Jan 2015
ENHANCED: slightly faster rendering of movies for high-rate HD stimuli
CHANGED: ‘pandas’ is now a strict requirement for the ‘psychopy.data’ module
FIXED: Builder sounds from file no longer loop indefinitely
FIXED: Builder: microphone recordings are explicitly stopped at the end of every trial
FIXED: Static Components could become hidden by having unknown durations and then couldn’t be changed. Now they are always shown even when times are unknown (Jeremy)
ADDED: improved support for Cambridge Research Systems Display++ and Bits# devices:
- Color++ and Mono++ modes now supported using shaders
- fixed some bugs with search for identityLUT in Display++
ADDED: Psi adaptive staircase method (thanks Joseph Glavan for writing this)
ADDED: bidi and xlwt packages to the Standalone distribution
ADDED: support for Mouse.setPos() under pyglet back end (Jeremy)
ADDED: support for PST response box (Richard Höchenberger)
FIXED: extraInfo was not being saved in wide-text format
FIXED: Builder was not respecting order for drawing polygon - it was always drawn first
ADDED: Builder now supports ‘degFlat and ‘degFlatPos’ units and documentation has been added for these
Released: Dec 2014
Released: Oct 2014
Released: Oct 2014
Released: Sept 2014
IMPROVED: cross-version compatibility:
- In Builder experiments from ‘future’ versions can be opened and unknown objects will be ignored (but kept)
- In Code you can now do import psychopy; psychopy.useVersion(‘X.XX.XX’) to switch to any version greater than 1.76.00 (including versions not installed and future versions). This only affects the lib, not the application. (Thanks Erik Kastman for most of the work on this)
IMPROVED: better unit tests for visual stimuli to prevent future bugs
CHANGED: MovieStim was right-left flipping movies and this has been corrected. If you had been working around that by setting flipVertical=True then you’ll need to undo that correction
IMPROVED: Can now select a subset of conditions in Builder loops and in data.importConditions() function (thanks Mike MacAskill for help)
IMPROVED: In Builder, loops that don’t reflect trials (e.g. stimuli within a trial or blocks of trials) can be flagged as such, resulting in neater data files
ADDED: support for additional hardware:
basic support for interacting with BlackBoxToolkit v2 psychopy.hardware.bbtk
CHANGED: added basic support for CRS Bits# in psychopy.hardware.crs. New way to interface with Bits++ as well, using a class rather than a Window argument. See demo in demos>hardware
labjack digital outputs can be used as a Parallel Port Component in Builder
the screen rendering can now include a warping step to simulate spherical, cylindrical or custom warping (Jay Borseth)
the screen now supports ‘frame packing’ whereby sequential frames can be packed into one, as the red, green and blue channels for monochrome high-rate projectors (Jay Borseth)
ioHub eye tracker interface for GazePoint GP3 (Martin Guest)
ioHub Serial device:
- Support for simple fixed width or marker delimited serial rx stream -> device event parsing.
- Demo created showing usage with PST Response box added (Richard Höchenberger)
ioHub ioSync device:
- Use Teensy 3.0 / 3.1 MCU. Connect via USB 2.0.
- 8 / 8 digital inputs / outputs
- 8 analog inputs (~12 - 13 bit effective resolution)
- 1000 Hz sampling rate for analog and digital inputs.
- Keyboard Host support (useful for testing keyboard delay variability from software alone)
IMPROVED packaging:
- can now install on OSX using miniconda/anaconda distribution (Erik Kastman)
- pyopencv (cv2) added to Standalone as an alternative to avbin
- PySoundCard and PySoundFile added to Standalone
- psutil added to Standalone
- application is now compatible with wxPython 2.8, 2.9 and 3.0
ADDED: MovieStim2 stimulus type. Compared to MovieStim, improved performance and wider range of media encoding support has been reported from testing feedback on all OS’s.
IMPROVED: stimulus attributes:
- Nearly all stimulus attributes now support new syntax, e.g. stim.pos = [0,0] as well as the previous stim.setPos([0,0]). All docs are update to reflect this change.
- All numeric stimulus attributes now support operations. Use e.g. stim.pos += [0,0.5]. Read more in Operations.
- Many more stimulus attributes can now be set after initialization. They have the same name as the init parameters. E.g. stim.win = mySecondWindow changes which Window the stimulus is drawn to
IMPROVED: logging
- CHANGED: ‘log=None’ and ‘autoLog=None’ inherits from parents, with ‘visual.Window’ at the top of the hierarchy. None is now default for all stimuli and setter methods.
- FIXED: removed unnecessary (e.g. duplicate) logging.
- IMPROVED: unnamed stimuli are now given a default name in the logs for easier identification, e.g. “unnamed ShapeStim”.
IMPROVED: you can now specify the standard deviation (default=3) for gaussian mask in various stimuli by setting e.g. maskParams={‘sd’:5} during init or after init.
ADDED: language localization (Builder and Coder)
- Can now display the app menus, tooltips, and so on in a language other than US English (selectable via prefs -> app -> locale)
- Almost all displayed text can be translated (Jeremy Gray, Hiroyuki Sogo)
- A Japanese translation is available (Hiroyuki Sogo)
- Other translations will be easy to add; see online developer notes on using Poedit
IMPROVED: psychopy.ioHub
- CHANGED: Keyboard device and events are more user-friendly. Note: This release is not backwards compatible with earlier versions of the ioHub Keyboard device or event data file. Please see documentation for details.
- Backend integration between iohub and psychopy continues to improve.
- ioHub can now be used in OS X 10.9 with PsychoPy Coder. NOTE: Must add Coder app to accessibility list.
- Several bug fixes.
FIXED: several other minor bugs (that would have given exceptions if encountered). Thanks particularly to Philip Wiesemann for finding several of these
FIXED: machines that didn’t support shaders or framebuffer objects were raising an error on win.flip() if the useFBO argument was not manually set to False. Machines that don’t support the new rendering methods are now handled more gracefully
Released: Aug 2014
FIXED: bug with using numpy arrays as masks; they were being interpreted as floats but should have been bytes
Released: Aug 2014
FIXED: bug with timing of keys when using the timestamped argument
Released: June 2014
Released: June 2014
Released: April 2014
Released: April 2014
Released: April 2014
Released: Mar 2014
Released: Mar 2014
Improvements to user interface:
- the glitch that prevented scrolling the Routine view is gone (win32)
- dialog boxes in the Builder now have tabs for categories of controls
- Code Components have much more space for each piece of code (again due to tabs)
ADDED: In Builder you can now customise the data filename/path in the Experiment Settings. Any variables in the expInfo dialog box can be used to create this path. See dataFileName for further info
ADDED: support for advanced rendering modes. Can now ‘add’ rather than average when using transparency. This is better for visual compound stimuli like plaids, and essential for colored anaglyph stimuli where the resulting image needs to be the sum of the left and right eye images.
ADDED: new visual unit options: ‘degFlatPos’ and ‘degFlat’ provide more accurate conversions from degrees to pixels for drawing stimuli (although they’re more accurate, accounting for the flat screen, they may look strange because 1 degree gets larger with greater eccentricity on a flat screen). The previous unit ‘deg’ still exists and remains default as, for many studies, these are expected
ADDED: wider support for the functions contains and overlaps. Most stimuli now have these methods. Also they can now be used irrespective of whether the stimulus and other object have the same units (they used only to work for units of pix)
ADDED: support for other shapes in the Aperture stimulus (and its Builder Component). You can either specify the number of vertices nVert and a size to get a regular polygon aperture, or you can provide a set of arbitrary vertices as your shape argument
CHANGED: Size of ‘square’ or ‘triangle’ apertures used to represent the radius of the circle on which their vertices lay. It is now a height/width as you would more likely expect. This means aperture code in scripts may need rewriting to be smaller.
IMPROVED: stimulus duration is now more precise when using duration (s) or time (s) although using nFrames option is still advised for brief stimuli
IMPROVED: there are now fewer irrelevant lines in the log file as stimuli are initially created
IMPROVED: Staircase loops in Builder now initialise just before the staircase is run, rather than at the start of the experiment. This means they can be controlled by an outer loop and, effectively, restarted
FIXED: ElementArrayStim can take Nx3 or 1x3 values for colors again
FIXED: variable names in Builder are now case-sensitive again (they were being forced to lower case when importing csv files)
FIXED: incorrect equation for the Cumulative Normal fitting function
FIXED: If your variable had a new line character in it this was causing a new line to be started in the csv data file. These are now handled correctly
ADDED: RatingScale markerStart position can be arbitrary, e.g., can start between items or beyond the end of scale
ADDED: RatingScale tickHeight can be used to control the height of tickMarks, including no tick marks (tickHeight=0)
ADDED: RatingScale marker=’hover’ is similar to HTML-style hovering over clickable elements
psychopy.visual.RatingScale Changes :
Released: Dec 2013
Released: Dec 2013
psychopy.iohub Changes :
Released: Aug 2013
Released: Aug 2013
StaticPeriod
classReleased: July 2013
Released: June 2013
Released: June 2013
The compatibility changes in this release below are likely to affect very few users.
(Released: Aug 2012)
(Released: Aug 2012)
(Released: July 2012)
(https://github.com/psychopy/psychopy)
Major changes (and compatibility changes):
Tweaks and fixes:
(Released: April 2012)
(Released: March 2012)
(Released: Feb 2012)
(Released: Jan 2012)
(Released: Jan 2012)
(Released: Jan 2012)
(rc1 Released: Nov 2011)
(Released: Oct 2011)
(Released: Sept 2011)
(Released: Aug 2011)
(Released: Aug 2011)
NB This version introduces a number of changes to Builder experiment files that will prevent files from this version being opened by earlier versions of PsychoPy
CHANGED use of allowedKeys in Keyboard Component. You used to be able to type ‘ynq’ to get those keys, but this was confusing when you then needed ‘’space’’ or ‘’left’’ etc. Now you must type ‘y’,’n’,’q’, which makes it more obvious how to include ‘space’,’left’,’right’…
CHANGED dot algorithm in DotStim. Previously the signalDots=same/different was using the opposite to Scase et al’s terminology, now they match. Also the default method for noiseDots was ‘position’ and this has been changed to ‘direction’. The documentation explaining the algorithms has been clarified. (see :ref:’dots’)
CHANGED ‘MovieStim.playing’ property to be called ‘MovieStim.status’ (in keeping with other stimuli)
CHANGED names:
- data.importTrialTypes is now data.importConditions
- forceEndTrial in Keyboard Component is now forceEndRoutine
- forceEndTrialOnPress in Mouse Component is now forceEndRoutineOnPress
- trialList and trialListFile in Builder are now conditions and conditionsFile, respectively
- ‘window units’ to set Component units is now ‘from exp settings’ for less confusion
CHANGED numpy imports in Builder scripts:
- only a subset of numpy features are now imported by default: numpy: sin, cos, tan, log, log10, pi, average, sqrt, std, deg2rad, rad2deg, linspace, asarray, random, randint, normal, shuffle
- all items in the numpy namespace are available as np.*
- if a pre-v1.70 script breaks due to this change, try prepending ‘np.’ or ‘np.random.’
CHANGED Builder use of $. $ can now appear anywhere in the field (previously only the start). To display a ‘$’ character now requires ‘$’ in a text field (to prevent interpretation of normal text as being code).
ADDED flexibility for start/stop in Builder Components. Can now specify stimuli according to;
- variable values (using $ symbol). You can also specify an ‘expected’ time/duration so that something is still drawn on the timeline
- number of frames, rather than time (s), for greater precision
- an arbitrary condition (e.g. otherStim.status==STOPPED )
ADDED the option to use a raised cosine as a PatchStim mask (thanks Ariel Rokem)
ADDED a preference setting for adding custom path locations to Standalone PsychoPy
ADDED Dots Component to Builder interface for random dot kinematograms
ADDED wide-format data files (saveAsWideText()) (thanks Michael MacAskill)
ADDED option for full randomization of repeated lists (loop type ‘fullRandom’) (Jeremy)
ADDED builder icons can now be small or large (in prefs)
ADDED checking of conditions files for parameter name conflicts (thanks Jeremy)
ADDED emulate sync pulses and user key presses for fMRI or other scanners (for testing); see hardware/launchScan in the API reference, and Coder demos > experimental control > fMRI_launchScan.py (Jeremy)
ADDED right-clicking the expInfo in Experiment Settings tests & previews the dialog box (Jeremy)
ADDED syntax checking in code component dialog, right-click (Jeremy)
IMPROVED documentation (thanks Becky Sharman)
IMPROVED syntax for using $ in code snippets (e.g., “[$xPos, $yPos]” works) (Jeremy)
IMPROVED Flow and Routine displays in the Builder, with zooming; see the View menu for key-board shortcuts (Jeremy)
IMPROVED Neater (and slightly faster) changing of Builder Routines on file open/close
FIXED demos now unpack to an empty folder (Jeremy)
FIXED deleting an empty loop from the flow now works (Jeremy)
FIXED further issue in QUEST (the addition in 1.65.01 was being used too widely)
FIXED bug with updating of gamma grid values in Monitor Center
(Released: July 2011)
FIXED Builder keyboard component was storing ‘all keys’ on request but not all RTs
FIXED Aperture Component in Builder, which was on for an entire Routine. Now supports start/stop times like other components
IMPROVED Sound stimuli in Builder:
- FIXED: sounds could be distorted and would repeat if duration was longer than file
- ADDED volume parameter to sound stimuli
- FIXED: duration parameter now stops a file half-way through if needed
FIXED buglet preventing some warning messages being printed to screen in Builder experiments
FIXED bug in the copying/pasting of Builder Routines, which was previously introducing errors of the script with invalid _continueName values
(Released: July 2011)
(Released: July 2011)
Released: April 2011
Released: Feb 2011
Released: Feb 2011
Released: Feb 2011
Released: Jan 2011
Released: Dec 2010
Released: Oct 2010
Released: Sept 2010
Released: August 2010
Patch Released: July 2010
Patch Released: June 2010
Patch Released: May 2010
Released: May 2010
Released: Feb 2010
Released: Feb 2010
Released: Feb 2010
Released: Feb 2010
ADDED: full implementation of staircase to Builder loops and included a demo for it to Builder
CHANGED: builder components now have a ‘startTime’ and ‘duration’ rather than ‘times’
ADDED: QuickTime output option for movies (OSX only)
ADDED: script is saved by coder before running (can be turned off in prefs)
ADDED: coder checks (and prompts) for filesave before running script
ADDED: setHeight to TextStim objects, so that character height can be set after initialisation
ADDED: setLineRGB, setFillRGB to ShapeStim
ADDED: ability to auto-update form PsychoPy source installer (zip files)
ADDED: Monitor Center can be closed with Ctrl-W
ADDED: visual.Window now has a setRGB() method
ADDED: visual.Window now has a clearBuffer() method
ADDED: context-specific help buttons to Builder dialogs
ADDED: implemented of code to flip SimpleImageStim (added new methods flipHoriz() and flipVert())
ADDED: Butterworth filters to psychopy.filters (thanks Yaroslav Halchenko)
ADDED: options to view whitespace, EOLs and indent guides in Coder
ADDED: auto-scaling of time axis in Routines panel
IMPROVED: Splash screen comes up faster to show the app is loading
FIXED: bug in RadialStim .set functions (default operation should be “” not None)
FIXED: on mac trying to save an unchanged document no longer inserts an ‘s’
FIXED: bug with SimpleImageStim not drawing to windows except #1
FIXED: one bug preventing PsychoPy from running on vista/win7 (are there more?)
CHANGED: psychopy.filters.makeMask() now returns a mask with values -1:1, not 0:1 (as expected by stimulus masks)
RESTRUCTURED: the serial package is no longer a part of core psychopy and is no longer required (except when hardware is actually being connected). This should now be installed as a dependency by users, but is still included with the Standalone packages.
RESTRUCTURED: preparing for further devices to be added, hardware is now a folder with files for each manufacturer. Now use e.g.:
from psychopy.hardware.PR import PR650
from psychopy.hardware.cedrus import RB730
(Released: Nov 2009)
NB. The changes to gamma handling should need no changes to your code, but could alter the gamma correction on some machines. For setups/studies that require good gamma correction it is recommended that you recalibrate when you install this version of PsychoPy.
(Released: Sep 09)
(Released: Sep 09)
(Released: Sep 09)
(Released: Sep 09)
(Released: Jul 09)
(Released: Jul 09)
(Released: Jun 09)
Known Problems: * The IDE isn’t collecting all errors that are returned - a problem with the process redirection mechanism? FIXED in 0.92.3
but a consequence was that .nextTrial() will be deprecated in favour of .next(). Also, when the end of the trials is reached a StopIteration is raised. * added the ability to seed the shuffle mechanism (and trial handler) so you can repeat experiments with the same trial sequence