我是编程新手,需要一些帮助来完成我在PsychoPy builder中构建的一个实验。我已经做了一些可以工作的东西,但我可以说它不优雅,一定有更好的方法。
我想进行24个试验。每次试验将显示7个独特的图像,然后显示1个图像,其中可能来自7,也可能不是来自7,然后要求用户输入y/n,如果他们以前见过该图像。
在我当前的代码中,我已经创建了24个独立的输入文件,每个文件都包含一个唯一对象的列表。我已经创建了一个连续显示七个对象的循环。然后,我为试验前固定屏幕(在所有24个试验中都是恒定的)和响应(探针图像和手动编程的正确答案)创建了单独的例程。代码可以工作,但它非常长,如果我想更改固定或探针/响应中的某些内容,我将需要单独更改24个试验中的每一个。
我如何才能让Builder创建一个包含固定屏幕(常量)的循环、试验循环(选择接下来的7个唯一对象(它们的命名顺序从1-168开始)),以及每个试验唯一的探测/响应(我将这些放在输入文件中,如下所示)。探针是指1到7之间的数字,它引用了试验中显示的序列中图像的位置。)
TrialNumber探测器CorrAns 1 4 0 2 3 1 3 4 0 4 5 1 5 4 1 ...
我希望我的问题是有意义的,我将非常感谢任何帮助。
谢谢你,PsychoPy初学者。
发布于 2016-05-26 06:13:50
是的,你是对的,有一种(更)有效的方法可以做到这一点。
首先,从您的条件文件(即.csv或.xlsx)开始。你只需要其中一个。它应该有24行(每次试验一行)。它需要8列:7列指定试验中的唯一图像,第八列指定重复的图像。
其次,您需要一个循环来控制试验。这连接到条件文件,并包含所有例程(预审固定和图像例程。
第三,您需要第二个内部循环,它嵌套在外部循环中。这只包含图像例程。即,固定例程将运行24次(每个外部循环一次),并且图像例程将运行7×24次(即,每次试验7次)。内部循环没有连接到条件文件,只是简单地设置为运行7次。
因此请注意,Builder中不再有24个单独的例程,而是只有两个(固定和图像例程)。您可以通过循环重复它们,而不是复制例程。
在图像刺激图像字段中,可以构造要在每个演示文稿上使用的图像名称。例如,假设条件文件中的8列被标记为'image0','image1‘等。然后在image字段中,放入如下内容:
$'image' + str(yourInnerLoopName.thisN)
也就是说,在每次试验的第一次迭代中,图像文件名将来自列image0,第二个来自image1,依此类推。
我不知道您是如何处理响应的,但您可能还需要条件文件中的第九列来指示正确的响应是什么。该键盘组件可存取该响应以判断该响应是否正确。
https://stackoverflow.com/questions/37435637
复制相似问题