PsychoPy中的返回重新练习

作者: Ryan11 | 来源:发表于2019-06-03 13:40 被阅读0次

    真是太久没有更新PsychoPy相关的内容了。不过最近在咨询PsychoPy相关问题的人越来越多,觉得是件好事,因为越来越多的人开始在使用这款优秀的实验工具了。

    今天这篇推送算是又一个解决问题的例子,此处感谢@常浩 的提问。那么在PsychoPy的Builder模式中要如何设置返回重新练习呢?接下来将详细说明。

    首先,还是先设置一个简单的实验程序,当然这里为了演示返回重新练习的效果,就只放置了练习阶段的任务,正式实验部分只有指导语。如图所示:

    例子中先呈现注视点,之后在刺激界面按数字12345键反应,在练习结束的页面,按“F”键继续,按“J”键返回重新练习。进入正式阶段后,呈现完指导语即结束程序。

    接下来我们就看看在PsychoPy中这样的要求需要如何进行设置。

    帖子里仅列出关键步骤和语句,完整示例文件请戳文末“阅读原文”下载~

    在上面的flow视图中可以看到,在正常的练习loop之外,添加了一层practice_back的loop,这个loop就是用于返回到开头重新进行练习所使用的,所以它的位置需要涵盖住开头的instruction和练习结束时的practice_end。如图所示:

    在这个practice_back的loop中,我们需要设置它的循环次数为999。其实这里就是需要设置一个较大的数,保证在可能出现的返回练习按键次数中,要小于我们设置的这个循环次数:

    接下来需要设置的就是practice_end的这个位置了。首先需要放置上3个控件——字符呈现,键盘反应和语句:

    字符呈现就是写明按“F”键继续,按“J”键返回重新练习。而在语句界面需要在end routine标签下写上如下语句,如果在此界面收集到f,则practice_back这个循环结束:

    if "f" inkey_resp_6.keys:

    practice_back.finished = True

    这样一来,简单的返回重新练习便已设置完毕。

    以上部分的示例将放在文末链接中的test1中。

    再额外讲另一种返回重新练习的情况,那就是必须要练习的正确率达到一定程度,才能够开启正式实验。

    比如这里我们说要求练习的正确率为80%以上,才能够进入正式实验。程序的其它部分和上面的都是相同的,需要进行调整的地方是以下两个:

    首先在stimulate页面添加语句控件,并且在begin routine标签下写下如下语句,表示设置初始的存储正确反应个数的变量number_correct:

    if trials.thisN == 0:

    number_correct =

    0

    之后在end routine标签下写下语句,表示如果反应正确,则number_correct循环加1:

    ifkey_resp_2.corr:

     number_correct = number_correct + 1

    之后,在practice_end这个页面下,语句中的begin routine标签下的代码改为表示计算正确率,若正确率大于等于0.8,那么结束practice_back这个loop(这里的+1是因为python中的计数默认是从第0开始的,不是从第1开始,所以需要+1):

    if number_correct/(trials.nTotal + 1) >= 0.80:

    practice_back.finished = True

    end_practice.setText(

    "practice finished, press 'space' to continue")

    这样一来,计算正确率的返回重新练习便已设置完毕。

    以上部分的示例将放在文末链接中的test2中。

    如果在程序设置中遇到其它问题,欢迎在此公众号留言与我联系讨论。

    供大家参考。

    这回应该是拖更最久的一次了,感谢大家的不离不弃与后台的提问和催促,Ryan又回来了!

    似乎又到了一年做实验的季节,祝愿大家实验顺利,有问题可以在公众号后台留言或是扫描上方二维码联系Ryan。

    祝好!

    —Ryan的后记

    阅读原文

    相关文章

      网友评论

        本文标题:PsychoPy中的返回重新练习

        本文链接:https://www.haomeiwen.com/subject/ozlcxctx.html