Dot size does not change size on screen

Hello,

Using Builder I’m creating random dot kinematograms and noticed that increasing the parameter in the Dots stimulus ‘Dot size $’, does not always increase the dot sizes on screen. For small sizes (up to 20 pixels), the size on screen increases, but for values larger than that it doesn’t. I’ve seen this on two different computers, and it does not seem to depend on the field size or the number of dots in the field.

The documentation does not describe limitations on dot size values, so I wonder: is this behavior a bug or a feature?

Greetings,
Gijs

I cannot replicate this. Setting dotSize=100 does increase the size here compared to dotSize=20 in Builder. Perhaps to debug whether this originates in Builder or in the underlying python libraries, could you try and run the below in Coder? It should present you first with one second of smaller dots, then 1 second of larger dots. And what version of psychopy are you running?

from psychopy import visual, core
win = visual.Window()

stim = visual.DotStim(win, dotSize=20, nDots=20)
stim.draw()
win.flip()
core.wait(1)

stim.dotSize=100
stim.draw()
win.flip()
core.wait(1)

Thanks for the suggestion.

Running your example in Coder the dot size on screen is the same for both stimuli.

I’m using version 1.84.2. What version are you using?

I don’t think this is anything to do with PsychoPy versions. More likely differences in OS/graphics card/driver.

PsychoPy simply passes you dot size on to OpenGL (graphics card driver) and the fact that it works at all suggests that this is being done correctly. What range of sizes OpenGL considers to be a valid “dot” is probably driver-specific and certainly beyond our control. ElementArray stimulus allows complete control of the appearance of each “dot” but doesn’t have automatic updating of positions I’m afraid.

So I guess the thing to try is to update the graphics driver with the newest version from the vendor’s website. If that doesn’t work, you’re probably stuck with either doing it manually using a lot of visual.Circle()s (which is quite unsatisfactory) or running on another computer.

ElementArrayStim will be a better solution than using visual.Circle(). The only thing it doesn’t do is frame-by-frame updates of position according to direction/coherence etc

1 Like

Thanks, I will try tweak the driver or resort to ElementArrayStim …

Update:
It turns out this is an Intel graphics driver problem. Using an NVIDIA card the dotsize can be set larger.
As a work-around (we’re stuck with Intel on the experimental computer …) I manually set the screen resolution to prehistoric levels (800, 600), which allows for dot sizes on screen that are large enough for our purposes. Thanks again for your help!

1 Like