Dot_motion stimulus info for speed doesn't match documented stimulus info

I’m accessing data from a functional_connectivity neuropixel data session. Looking at the dot_motion stimulus I can’t decipher the speed information. Looking at the white paper it reads:

Last, a dot motion stimulus consisting of approximately 200 1.5º radius white dots on a mean-luminance gray background moving at one of 7 speeds (0º/s, 16º/s, 32º/s, 64º/s, 128º/s, 256º/s, 512º/s)

however when I look at the stimulus table, the speed parameter doesn’t seem to match.

dmtable = session.get_stimulus_table(['dot_motion'])


array([0.02, 0.005, 0.01, 0.001, 'null'], dtype=object)

There only seems to be 4 + 1 speeds (assuming null = 0 deg/s). Moreover, it’s not clear what the units here indicate. My guess is they are normalised to screen co-ordinates?

Is this the correct stimulus info for the dot_motion stimulus?

Finally, is there any more detailed info about how the stimulus was generated? I’ve had a look around but can’t find anything more detailed than the white paper.


Hi eabhorrocks, thanks for the question!

There are two sessions for which slightly different dot_motion stimulus parameters were used (766640955 and 767871931), one of which you’re analyzing.

If you run the same code on any of the other sessions with the “Functional Connectivity” stimulus set, you’ll find 7 values for Speed: [0, 0.0005, 0.001, 0.005, 0.01, 0.02, 0.04]

These correspond to 0º/s, 16º/s, 32º/s, 64º/s, 128º/s, 256º/s, 512º/s. So the two anomalous sessions are missing the 16º/s and 512º/s conditions. In those sessions, null is actually a blank stimulus, rather than a stationary stimulus.

The stimuli were generated by PsychoPy’s DotStim class:

These are the parameters we used that are not listed in the stimulus table:

contrast = 1.0
coherence = 0.9
dotLife = 20
nDots = 500
fieldSize = (2.0,2.0)
dotSize = 15

Thanks for the response. I should have known better than to try just the first 2 sessions!

Just to confirm: the fieldSize is set to (2,2). I assume these units/coordinates follow the convention whereby the screen has:
x: -1 to +1
y: -1 to +1

so that the field size matches the full screen size?


It’s not quite that straightforward, because there is also the spherical warp that needs to be taken into account. The field size of (2,2) actually extends past the boundaries of the screen, in order to obtain full coverage after warping. Once that value was set, we empirically determined the parameter values for nDots (500 yields around 200 dots on the screen at any given time), as well as for Speed (based on exported images of successive frames).