首页 > 解决方案 > 如何存储所有 python 按键 RT 而不仅仅是第一个?

问题描述

我正在使用PsychoPy Coder(它使用 python 代码,对于那些不熟悉的人)编写行为数据收集任务。任务很简单 - 参与者循环观看 5 个视频,按顺序播放,当他们认为视频中的一个事件结束而另一个事件开始时,要求他们按空格键。我希望我的输出 .csv 包含 5 列 - 每个视频一个列,每列都有一个 RT 列表,用于在该视频期间按下的所有键(有效地传达每个视频期间该参与者划分事件的时间)。

我已经让循环开始工作并有时间重新启动每个视频,以便 RT 是特定于视频而不是特定于实验的,并且我已经将它存储在每个单独的列中按下的第一个键的 RT视频,但我希望它存储所有按下的键的 RT。

我假设我需要创建一个列表并将每个 RT 附加到该列表以稍后保存在 .csv 中,但我无法让它工作。

这是仅用于视频演示和响应密钥集合的代码:

n = 0
while n != 6: #will play the 5 video clips
    timer.reset()
    video_selected = project_dir+'/'+video_dir+'/'+video_clip[n] #selects each video clip
    
    videopath = str(video_selected) #set path for video
    if not os.path.exists(videopath):
        raise RuntimeError("Video File could not be found:" + videopath)

#play the video using VLCMovieStim
    mov = visual.VlcMovieStim(win, videopath,
        size=None,  # set as `None` to use the native video size
        pos=[0, 0],  
        flipVert=False, 
        flipHoriz=False, 
        loop=False,  # replay the video when it reaches the end
        autoStart=True)  # start the video automatically when first drawn

#while the video plays...
    while not mov.isFinished:
        keys = kb.getKeys(['space', 'escape']) #define allowed keys
        for thisKey in keys:
            RT = timer.getTime()
            if thisKey=='escape': #if escape selected, quit the program
                mov.stop()
                core.quit()
            else:
                thisExp.addData('RTvid'+str(n+1), RT) #if space selected, add response time to the csv

   # draw elements
        mov.draw() #bring the movie onto the screen
        win.flip() 
    
    n = n + 1

我确信这非常容易解决,但我(显然)是一名编码爱好者。您能提供的任何帮助将不胜感激!

仅供参考,.addData函数是 PsychoPy 中 ExperimentHandler 的一部分,并将数据作为('列名',要添加的变量)添加到数据 .csv 中。

这是我当前输出的屏幕截图: 当前输出

这就是我想要的样子: 期望的输出

最后一件事是每个视频都有 3 到 5 分钟的时长,运行这个程序的计算量似乎非常大,有时它会崩溃。任何有关如何调解的建议将不胜感激。

标签: pythonvideokeyboardresponsepsychopy

解决方案


推荐阅读