Skip to main content
Skip table of contents

General tips for working with our tools in PsychoPy

Below are some general tips for working in PsychoPy. These apply to both Builder and IDE platforms.

Pixel identity passthrough
Pixel identity passthrough refers to the 1-to-1 mapping between a visual stimulus created in software, and the stimulus presented on the display. Certain of our features, including our special video modes for high bit depth colour, Pixel Mode, and register write/update Pixel Sync, rely on pixel identity passthrough to work properly. If something in your graphics pipeline alters your assigned pixel colour values, this can cause problems for these features, including weird colours, bad triggers and missed synchronization.

Here are some general tips for ensuring good pixel identity passthrough in PsychoPy:

  • Check for dithering. Graphics cards sometimes have this enabled by default. You can read more about this and how to disable it here.

  • Use RGB255 colour space. The standard PsychoPy colour space (-1 to 1)  rounds 8-bit colour values, causing a mismatch between pixel value assignment and detected output. In Builder, you may need to create your triggers and pixel sequences using code blocks rather than relying on drag and drop objects. 

  • Set win.fullscr to False. This is most important for Pixel Mode. For some reason, setting fullscreen to True causes Pixels in the top row of the window to have altered pixel values. You should still use a full resolution window (1920 x 1080 for most of our devices).

  • Be mindful of graphics manipulations like gamma correction and interpolation. Image adjustment methods like blending, antialiasing, filtering/smoothing and gamma correction can alter pixel values after the user draws them. Some of these can be disabled for individual stimuli. For example, interpolation can be disabled for individual visual objects). Some you may have to work around by picking strategic pixel values with maximum 8 bit values (red, green, blue, cyan, magenta, yellow, and white) 

  • When in doubt, draw your pixel trigger or pixel sequence manually. See code block example #2 above for a demonstration.

Special video modes and sequencers

Our special high bit-depth video modes and high refresh rate sequencers can be used in Python. However, we recommend using an IDE, not the Builder, for these modes. The reason for this is that most of our video modes require custom shaders or image formatting that cannot be easily incorporated into the Builder’s pre-defined window properties. 

For an example of this formatting and how it can be automated, we have an example of 480Hz or “Quad4x” mode available here: [download]. More examples using our custom shaders will be made available soon.

Still have questions? Pypixxlib code not working? Looking for a specific demo? Contact our technical support staff at Our team of trained vision scientists and software developers can help you get our tools up and running.   

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.