I am currently adapting a script which was used in a behavioural experiment to make it ready for an fMRI study. Accordingly, I need to fix the amount of time the participant has to respond to each question using the ratingScale. Below is the code taken from the behavioural experiment. I would appreciate any suggestions on the easiest way to integrate code for restricting the respone time to 5 seconds regardless of response.
‘’
def question_probes (video_name, participant_number, last=0):
“”“Presents question probes, stores responses and presents break screens in between videos and end screen if it is the last trial”""
# use trialhandler to present task, arousal and uncertainty questions from csv file in sequential order.
fixedQuestions = data.TrialHandler(nReps = 1, method = 'sequential', trialList = data.importConditions('references/fixedQuestions.csv'), name = 'fixedQuestions')
# create rating scale for user to rate thought probes.
ratingScale = visual.RatingScale(win, low=0, high=10, markerStart=5.0,
precision=10,
leftKeys='1', rightKeys='2', acceptKeys='4', scale = None, labels = None, acceptPreText = 'Press key', tickMarks = [1,10])
# create text stimulus for question probe presentation.
QuestionText = visual.TextStim(win, color = [-1,-1,-1], alignHoriz = 'center', alignVert= 'top', pos =(0.0, 0.3))
# create text stimuli for low and high scale responses.
Scale_low = visual.TextStim(win, pos= (-0.5,-0.5), color ='black')
Scale_high = visual.TextStim(win, pos =(0.6, -0.5), color ='black')
# loop through each thought probe in the fixedQuestions created above using trialhandler.
for question in fixedQuestions:
ratingScale.noResponse = True
# section for keyboard handling.
key = pyglet.window.key
keyState = key.KeyStateHandler()
win.winHandle.activate() # to resolve mouse click issue.
win.winHandle.push_handlers(keyState)
pos = ratingScale.markerStart
inc = 0.1
# while there is no response from user, present thought probe and scale.
while ratingScale.noResponse:
# use 1 and 2 keys to move left and right along scale.
if keyState[key._1] is True:
pos -= inc
elif keyState[key._2] is True:
pos += inc
if pos > 10:
pos = 10
elif pos < 1:
pos = 1
ratingScale.setMarkerPos(pos)
# set text of probe and responses
QuestionText.setText(question['Questions'])
Scale_low.setText(question['Scale_low'])
Scale_high.setText(question['Scale_high'])
# draw text stimuli and rating scale
QuestionText.draw()
ratingScale.draw()
Scale_low.draw()
Scale_high.draw()
# store response using getRating function
responded = ratingScale.getRating()
win.flip()
# reset marker to middle of scale each time probe is presented.
ratingScale.setMarkerPos((0.5))''