Wiki source code of Widget TimeSeries

Version 36.2 by rominabaila on 2023/05/15 11:31

Show last authors
1 Source code: [[https:~~/~~/github.com/the-virtual-brain/tvb-widgets>>url:https://github.com/the-virtual-brain/tvb-widgets]]
2
3 This is part of a Pypi release: [[https:~~/~~/pypi.org/project/tvb-widgets/>>url:https://pypi.org/project/tvb-widgets/]]
4
5 //**tvb-widgets**// is also already installed in the official image released for EBRAINS lab, where you can test it directly.
6
7 == Purpose ==
8
9 It is a JupyterLab Widget intended for the visualization of brain signals represented as time series.
10
11 == Backends ==
12
13 Starting with //**tvb-widgets 1.5.0**, //the TS widget comes in 2 forms, corresponding to the 2 different libraries (we called them backends) used for plotting: **matplotlib **and **plotly**. The matplotlib backend, build on top of the **mne** library, offers more advanced scientifical features, while the plotly backend has a more appealing look and moves faster when talking about the basic interactions.
14
15 Below you can see the TS widget with each backend option (first one using the matplotlib backend, second one using the plotly backend).
16
17 (% style="text-align:center" %)
18 [[image:matplotlib.png]]
19
20 (% style="text-align:center" %)
21 [[image:plotly.png]]
22
23 == Inputs ==
24
25 Time series can be given as inputs in two forms:
26
27 * TVB TimeSeries datatype
28 * Numpy arrays
29
30 This widget supports 2D, 3D, and 4D arrays. In all three cases, there is a fixed shape that the TimeSeries widget expects:
31
32 * for **2D**: (no_timepoints, no_channels)
33 * for **3D**: (no_timepoints, state_variable/mode, no_channels)
34 * for **4D**: (no_timepoints, state_variable, no_channels, mode)
35
36 ~* Note that the TVB TimeSeries datatype is always 4D and already has the expected shape.
37
38 == Requirements and installation ==
39
40
41 Before installing the tvb-widgets library containing the TimeSeries widget, the following python libraries and Jupyter extensions should be installed:
42
43 * **Libraries:**
44 ** [[mne>>https://mne.tools/stable/index.html]] >= 1.0
45 ** [[matplotlib>>https://matplotlib.org/3.5.0/index.html]]
46 ** [[plotly>>https://plotly.com/python/]] == 5.14.0
47 ** [[ipywidgets>>https://ipywidgets.readthedocs.io/en/7.x/]] == 7.7.2
48 ** [[ipympl>>https://github.com/matplotlib/ipympl#installation]] >= 0.8.5
49 * (((
50 **Extensions:**
51
52 (% class="box" %)
53 (((
54 jupyter labextension install @jupyter-widgets/jupyterlab-manager
55
56 jupyter labextension install jupyter-matplotlib
57
58 jupyter labextension install jupyterlab-plotly
59 )))
60 )))
61
62 Then, to install the tvb-widgets library, just type:
63
64 (% class="box" %)
65 (((
66 pip install tvb-widgets
67 )))
68
69 == API usage ==
70
71 First, the correct matplotlib backend must be set, which enables the interaction with the TimeSeries widget, by running the following command:
72
73 (% class="box" %)
74 (((
75 %matplotlib widget
76 )))
77
78 Then, simply import the **plot_timeseries** method, which gives you access to the TS widget:
79
80 (% class="box" %)
81 (((
82 from tvbwidgets.api import plot_timeseries
83 )))
84
85
86 Assuming that the user has already created or imported a valid input, this is how the widget can be initialized and displayed (example below assumes that **tsr  **is a TVB TimeSeries datatype):
87
88 (% class="box" %)
89 (((
90 backend = 'plotly' # change to 'matplotlib' to see the other TS widget
91
92 plot_timeseries(data=tsr, backend=backend)
93 )))
94
95 After running the code from above into a Jupyter cell, you should see the TS widget corresponding to the backend you selected.
96
97 {{html}}
98 <iframe width="840" height="480" src="https://www.youtube.com/embed/VmueiXMxbVk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
99 {{/html}}
100
101 == 1. TS widget with matplotlib and mne ==
102
103 As it was already mentioned, the matplotlib widget offers more advanced scientifical fearures. In the video below, you can see some of the functionalities that this backend provides, like increasing/decreasing signal amplitude, selecting/deselecting certain signals, selecting different dimensions (state variable/mode) from the input data, navigating through the timeline, etc.
Public

TVB Widgets