如何在Python脚本中实现触发器

时间:2017-10-30 16:26:05

标签: python io psychopy parallel-port

我有心理物理实验的心理学脚本,参与者可以看到不同的形状并且必须以特定的方式作出反应。我想在不同的计算机上采取生理测量(ECG)并在我的测量中实施事件点。因此,每当参与者出现刺激时,我希望这会出现在心电图上。

基本上,我想为并行端口i / o添加命令。

说实话,我甚至不知道从哪里开始。我已经阅读了很多相关内容,但我仍然输了。

2 个答案:

答案 0 :(得分:3)

这可能是显示形状并发送触发器的最短完全正常工作的代码:

from psychopy import visual, parallel, core
win = visual.Window()
shape = visual.ShapeStim(win)

# Show it
shape.draw()
win.flip()

# Immediately send trigger
parallel.setData(10)  # Trigger code, here 10
core.wait(0.020)  # Number of seconds to send this trigger code (enough for the hardware to send and the receiver to recognize it)
parallel.setData(0)  # Stop sending trigger.

当然,您可以通过将刺激呈现和触发器置于循环(运行试验)中来扩展此功能,并在其旁边执行各种其他操作,例如:收集回复和保存数据。这只是刺激呈现和发送触发器的最小示例。

非常有意的是,在翻转窗口后立即找到触发器代码。在大多数硬件上,发送触发器非常快(端口上的电压在脚本中运行的行的1毫秒内发生变化),而监视器仅在每16.7毫秒左右更新其图像。并且win.flip()等待后者。我已经做了good and bad practices for timing triggers here的一些例子。

答案 1 :(得分:0)

对于并行端口io,您应该使用pyparallel。进行连续的ECG测量,存储并存储时间戳和每个刺激所需的任何元数据。让你开始的伪代码:

while True:
    store_ecg()
    if time_to_show():
        stimulus()
    time.sleep(0.1) # 10 Hz