psychopy.org | Reference | Downloads | Github

How to save nonresponse in excel as 'None' on rating scale?


#1

Hi,
I am designing an experiment that includes a component that makes decisions within 4 seconds using a rating scale.
Makerstart was assigned to 5 out of 0 ~ 10 points scale.
In this case, if the participant does not respond, the response is stored as 5.
But I want to be saved as ‘None’ when the participant does not respond.
I have tried to code makerstart = ‘’, but the participant can not respond without using the mouse.
I want to be able to respond only to the keyboard.
On the rating scale, is there any way for the data to be stored as ‘None’ when the participant has no response?

I would really appreciate your help.


#2

Hi Shin,

In the documentation, you find everything you asked for: http://www.psychopy.org/api/visual/ratingscale.html

When you initialize your RatingScale, just make sure that you leave markerStart=None and switch noMouse=True, low=0, and high=10.
Prior to every trial, you should reset the rating scale with yourRatingScaleName.reset(). Until a subject responds with the left and right Arrow keys (to change that, see leftKeys='left', rightKeys='right'), a call to yourRatingScaleName.noResponse should return True.

Best wishes,
Mario


#3

Hi Mario,

Thank you for your comment. :slight_smile:

The following is a part of my code.

don_ratingscale = visual.RatingScale(win=win, name='don_ratingscale', marker=u'triangle', markerColor='black', size=1.1, pos=[0.0, -0.4], low=0, high=10, precision=1, markerStart=None, noMouse=True, leftKeys='left', rightKeys='right', acceptKeys='space', labels=[u'how'], scale=u'',textColor='black',lineColor='black',maxTime=4
    # ------Prepare to start Routine "rating"-------
    t = 0
    ratingClock.reset()  # clock
    frameN = -1
    continueRoutine = True
    routineTimer.add(4.000000)
    # update component parameters for each repeat
    don_ratingscale.reset()
    # keep track of which components have finished
    ratingComponents = [don_rating, don_ratingscale, timer13, timer14, timer15, timer16]
    for thisComponent in ratingComponents:
        if hasattr(thisComponent, 'status'):
            thisComponent.status = NOT_STARTED
    
    # -------Start Routine "rating"-------
    while continueRoutine and routineTimer.getTime() > 0:
        # get current time
        t = ratingClock.getTime()
        frameN = frameN + 1  # number of completed frames (so 0 is the first frame)
        # update/draw components on each frame

I don’t think there is anything wrong with this code.

However, if the participant doesn’t respond, the response is still stored as ‘0’, which is the starting point of the marker, rather than being stored as ‘None’.

I want the data to be saved as ‘None’ if the participant doesn’t press the space(acceptKeys) when rating.

Is there any code stored as ‘None’, not the marker’s start point when acceptkey is not pressed?

I would really appreciate your help again.


#4

Hi Shin,

you could try something like this:

response = None
if (not don_ratingsscale.noResponse): response = don_ratingsscale.getRating()

You should test if don_ratingsscale.noResponse behaves as expected (i.e., True when there is no response and False a response was selected in the current trial).

I hope this solves it.

Best wishes,
Mario