Episode 1: Paradigm Presenter

Learn how to connect and synchronize Paradigm Presenter with g.Pype for experiment control. This episode demonstrates how to start paradigms and receive stimulus triggers in your processing pipelines.

Note

This page is still under development. Until we have the step-by-step instructions ready, please refer to the code example below.

File example_paradigm_presenter.pyView file on GitHub

 1import os
 2
 3import gpype as gp
 4
 5parent_dir = os.path.dirname(os.path.abspath(__file__))
 6paradigm_root_folder = os.path.join(parent_dir, "paradigms")
 7fs = 250
 8
 9if __name__ == "__main__":
10
11    # main app
12    app = gp.MainApp()
13
14    # pipeline
15    p = gp.Pipeline()
16
17    # signal generator
18    source = gp.Generator(
19        sampling_rate=fs,
20        channel_count=8,
21        signal_frequency=10,
22        signal_amplitude=10,
23        signal_shape="sine",
24        noise_amplitude=10,
25    )
26
27    # presenter trigger via UDP
28    trigger = gp.UDPReceiver()
29
30    # router
31    router = gp.Router(input_channels=[gp.Router.ALL, gp.Router.ALL])
32
33    # scope
34    mk = gp.TimeSeriesScope.Markers
35    markers = [
36        mk(color="r", label="task 1", channel=8, value=1),
37        mk(color="b", label="task 2", channel=8, value=2),
38        mk(color="k", label="task 3", channel=8, value=3),
39    ]
40    scope = gp.TimeSeriesScope(
41        amplitude_limit=30, time_window=10, markers=markers
42    )
43
44    # connect nodes
45    p.connect(source, router["in1"])
46    p.connect(trigger, router["in2"])
47    p.connect(router, scope)
48
49    # presenter
50    presenter = gp.ParadigmPresenter(paradigm_root_folder)
51
52    # add widgets
53    app.add_widget(presenter)
54    app.add_widget(scope)
55
56    # start pipeline and main app
57    p.start()
58    app.run()
59    p.stop()