Attention: The EBRAINS IAM will be down Monday, the 21st July 2025, from 17.00 CEST (my timezone) for up to 1 hour. This will any affect services requiring an EBRAINS login, we apologise for any inconvenience caused.


Wiki source code of Widget 3D Head

Version 15.1 by ldomide on 2022/05/24 09:19

Hide last authors
ldomide 15.1 1 Source code: [[https:~~/~~/github.com/the-virtual-brain/tvb-widgets>>https://github.com/the-virtual-brain/tvb-widgets]]
paulapopa 3.1 2
ldomide 15.1 3 Immediate testing here: [[https:~~/~~/lab.ch.ebrains.eu/hub/user-redirect/lab/tree/shared/TVB%20Widgets/REPO/tvb-widgets/notebooks>>https://lab.ch.ebrains.eu/hub/user-redirect/lab/tree/shared/TVB%20Widgets/REPO/tvb-widgets/notebooks]]
ldomide 11.1 4
paulapopa 3.1 5 == Purpose ==
6
ldomide 12.1 7 It is a Jupyter widget intended for visualization of the 3D Head data available for a patient:
paulapopa 3.1 8
9 * surfaces of different types (cortex, face, skull, etc)
10 * connectivity region centers
11 * sensors locations (SEEG, MEG, EEG)
12
13 == Inputs ==
14
15 It supports the above data in the form of their corresponding TVB datatypes:
16
17 * Surface (CorticalSurface, FaceSurface, etc)
18 * Connectivity
19 * Sensors (SensorsInternal, SensorsMEG, SensorsEEG)
20
21 == Installation ==
22
23 (% class="box" %)
24 (((
25 pip install tvb-widgets
26 )))
27
28 == API usage ==
29
30 We need to first import the widget __API from tvbwidgets__// //package, together with the __TVB API __and the __display__ function:
31
32 (% class="box" %)
33 (((
34 import tvbwidgets.api as api
35
36 from tvb.simulator.lab import *
37
38 from IPython.core.display_functions import display
39 )))
40
ldomide 12.1 41 Then, we instantiate the **HeadWidget** and a **FaceSurface** datatype that we want to visualize. Using the //**add_datatype**// method we add the surface to our widget and __display__ the widget:
paulapopa 3.1 42
43 (% class="box" %)
44 (((
ldomide 12.1 45 widget = api.HeadWidget()
paulapopa 3.1 46
47 face = surfaces.FaceSurface().from_file()
48
49 face.configure()
50
paulapopa 9.1 51 widget.add_datatype(face)
52 display(widget)
paulapopa 3.1 53 )))
54
55 {{html}}
paulapopa 5.1 56 <iframe src="https://drive.google.com/file/d/1Egp9Lk-HGMATc9em6Kw_jSHmybTD2vzM/preview" width="840" height="480" allow="autoplay"></iframe>
paulapopa 3.1 57 {{/html}}
58
59 Next, we can continue adding other datatypes to this widget, by calling //**add_datatype**// multiple times. A maximum of 10 datatypes are supported by this widget.
60
61 The **Config** object can be used to tweak the display options for each datatype.
62
63 In the code below, we add a **Connectivity** and SEEG **Sensors:**
64
65 (% class="box" %)
66 (((
67 conn = connectivity.Connectivity().from_file()
68
69 conn.configure()
70
paulapopa 9.1 71 widget.add_datatype(conn)
paulapopa 3.1 72
73
74 seeg = sensors.SensorsInternal().from_file()
75
76 seeg.configure()
77
ldomide 13.1 78 widget.add_datatype(seeg, api.HeadWidgetConfig(name='SEEG'))
paulapopa 3.1 79 )))
80
paulapopa 6.1 81 {{html}}
82 <iframe src="https://drive.google.com/file/d/1vFqqzXle8VGcHaLB-OdE-6BdetK9aJ1T/preview" width="840" height="480" allow="autoplay"></iframe>
83 {{/html}}
84
paulapopa 3.1 85 We can also provide a **RegionMapping** to be used as colormap for a surface:
86
87 (% class="box" %)
88 (((
89 reg_map = region_mapping.RegionMapping.from_file()
90
ldomide 13.1 91 config = api.HeadWidgetConfig(name='Cortex')
paulapopa 3.1 92
93 config.add_region_mapping_as_cmap(reg_map)
94
95
96 cortex = surfaces.CorticalSurface().from_file()
97
98 cortex.configure()
99
paulapopa 9.1 100 widget.add_datatype(cortex, config)
paulapopa 8.1 101 )))
paulapopa 3.1 102
103 {{html}}
paulapopa 6.1 104 <iframe src="https://drive.google.com/file/d/1z2yEuQWUT2Poxh63adYbBdhKPcWGskex/preview" width="840" height="480" allow="autoplay"></iframe>
paulapopa 3.1 105 {{/html}}
Public

TVB Widgets