【问题标题】:Saving a selection and showing another one on psychopy保存一个选择并在psychopy上显示另一个
【发布时间】:2018-04-04 23:07:43
【问题描述】:

我正在尝试通过使用psychopy 来构建决策任务。我以前没有使用 python 或psychopy 的经验,所以这就是为什么我有点卡住了。

我有 15 次试验,每次试验我都会展示一对图片。参与者需要通过按左或右箭头键选择其中一张图片。在他们做出选择后,我想向他们展示他们的选择,并询问他们为什么选择那张照片。

我在psychopy 中创建了一个循环,并分配了一个.xlsx 文件以按顺序显示我的图片。我的问题是,我没有为任何图片分配按键。我只有按键来结束例行程序。那么如何在某次试用中保存参与者按键后的图片并呈现给他\她。

由于我没有任何正确或错误的答案,我无法在我的 .xlsx 文件中添加一个额外的列,然后设置为正确的答案。

如何将按键与视觉刺激(我的图片,同时呈现)联系起来并存储此输入并在之后使用它来显示它们?

    # -------Ending Routine "Deney"-------
for thisComponent in DeneyComponents:
    if hasattr(thisComponent, "setAutoDraw"):
        thisComponent.setAutoDraw(False)
# check responses
if secimtuslar.keys in ['', [], None]:  # No response was made
    secimtuslar.keys=None
trials.addData('secimtuslar.keys',secimtuslar.keys)
if secimtuslar.keys != None:  # we had a response
    trials.addData('secimtuslar.rt', secimtuslar.rt)
# the Routine "Deney" was not non-slip safe, so reset the non-slip timer
routineTimer.reset()

我可以使用这个trials.addData('secimtuslar.keys',secimtuslar.rt) 变量在循环中的另一个例程中保存和显示吗?

# -------Start Routine "bununedensectin"-------
while continueRoutine and routineTimer.getTime() > 0:
    # get current time
    t = bununedensectinClock.getTime()
    frameN = frameN + 1  # number of completed frames (so 0 is the first frame)
    # update/draw components on each frame

    # *text_2* updates
    if t >= 0.0 and text_2.status == NOT_STARTED:
        # keep track of start time/frame for later
        text_2.tStart = t
        text_2.frameNStart = frameN  # exact frame index
        text_2.setAutoDraw(True)
    frameRemains = 0.0 + 3- win.monitorFramePeriod * 0.75  # most of one frame period left
    if text_2.status == STARTED and t >= frameRemains:
        text_2.setAutoDraw(False)

我认为我需要在这些行之间嵌入一个有用的代码。

【问题讨论】:

    标签: python-2.7 psychopy


    【解决方案1】:

    每次试验的响应都会在试验结束时自动存储在您的数据文件中。它也可以通过每次试用的代码获得。例如如果您的键盘组件被命名为trial_response,那么它有一个.keys 属性,可以通过以下方式在代码中访问:

    trial_response.keys
    

    如果您打算使用它,那么这将需要使用一些 Python 代码的 sn-ps。实际上,通过https://discourse.psychopy.org 论坛上的讨论而不是在此处获得帮助将更好地处理,因为 SO 更侧重于询问和回答特定的代码问题,以及与其他读者具有某种更广泛相关性的问题。

    【讨论】:

    • 感谢您的回复!我找到了按键数据。我想我应该使用这样的代码:'if secimtuslar.keys == 'left' ... nexttrial.setImage()'
    【解决方案2】:

    我找到了问题的答案!

    我在循环中插入了两个例程(nedensol 和 nedesag),并在“开始例程”选项卡中添加了一个 if 语句

    这是nedensol例程的代码:

    if 'right' in secimtuslar.keys:
    continueRoutine = False
    

    通过这样做,我可以防止参与者在右按 Deney 例程时看到我的 nedensol 例程。

    我希望这可以帮助其他有类似问题的人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多