Building a staircase for contrast threshold perception -- getting sawtooth results (stepSize problem?)

OS (e.g. Win10): Win10
PsychoPy version (e.g. 1.84.x): v2021.2.3
Standard Standalone? (y/n) If not then what?: y
What are you trying to achieve?:
I’m building an adaptive (QUEST) staircase to assess contrast level for threshold perception (50% hit rate) of a line drawing.

What did you try to make it work?:
I am attaching screenshots of my task here:


What specifically went wrong when you tried that?:
No matter what I try, I get sawtooth results when I plot the intensity changes as a function of trial number.
Maybe I should specify step size? If so, how? Why do intensity changes jump so much in my staircase?

% hit rate seems fine, I get about 50% seen in the last 10 trials.

Include pasted full error message if possible. “That didn’t work” is not enough information.

Thank you so much in advance!

Hi There,

I am less familiar with viewing plotted QUEST intensities - so perhaps I am missing how you are expecting the output to look here (to me the jumping is fine as long as its converging towards a threshold and the stepsizes appear to be adaptively changing - which does lok ok to me there, unless it is the case that you know the upward jumps are not following incorrect responses - in which case that is weird). Could you share your psychopy file and conditions spreadsheet if possible?

One thing you might want to try if you want more control is the “questplus” option? There’s some more docs on that here which might help sussing out if that is what you need? - functions for storing/saving/analysing data — PsychoPy v2022.1.0


Hi Becca,

Thanks for your reply!
The y-axis should actually be labeled “contrast” since that’s the variable name that I am calibrating using this staircase method.

I decreased my step size to 0.01, since my labmate suggested that a step size of 1 is too big if my contrast value range is between 0 and 1. Still, I get a “sawtooth”. One variable I am unsure about is “range”, since there’s a lot of online discussions about its usefulness in the psychopy quest staircase.

I’ll definitely look at questplus and see if there are other parameters I can play with!

I appreciate your help. :slight_smile:

Editing to attach my files
questStaircase_contrast_try2.csv (272 Bytes)
adaptStaircase_img.psyexp (23.9 KB)

After troubleshooting with my labmate, the issue was with the Weibull function parameters. Partially adapted from the PsychoPy staircase demo:

beta = 3.5
delta = 0.01
gamma = 0 (instead of 0.5; this got rid of the jagged fluctuations of my contrast changes with every step).
grain = 0.01

It turns out that gamma defines the false alarm rate (or, the chance of ‘success’ at an infinitely low stimulus strength). If I set gamma = 0, the jagged fluctuation disappears, because I have a false alarm rate of 0.

So, is this much fluctuation in the last 10 trials of the staircase inherently bad? This looks like I need to do some more reading and understanding of the Weibull function. I’m not sure which would be optimal for my task, yet. If this is helpful to anyone, gamma = 0 parameter is based on advice from this paper: (Harvey 1986).

1 Like

Thankyou for sharing your solution!