Wiki source code of Extension tvb-ext-xircuits

Version 51.1 by paulapopa on 2023/03/08 17:03

Hide last authors
ldomide 1.1 1 Source code: [[https:~~/~~/github.com/the-virtual-brain/tvb-ext-xircuits>>https://github.com/the-virtual-brain/tvb-ext-xircuits]]
2
ldomide 28.1 3 Release on Pypi: [[https:~~/~~/pypi.org/project/tvb-ext-xircuits/>>https://pypi.org/project/tvb-ext-xircuits/]]
4
paulapopa 47.1 5 == Jupyter Lab Extension for building and executing TVB Workflows on EBRAINS ==
ldomide 1.1 6
rominabaila 2.1 7 == Purpose ==
ldomide 1.1 8
paulapopa 45.1 9 This is a Jupyter Lab extension that offers graphical support for TVB workflows. It is already available in the EBRAINS Lab and it allows users to configure and execute TVB simulations directly from a GUI, while drastically reducing the complexity of configuring them inside a Jupyter Lab notebook.
rominabaila 3.1 10
rominabaila 14.1 11 == Acknowledgements ==
12
13 This extension is build on top of the [[Xircuits Jupyter extension>>https://xircuits.io/]], but it also comes with custom functionalities, specifically designed for TVB and EBRAINS. These functionalities are detailed in a section below.
14
rominabaila 3.1 15 == Installation ==
16
paulapopa 44.1 17 The extension can be installed using the official PyPi distribution ([[https:~~/~~/pypi.org/project/tvb-ext-xircuits/>>https://pypi.org/project/tvb-ext-xircuits/]]):
rominabaila 3.1 18
19 (% class="box" %)
20 (((
21 pip install tvb-ext-xircuits
22 )))
23
rominabaila 9.1 24 After installing the extension and opening a Jupyter Lab session, you should be able to see in the left panel of Jupyter Lab a new icon, which represents the Xircuits components tray:
rominabaila 4.1 25
paulapopa 31.1 26 [[image:side.png]]
rominabaila 9.1 27
rominabaila 13.1 28 == **Usage** ==
rominabaila 4.1 29
rominabaila 12.1 30 === **Step 1. Create a new Xircuits workflow** ===
rominabaila 10.1 31
paulapopa 43.1 32 From the Jupyter Lab launcher, click on the **Xircuits File** icon, as in the screenshot below.
rominabaila 10.1 33
paulapopa 43.1 34 [[image:newxircs.png]]
35
36 A new file with the .xircuits extension will be generated under your current working directory. This is where you can start building the workflow diagram interactively.
37
38 [[image:newfile.png]]
39
40 You will notice that 2 components are already placed inside the workflow: the __Start__ and the __Finish__ components. They cannot be modified or deleted, and they represent the starting and finishing point of the workflow.
41
rominabaila 12.1 42 === **Step 2.  Drag components into the workflow area** ===
rominabaila 10.1 43
paulapopa 43.1 44 Open the components tray, from the left-side bar icon highlighted below.
rominabaila 10.1 45
paulapopa 43.1 46 [[image:tray.png]]
47
48 Now, you can browse through the components, select the one you wish to use, then drag and drop it into the workflow area.
49
50 [[image:components.png]]
51
rominabaila 12.1 52 === **Step 3. Configure the components** ===
rominabaila 10.1 53
paulapopa 43.1 54 The components that are provided in this extensions are configurable, meaning you can set some parameters on almost every component. Some of the parameters are literals, while some parameters are results of other components.
rominabaila 12.1 55
paulapopa 43.1 56 In case of primitives you need to open the //General// tab from the components tray and drag the appropriate //literal//: float, int, string, dict, etc.
57
58 The parameters need to be linked to the inputs of the component by dragging and dropping a connection from the output port of a literal/component towards the corresponding input port of the other component (e.g. the gray connections in the screenshot below).
59
60 [[image:diagr.png]]
61
rominabaila 12.1 62 === **Step 4. Make connections** ===
63
paulapopa 43.1 64 After dragging all your desired components/literals in the workflow area, it's time to connect the components.
rominabaila 12.1 65
paulapopa 43.1 66 First, link the __Start__ node to the first component of your workflow. Then make the connections between all your components. The last component should be linked to the __Finish__ node, to indicate the end of your workflow (e.g. the blue connections in the screenshot below). These connections will dictate the order of execution of the components in your workflow.
rominabaila 12.1 67
paulapopa 43.1 68 [[image:diagram.png]]
69
rominabaila 12.1 70 === **Step 5. Run the workflow** ===
71
72 After connecting everything, you need to run the workflow to actually see its result. For this you can click on the Run button (▶), which will also implicitly compile the workflow.
73
paulapopa 43.1 74 [[image:run.png]]
75
rominabaila 12.1 76 After clicking on Run, a new Jupyter Output window should appear in the bottom of your Jupyter Lab environment. Here you will see the output of your workflow, such as logs, static plots, etc.
77
paulapopa 43.1 78 [[image:out.png]]
79
rominabaila 12.1 80 === **Step 6. Share your work*** ===
81
82 This step is, of course, optional, but it is worth mentioning that sharing your workflows with others is extremely easy. By just saving and sharing your workflow (*.xircuits) file, anyone can access the entire workflow, see the exact connections that you made and receive the same configuration for the components.
83
84
85
rominabaila 15.1 86 == Custom functionalities ==
rominabaila 12.1 87
rominabaila 15.1 88 As mentioned before, besides all the core functionalities provided by Xircuits, some other functionalities were added to better suit the needs of the EBRAINS users.
89
90 === 1. Configure TVB models using the Phase Plane widget. ===
91
92 This functionality was added to make it easier for users to provide the correct parameters to TVB models, using the Phase Plane widget.
93
rominabaila 20.1 94 To use this functionality, drag any model from the **TVB_MODELS** (inside the components tray) into the workflow area. Then right click on the model and select the **Open Viewer** option:
rominabaila 15.1 95
rominabaila 20.1 96
97 (% style="text-align:center" %)
98 [[image:image-20221116125354-2.png||height="800" width="1130"]]
99
100
101 A new Jupyter tab should open, which contains a read-only Jupyter notebook. After following the instructions provided there, you should be able to see the Phase Plane widget associated with this particular model.
102
103 (% style="text-align:center" %)
104 [[image:image-20221116125822-1.png||height="800" width="821"]]
105
106 After configuring the parameters with the desired values, go to the Exports tab of the widget and click on **Export model configuration**. Now all you have to do is to go back to the tab where your workflow is and you will see that the model will have values set for all the parameters that you modified in the Phase Plane widget (that is all the parameters there were assigned values different than the default ones).
107
108 (% style="text-align:center" %)
109 [[image:image-20221116130425-1.png||height="900" width="1069"]]
110
111
rominabaila 21.1 112 == Workflow examples ==
rominabaila 20.1 113
rominabaila 25.2 114 (((
115 === 1. Full TVB Simulation workflow ===
116 )))
rominabaila 25.1 117
rominabaila 25.2 118 Contains all TVB components necessary for running a TVB simulation (i.e. connectivity, coupling, model, integrator, monitor, simulator).
rominabaila 25.1 119
rominabaila 25.2 120 {{html}}
rominabaila 27.1 121 <iframe src="https://drive.google.com/file/d/14sVjWXmtfZB-Zt7i3MA26-MiNWwv3jZI/preview" width="1280" height="720" allow="autoplay"></iframe>
rominabaila 25.2 122 {{/html}}
123
124
125 === 2. Configuring model parameters using the PhasePlaneWidget: ===
126
127 Same workflow as before, but the parameter for the model used in simulation are set using the PhasePlaneWidget.
128
rominabaila 26.1 129 {{html}}
rominabaila 27.1 130 <iframe src="https://drive.google.com/file/d/1Puoi4-Ej4BhVwtdRzciPD_qNKMF0HvGT/preview" width="1280" height="720" allow="autoplay"></iframe>
rominabaila 26.1 131 {{/html}}
rominabaila 25.3 132
133
134 === 3. Using siibra to retrieve connectivities from the EBRAINS KG ===
135
136 A simulation workflow where **siibra **is used to retrieve a connectivity from the EBRAINS KG. That connectivity is fed into a TVB Simulator, where the rest of the parameters (coupling, model, etc.) are set to default values.
137
rominabaila 26.1 138 {{html}}
rominabaila 27.1 139 <iframe src="https://drive.google.com/file/d/1bakH6ZD96eMHnYSw1aasF_gNXt8sBS7D/preview" width="1280" height="720" allow="autoplay"></iframe>
rominabaila 26.1 140 {{/html}}
141
142
143 === 4. Run a workflow inside an HPB job ===
144
145 A workflow simulation which is run remotely, by submitting a job to an HPC site and getting back the results (TimeSeries object).
146
rominabaila 27.1 147 {{html}}<iframe src="https://drive.google.com/file/d/1rvcj_9lGtR069iXlL3Rm1czMNdA3qmGM/preview" width="1280" height="720" allow="autoplay"></iframe>{{/html}}
rominabaila 26.1 148
Public

TVB Widgets