From 663b85d94aaa354c08cdee82eb783d1fc9723207 Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Sun, 26 Sep 2021 16:34:21 -0300 Subject: [PATCH 1/8] gsoc devmessias week 11 --- .../2021/2021-16-08-gsoc-devmessias-11.rst | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst diff --git a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst new file mode 100644 index 000000000..54b45b1d8 --- /dev/null +++ b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst @@ -0,0 +1,78 @@ +Hi everyone! My name is Bruno Messias. Currently I'm a Ph.D student at USP/Brazil. This summer I'll develop new tools +and features for FURY-GL Specifically, I'll focus on developing a system for collaborative visualization of large +network layouts using FURY and VTK. + +## What did I do this week? + +#### FURY + +* [ + PR fury-gl/fury#489: +](https://github.com/fury-gl/fury/pull/489) + + I've created the PR that will allow FURY to draw hundreds thousands of labels using texture maps. By default, this PR give to + FURY three pre-built texture maps using different fonts. However, is quite easy to create new fonts to be used in a visualization. + It's was quite hard to develop the shader code and find the correct positions of the texture maps to be used in the shader. Because we + used the freetype-py to generate the texture and packing the glyps. However, the lib has some examples with bugs. But fortunelly, + now everthing is woking on FURY. I've also created two different examples to show how this PR works. + + * + + The first example, viz_huge_amount_of_labels.py, shows that feature has a realy good performance. The user can + draw hundreds of thounsands of characters in a regular computer. + + ![](https://user-images.githubusercontent.com/6979335/129643743-6cb12c06-3415-4a02-ba43-ccc97003b02d.png) + + * The second example, viz_billboad_labels.py, shows the different behaviors of the label actor. In addition, presents + to the user how to create a new texture atlas font to be used across different visualizations. + +* [ + PR fury-gl/fury#437: + ](https://github.com/fury-gl/fury/pull/437) + + * ##### Fix: avoid multiple OpenGl context on windows using asyncio + + The streaming system must be generic, but opengl and vtk behaves in uniques ways in each Operating System. Thus, can be tricky + to have the same behavior acrros different OS. One hard stuff that we founded is that was not possible to use my + TimeIntervals objects (implemented with threading module) with vtk. The reason for this impossibility is because we can't use + vtk in windows in different threads. But fortunely, moving from the threading (multithreading) to the asyncio approcach (concurrency) + have fixed this issue and now the streaming system is ready to be used anywhere. + + * ##### Flickering + + Finally, I could found the cause of the flickering effect on the streaming system. + This flickering was appearing only when the streaming was created using the Widget object. + The cause seems to be a bug or a strange behavior from vtk. + Calling + +iren.MouseWheelForwardEvent() + or + +iren.MouseWheelBackwardEvent() + inside of a + thread without invoking the Start method from a vtk instance produces a memory corruption. + Fortunately, I could fix this behavior and now the streaming system is working without this glitch effect. + +#### + FURY/Helios + +* [ + PR fury-gl/helios#24 :](https://github.com/fury-gl/helios/pull/24) + +This uses the +[ + PRfury-gl/fury#489: +](https://github.com/fury-gl/fury/pull/489) to give the network label feature to helios. Is possible to draw node labels, update the colors, change the positions at runtime. + In addition, when a network layout algorithm is running this will automatically update the node labels positions to follow the + nodes across the screen. + +![](https://user-images.githubusercontent.com/6979335/129642582-fc6785d8-0e4f-4fdd-81f4-b2552e1ff7c7.png) + +* [ + PR fury-gl/helios#23: Merged. ](https://github.com/fury-gl/helios/pull/23) + +This PR granted compatibility between IPC Layouts and Windows. Besides that , now is quite easier to create new network layouts using inter process communication + +## Did I get stuck anywhere? + +I did not get stuck this week. From 68b7e47a367f6134fd915f60f63936182409bdf3 Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Sun, 26 Sep 2021 16:45:46 -0300 Subject: [PATCH 2/8] gsoc devmessias week 10 --- .../2021/2021-09-08-gsoc-devmessias-10.rst | 48 +++++++ .../2021/2021-16-08-gsoc-devmessias-11.rst | 124 ++++++++++-------- 2 files changed, 119 insertions(+), 53 deletions(-) create mode 100644 docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst diff --git a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst new file mode 100644 index 000000000..bb86a4559 --- /dev/null +++ b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst @@ -0,0 +1,48 @@ +Hi everyone! My name is Bruno Messias. Currently I'm a Ph.D student at +USP/Brazil. This summer I'll develop new tools and features for FURY-GL +Specifically, I'll focus on developing a system for collaborative +visualization of large network layouts using FURY and VTK. + +What did I do this week? +------------------------ + +FURY/Helios +^^^^^^^^^^^ + +- `PR fury-gl/helios#22 + : `__ Helios Documentation + Improvements. +- `PR fury-gl/helios#23: `__ + A PR that makes helios IPCLayout system compatible with Windows. + +FURY +^^^^ + +- `PR fury-gl/fury#484: I've found and fixed a bug in FURY time + managment system `__ +- `PR fury-gl/fury#437: `__ + + - Fixed the tests on Windows + - Improve the streaming memory managment system for IPC + communication + +- I've developing a featurehat will allows FURY to draw hundreds + thousands of labels using texture maps and signed distance functions. + Until now I've a sketch that at least is able to draw the labels + using the markers billboards and bitmap fonts |image1| +- `PR fury-gl/fury#432: `__ + minor improvements +- `PR #474 `__ Helped to + review this PR + +Did I get stuck anywhere? +------------------------- + +I did not get stuck this week. + +What is coming up next? +----------------------- + +I’ll discuss that with my mentors tomorrow. + +.. |image1| image:: https://user-images.githubusercontent.com/6979335/128761833-53f53e2c-5bc0-4ff3-93c4-0ad01dc7d8eb.png diff --git a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst index 54b45b1d8..610c30089 100644 --- a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst +++ b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst @@ -1,78 +1,96 @@ -Hi everyone! My name is Bruno Messias. Currently I'm a Ph.D student at USP/Brazil. This summer I'll develop new tools -and features for FURY-GL Specifically, I'll focus on developing a system for collaborative visualization of large -network layouts using FURY and VTK. +Hi everyone! My name is Bruno Messias. Currently I’m a Ph.D student at +USP/Brazil. This summer I’ll develop new tools and features for FURY-GL +Specifically, I’ll focus on developing a system for collaborative +visualization of large network layouts using FURY and VTK. -## What did I do this week? +What did I do this week? +------------------------ -#### FURY +FURY +^^^^ -* [ - PR fury-gl/fury#489: -](https://github.com/fury-gl/fury/pull/489) +- `PR fury-gl/fury#489: `__ - I've created the PR that will allow FURY to draw hundreds thousands of labels using texture maps. By default, this PR give to - FURY three pre-built texture maps using different fonts. However, is quite easy to create new fonts to be used in a visualization. - It's was quite hard to develop the shader code and find the correct positions of the texture maps to be used in the shader. Because we - used the freetype-py to generate the texture and packing the glyps. However, the lib has some examples with bugs. But fortunelly, - now everthing is woking on FURY. I've also created two different examples to show how this PR works. +| I’ve created the PR that will allow FURY to draw hundreds thousands of + labels using texture maps. By default, this PR give to FURY three + pre-built texture maps using different fonts. However, is quite easy + to create new fonts to be used in a visualization. +| It’s was quite hard to develop the shader code and find the correct + positions of the texture maps to be used in the shader. Because we + used the freetype-py to generate the texture and packing the glyps. + However, the lib has some examples with bugs. But fortunelly, now + everthing is woking on FURY. I’ve also created two different examples + to show how this PR works. - * +:: - The first example, viz_huge_amount_of_labels.py, shows that feature has a realy good performance. The user can - draw hundreds of thounsands of characters in a regular computer. + * - ![](https://user-images.githubusercontent.com/6979335/129643743-6cb12c06-3415-4a02-ba43-ccc97003b02d.png) + The first example, viz_huge_amount_of_labels.py, shows that feature has a realy good performance. The user can + draw hundreds of thounsands of characters in a regular computer. - * The second example, viz_billboad_labels.py, shows the different behaviors of the label actor. In addition, presents - to the user how to create a new texture atlas font to be used across different visualizations. + ![](https://user-images.githubusercontent.com/6979335/129643743-6cb12c06-3415-4a02-ba43-ccc97003b02d.png) -* [ - PR fury-gl/fury#437: - ](https://github.com/fury-gl/fury/pull/437) + * The second example, viz_billboad_labels.py, shows the different behaviors of the label actor. In addition, presents + to the user how to create a new texture atlas font to be used across different visualizations. - * ##### Fix: avoid multiple OpenGl context on windows using asyncio +- `PR fury-gl/fury#437: `__ - The streaming system must be generic, but opengl and vtk behaves in uniques ways in each Operating System. Thus, can be tricky - to have the same behavior acrros different OS. One hard stuff that we founded is that was not possible to use my - TimeIntervals objects (implemented with threading module) with vtk. The reason for this impossibility is because we can't use - vtk in windows in different threads. But fortunely, moving from the threading (multithreading) to the asyncio approcach (concurrency) - have fixed this issue and now the streaming system is ready to be used anywhere. + - .. rubric:: Fix: avoid multiple OpenGl context on windows using + asyncio + :name: fix-avoid-multiple-opengl-context-on-windows-using-asyncio - * ##### Flickering + :: - Finally, I could found the cause of the flickering effect on the streaming system. - This flickering was appearing only when the streaming was created using the Widget object. - The cause seems to be a bug or a strange behavior from vtk. - Calling + The streaming system must be generic, but opengl and vtk behaves in uniques ways in each Operating System. Thus, can be tricky + to have the same behavior acrros different OS. One hard stuff that we founded is that was not possible to use my + TimeIntervals objects (implemented with threading module) with vtk. The reason for this impossibility is because we can't use + vtk in windows in different threads. But fortunely, moving from the threading (multithreading) to the asyncio approcach (concurrency) + have fixed this issue and now the streaming system is ready to be used anywhere. -iren.MouseWheelForwardEvent() - or + - .. rubric:: Flickering + :name: flickering -iren.MouseWheelBackwardEvent() - inside of a - thread without invoking the Start method from a vtk instance produces a memory corruption. - Fortunately, I could fix this behavior and now the streaming system is working without this glitch effect. + :: -#### - FURY/Helios + Finally, I could found the cause of the flickering effect on the streaming system. + This flickering was appearing only when the streaming was created using the Widget object. + The cause seems to be a bug or a strange behavior from vtk. + Calling -* [ - PR fury-gl/helios#24 :](https://github.com/fury-gl/helios/pull/24) +iren.MouseWheelForwardEvent() or + +iren.MouseWheelBackwardEvent() inside of a thread without invoking the +Start method from a vtk instance produces a memory corruption. +Fortunately, I could fix this behavior and now the streaming system is +working without this glitch effect. + +:: + + FURY/Helios + +- `PR fury-gl/helios#24 + : `__ This uses the -[ - PRfury-gl/fury#489: -](https://github.com/fury-gl/fury/pull/489) to give the network label feature to helios. Is possible to draw node labels, update the colors, change the positions at runtime. - In addition, when a network layout algorithm is running this will automatically update the node labels positions to follow the - nodes across the screen. +`PRfury-gl/fury#489: `__ to +give the network label feature to helios. Is possible to draw node +labels, update the colors, change the positions at runtime. In addition, +when a network layout algorithm is running this will automatically +update the node labels positions to follow the nodes across the screen. -![](https://user-images.githubusercontent.com/6979335/129642582-fc6785d8-0e4f-4fdd-81f4-b2552e1ff7c7.png) +|image1| -* [ - PR fury-gl/helios#23: Merged. ](https://github.com/fury-gl/helios/pull/23) +- `PR fury-gl/helios#23: + Merged. `__ -This PR granted compatibility between IPC Layouts and Windows. Besides that , now is quite easier to create new network layouts using inter process communication +This PR granted compatibility between IPC Layouts and Windows. Besides +that , now is quite easier to create new network layouts using inter +process communication -## Did I get stuck anywhere? +Did I get stuck anywhere? +------------------------- I did not get stuck this week. + +.. |image1| image:: https://user-images.githubusercontent.com/6979335/129642582-fc6785d8-0e4f-4fdd-81f4-b2552e1ff7c7.png From 5a84a048967829b0b91d5d570f1406f7d5c560b6 Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Sun, 26 Sep 2021 17:25:56 -0300 Subject: [PATCH 3/8] devmessias gsoc final report --- ...021-08-23-gsoc-devmessias-final-report.rst | 422 ++++++++++++++++++ 1 file changed, 422 insertions(+) create mode 100644 docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst diff --git a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst new file mode 100644 index 000000000..e35abc141 --- /dev/null +++ b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst @@ -0,0 +1,422 @@ +.. raw:: html + +
+ +.. raw:: html + +
+ +.. raw:: html + +
+ +.. raw:: html + +
+ +Google Summer of Code 2021 Final Work Product +============================================= + +- **Name:** Bruno Messias +- **Organisation:** Python Software Foundation +- **Sub-Organisation:** FURY +- **Project:** A system for collaborative visualization of large + network layouts using FURY + +Abstract +-------- + +We have changed some points of my project in the first meeting. +Specifically, we focused the efforts into developing a streaming system +using the WebRTC protocol that could be used in more generic scenarios +than just the network visualization. In addition to that, we have opted +to develop the network visualization for fury as a separated repository +and package available `here `__. The +name Helios was selected for this new network visualization system based +on the Fury rendering pipeline. + +Proposed Objectives +------------------- + +- Create a streaming system (stadia-like) for FURY + + - Should work in a low-bandwidth scenario + - Should allow user interactions and collaboration across the + Internet using a web-browser + +- Helios Network System objectives: + + - Implement the Force-Directed Algorithm with examples + - Implement the ForceAtlas2 algorithm using cugraph with examples + - Implement Minimum-Distortion Embeddings algorithm (PyMDE) and + examples + - Non-blocking network algorithms computation avoiding the GIL using + the Shared Memory approach + - Create the documentation and the actions for the CI + +- Stretch Goals: + + - Create an actor in FURY to draw text efficiently using shaders + - Add support to draw millions of nodes using FURY + - Add support to control the opengl state on FURY + +Objectives Completed +-------------------- + +- .. rubric:: Create a streaming system (stadia-like) for FURY + :name: create-a-streaming-system-stadia-like-for-fury + + There are several reasons to have a streaming system for data + visualization. Because I am doing my Ph.D. in a developing country I + always need to think of the less expensive solutions to use the + computational resources available. For example, with the GPU’s prices + increasing, it is necessary to share the a single machine with GPU + with other users at different locations. + + To construct the streaming system for my project we have opted to + follow three main properties and behaviors: + + 1. avoid blocking the code execution in the main thread (where the + vtk/fury instance resides) + 2. work inside of a low bandwidth environment + 3. make it easy and cheap to share the rendering result. For example, + using the free version of ``ngrok`` + + To achieve the first property we need to circumvent the GIL and allow + python code to execute in parallel. Using the threading module alone + is not good enough to attain real pralellism as Python calls in the + same process can not execute concurrently. In addition to that, to + achieve better organization it is desirable to define the server + system as an uncoupled module from the rendering pipeline. Therefore, + I have chosen to employ the multiprocessing approach for that. The + second and third property can be only achieved choosing a suitable + protocol for transfering the rendered results to the client. We have + opted to implement two streaming protocols: the MJPEG and the WebRTC. + The latter is more suitable for low-bandwidth scenarios [1]. + + The image below shows a simple representation of the streaming + system. + + .. raw:: html + +
+ + .. raw:: html + +
+ + The video below shows how our streaming system works smottly and can + be easily integrated inside of a Jupyter notebook. + +`Video: WebRTC Streaming + +Ngrok `__ + +`Video: WebRTC Streaming + +Jupyter `__ + +*Pull Requests:* \* https://github.com/fury-gl/fury/pull/480 + +- .. rubric:: 2D and 3D marker actor + :name: d-and-3d-marker-actor + + This feature gave FURY the ability to efficiently draw millions of + markers and impostor 3D spheres. This feature was essential for the + development of Helios. This feature work with signed distance fields + (SDFs) you can get more information about how SDFs works here [4] . + + The image bellow shows 1 million of markers rendered using an Intel + HD graphics 3000. + +|image1| + +- .. rubric:: Fine-Tunning the OpenGl State + :name: fine-tunning-the-opengl-state + + Sometimes users may need to have finer control on how OpenGL will + render the actors. This can be useful when they need to create + specialized visualization effects or to improve the performance. + + In this PR I have worked in a feature that allows FURY to control the + OpenGL context created by VTK + + *Pull Request:* + + - https://github.com/fury-gl/fury/pull/432 + +- .. rubric:: Helios Network Visualization Lib: Network Layout + Algorithms + :name: helios-network-visualization-lib-network-layout-algorithms + + **Case 1:** Suppose that you need to monitor a hashtag and build a + social graph. You want to interact with the graph and at the same + time get insights about the structure of the user interactions. To + get those insights you can perform a node embedding using any kind of + network layout algorithm, such as force-directed or minimum + distortion embeddings. + + **Case 2:** Suppose that you are modelling a network dynamic such as + an epidemic spreading or a Kuramoto model. In some of those network + dynamics a node can change the state and the edges related to the + node must be deleted. For example, in an epidemic model a node can + represent a person who died due to a disease. Consequently, the + layout of the network must be recomputed to give better insights. + + In the described cases, if we want a better (UX) and at the same time + a more practical and insightful application of Helios, the employed + layout algorithms should not block any kind of computation in the + main thread. + + In Helios we already have a lib written in C (with a python wrapper) + which performs the force-directed layout algorithm using separated + threads avoiding the GIL problem and consequently avoiding blocking + the main thread. But what about the other open-source network layout + libs available on the internet? Unfortunately, most of those libs + have not been implemented like Helios force-directed methods and + consequently, if we want to update the network layout the Python + interpreter will block the computation and user interaction in your + network visualization. + + My solution for having PyMDE and CuGraph-ForceAtlas not blocking the + main thread was to break the network layout method into two different + types of processes: A and B and communicate both process using the + Shared Memory approach. You can more information about this PR + through my following posts [2], [3]. + +The image bellow show an example that I made and is available at +https://github.com/fury-gl/helios/blob/main/docs/examples/viz_mde.py + +|image2| *Pull Requests:* + +- **MDE Layout:** https://github.com/fury-gl/helios/pull/6 + +- **CuGraph ForceAtlas2** https://github.com/fury-gl/helios/pull/13 + +- **Force-Directed and MDE improvements** + https://github.com/fury-gl/helios/pull/14 + +- .. rubric:: Helios Network Visualization Lib: Visual Aspects + :name: helios-network-visualization-lib-visual-aspects + +I’ve made several stuffs to give Helios a better visual aspects. One of +them was to give a smooth real-time network layout animations. Because +the layout computations happens into a different process that the +process responsible to render the network was necessary to record the +positions and communicate the state of layout between both process. + +The GIF bellow shows how the network layout through IPC behaved before +these modification + +.. raw:: html + +
+ +.. raw:: html + +
+ +Bellow, you can see how after those modifications the visual aspect is +better. + +.. raw:: html + +
+ +.. raw:: html + +
+ +*Pull Requests:* + +- **OpenGL SuperActors:** https://github.com/fury-gl/helios/pull/1 + +- **Fixed the flickering effect** + https://github.com/fury-gl/helios/pull/10 + +- **Improvements in the network node visual aspects** + https://github.com/fury-gl/helios/pull/15 + +- **Smooth animations when using IPC layouts** + https://github.com/fury-gl/helios/pull/17 + +- .. rubric:: Helios Network Visualization Lib: CI and Documentation + :name: helios-network-visualization-lib-ci-and-documentation + +Because Helios was a project that begins in my GSoC project It was +necessary to create the documentation, hosting and more. Now we have a +online documentation available at https://heliosnetwork.io/ altough the +documentation still need some improvements. + +Below is presented the Helios Logo which was developed by my mentor +Filipi Nascimento. + +.. raw:: html + +
+ +.. raw:: html + +
+ +*Pull Requests:* + +- **CI and pytests:** https://github.com/fury-gl/helios/pull/5, + https://github.com/fury-gl/helios/pull/20 + +- **Helios Logo, Sphinx Gallery and API documentation** + https://github.com/fury-gl/helios/pull/18 + +- **Documentation improvements:** + https://github.com/fury-gl/helios/pull/8 + +- .. rubric:: Objectives in Progress + :name: objectives-in-progress + +- .. rubric:: Draw texts on FURY and Helios + :name: draw-texts-on-fury-and-helios + + This two PRs allows FURY and Helios to draw millions of characters in + VTK windows instance with low computational resources consumptions. I + still working on that, finishing the SDF font rendering which the + theory behinds was developed here [5]. + + *Pull Requests:* + + - https://github.com/fury-gl/helios/pull/24 + + - https://github.com/fury-gl/fury/pull/489 + + .. raw:: html + +
+ + .. raw:: html + +
+ +- .. rubric:: GSoC weekly Blogs + :name: gsoc-weekly-blogs + + Weekly blogs were added to the FURY Website. + + *Pull Requests:* + + - **First Evaluation:** https://github.com/fury-gl/fury/pull/476 + - **Second Evaluation:** TBD + +Timeline +-------- + ++----------+-----------------------------+-----------------------------+ +| Date | Description | Blog Link | ++==========+=============================+=============================+ +| Week | Welcome to my weekly Blogs! | `Weekly Check-in | +| 1(08- | | #1 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Post #1: A Stadia-like | `Weekly Check-in | +| 2(14- | system for data | # | +| 06-2021) | visualization | 2 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | 2d and 3d fake impostors | `Weekly Check-in | +| 3(21- | marker; fine-tunning | #3 `__ | +| | streaming system; | | +| | first-version of helios: | | +| | the network visualization | | +| | lib for helios | | ++----------+-----------------------------+-----------------------------+ +| Week | Post #2: SOLID, monkey | `Weekly Check-in | +| 4(28- | patching a python issue and | #4 | +| 06-2020) | network layouts through | `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Code refactoring; 2d | `Weekly Check-in | +| 5(05- | network layouts for Helios; | #5 `__ | +| | algorithm using the IPC | | +| | approach | | ++----------+-----------------------------+-----------------------------+ +| Week | Post #3: Network layout | `Weekly Check-in | +| 6(12- | algorithms using IPC | #6 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Helios IPC network layout | `eekly Check-in | +| 7(19- | algorithms support for | #7 `__ | +| | ForceAtlas2 network layout | | +| | using cugraph/cuda | | ++----------+-----------------------------+-----------------------------+ +| Week | Helios CI, Helios | `Weekly Check-in | +| 8(26- | documentation | #8 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Helios documentation; | `Weekly Check-in | +| 9(02- | improved the examples and | #9 `__ | +| | some improvements in the | | +| | compatibility removing some | | +| | dependencies | | ++----------+-----------------------------+-----------------------------+ +| Week | Helios documentation | `Weekly Check-in | +| 10(09- | improvements; found and | #10 `__ | +| | improved the memory | | +| | management system for the | | +| | network layout algorithms | | +| | using IPC | | ++----------+-----------------------------+-----------------------------+ +| Week | Created a PR that allows | `Weekly Check-in | +| 11(16- | FURY to draw hundred of | #11 `__ | +| | fixed the flickering effect | | +| | on the streaming system; | | +| | helios node labels feature; | | +| | finalizing remaining PRs | | ++----------+-----------------------------+-----------------------------+ + +Detailed weekly tasks, progress and work done can be found +`here `__. + +References +~~~~~~~~~~ + +[1] ( Python GSoC - Post #1 - A Stadia-like system for data +visualization - demvessias s Blog, n.d.; +https://blogs.python-gsoc.org/en/demvessiass-blog/post-1-a-stadia-like-system-for-data-visualization/ + +[2] Python GSoC - Post #2: SOLID, monkey patching a python issue and +network layouts through WebRTC - demvessias s Blog, n.d.; +https://blogs.python-gsoc.org/en/demvessiass-blog/post-2-solid-monkey-patching-a-python-issue-and-network-layouts-through-webrtc/ + +[3] Python GSoC - Post #3: Network layout algorithms using IPC - +demvessias s Blog, +n.d.)https://blogs.python-gsoc.org/en/demvessiass-blog/post-3-network-layout-algorithms-using-ipc/ + +[4] Rougier, N.P., 2018. An open access book on Python, OpenGL and +Scientific Visualization [WWW Document]. An open access book on Python, +OpenGL and Scientific Visualization. URL +https://github.com/rougier/python-opengl (accessed 8.21.21). + +[5] Green, C., 2007. Improved alpha-tested magnification for vector +textures and special effects, in: ACM SIGGRAPH 2007 Courses on - +SIGGRAPH ’07. Presented at the ACM SIGGRAPH 2007 courses, ACM Press, San +Diego, California, p. 9. https://doi.org/10.1145/1281500.1281665 + +.. |image1| image:: https://user-images.githubusercontent.com/6979335/116004971-70927780-a5db-11eb-8363-8c0757574eb4.png +.. |image2| image:: https://user-images.githubusercontent.com/6979335/125310065-a3a9f480-e308-11eb-98d9-0ff5406a0e96.gif From 1e1677d0a237614beebfe8ae849e42fe5709470c Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Thu, 30 Sep 2021 10:40:33 -0300 Subject: [PATCH 4/8] fix: add headers to gsoc posts --- ...021-08-23-gsoc-devmessias-final-report.rst | 32 +- .../2021/2021-16-08-gsoc-devmessias-11.rst | 8 + ...021-23-08-gsoc-devmessias-final-report.rst | 404 ++++++++++++++++++ 3 files changed, 420 insertions(+), 24 deletions(-) create mode 100644 docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst diff --git a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst index e35abc141..8e055d0fe 100644 --- a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst +++ b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst @@ -1,19 +1,3 @@ -.. raw:: html - -
- -.. raw:: html - -
- -.. raw:: html - -
- -.. raw:: html - -
- Google Summer of Code 2021 Final Work Product ============================================= @@ -67,7 +51,7 @@ Objectives Completed :name: create-a-streaming-system-stadia-like-for-fury There are several reasons to have a streaming system for data - visualization. Because I am doing my Ph.D. in a developing country I + visualization. Because I am doing my Ph.D. in developing country, I always need to think of the less expensive solutions to use the computational resources available. For example, with the GPU’s prices increasing, it is necessary to share the a single machine with GPU @@ -84,7 +68,7 @@ Objectives Completed To achieve the first property we need to circumvent the GIL and allow python code to execute in parallel. Using the threading module alone - is not good enough to attain real pralellism as Python calls in the + is not good enough to reach real parallelism as Python calls in the same process can not execute concurrently. In addition to that, to achieve better organization it is desirable to define the server system as an uncoupled module from the rendering pipeline. Therefore, @@ -105,7 +89,7 @@ Objectives Completed - The video below shows how our streaming system works smottly and can + The video below shows how our streaming system works smothly and can be easily integrated inside of a Jupyter notebook. `Video: WebRTC Streaming + @@ -124,7 +108,7 @@ Jupyter -Bellow, you can see how after those modifications the visual aspect is +below, you can see how after those modifications the visual aspect is better. .. raw:: html @@ -241,7 +225,7 @@ better. - .. rubric:: Helios Network Visualization Lib: CI and Documentation :name: helios-network-visualization-lib-ci-and-documentation -Because Helios was a project that begins in my GSoC project It was +Because Helios was an project that begins in my GSoC project It was necessary to create the documentation, hosting and more. Now we have a online documentation available at https://heliosnetwork.io/ altough the documentation still need some improvements. diff --git a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst index 610c30089..e148b594f 100644 --- a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst +++ b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst @@ -1,3 +1,11 @@ +Week #11: Welcome to my weekly Blogs! +==================================== + +.. post:: August 16 2021 + :author: Bruno Messias + :tags: google + :category: gsoc + Hi everyone! My name is Bruno Messias. Currently I’m a Ph.D student at USP/Brazil. This summer I’ll develop new tools and features for FURY-GL Specifically, I’ll focus on developing a system for collaborative diff --git a/docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst b/docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst new file mode 100644 index 000000000..d6cbe59f4 --- /dev/null +++ b/docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst @@ -0,0 +1,404 @@ +Google Summer of Code 2021 Final Work Product +============================================= +.. post:: August 23 2021 + :author: Bruno Messias + :tags: google + :category: gsoc + +Abstract +-------- + +We have changed some points of my project in the first meeting. +Specifically, we focused the efforts into developing a streaming system +using the WebRTC protocol that could be used in more generic scenarios +than just the network visualization. In addition to that, we have opted +to develop the network visualization for fury as a separated repository +and package available `here `__. The +name Helios was selected for this new network visualization system based +on the Fury rendering pipeline. + +Proposed Objectives +------------------- + +- Create a streaming system (stadia-like) for FURY + + - Should work in a low-bandwidth scenario + - Should allow user interactions and collaboration across the + Internet using a web-browser + +- Helios Network System objectives: + + - Implement the Force-Directed Algorithm with examples + - Implement the ForceAtlas2 algorithm using cugraph with examples + - Implement Minimum-Distortion Embeddings algorithm (PyMDE) and + examples + - Non-blocking network algorithms computation avoiding the GIL using + the Shared Memory approach + - Create the documentation and the actions for the CI + +- Stretch Goals: + + - Create an actor in FURY to draw text efficiently using shaders + - Add support to draw millions of nodes using FURY + - Add support to control the opengl state on FURY + +Objectives Completed +-------------------- + +- .. rubric:: Create a streaming system (stadia-like) for FURY + :name: create-a-streaming-system-stadia-like-for-fury + + There are several reasons to have a streaming system for data + visualization. Because I am doing my Ph.D. in developing country, I + always need to think of the less expensive solutions to use the + computational resources available. For example, with the GPU’s prices + increasing, it is necessary to share the a single machine with GPU + with other users at different locations. + + To construct the streaming system for my project we have opted to + follow three main properties and behaviors: + + 1. avoid blocking the code execution in the main thread (where the + vtk/fury instance resides) + 2. work inside of a low bandwidth environment + 3. make it easy and cheap to share the rendering result. For example, + using the free version of ``ngrok`` + + To achieve the first property we need to circumvent the GIL and allow + python code to execute in parallel. Using the threading module alone + is not good enough to reach real parallelism as Python calls in the + same process can not execute concurrently. In addition to that, to + achieve better organization it is desirable to define the server + system as an uncoupled module from the rendering pipeline. Therefore, + I have chosen to employ the multiprocessing approach for that. The + second and third property can be only achieved choosing a suitable + protocol for transfering the rendered results to the client. We have + opted to implement two streaming protocols: the MJPEG and the WebRTC. + The latter is more suitable for low-bandwidth scenarios [1]. + + The image below shows a simple representation of the streaming + system. + + .. raw:: html + +
+ + .. raw:: html + +
+ + The video below shows how our streaming system works smothly and can + be easily integrated inside of a Jupyter notebook. + +`Video: WebRTC Streaming + +Ngrok `__ + +`Video: WebRTC Streaming + +Jupyter `__ + +*Pull Requests:* \* https://github.com/fury-gl/fury/pull/480 + +- .. rubric:: 2D and 3D marker actor + :name: d-and-3d-marker-actor + + This feature gave FURY the ability to efficiently draw millions of + markers and impostor 3D spheres. This feature was essential for the + development of Helios. This feature work with signed distance fields + (SDFs) you can get more information about how SDFs works here [4] . + + The image below shows 1 million of markers rendered using an Intel + HD graphics 3000. + +|image1| + +- .. rubric:: Fine-Tunning the OpenGl State + :name: fine-tunning-the-opengl-state + + Sometimes users may need to have finer control on how OpenGL will + render the actors. This can be useful when they need to create + specialized visualization effects or to improve the performance. + + In this PR I have worked in a feature that allows FURY to control the + OpenGL context created by VTK + + *Pull Request:* + + - https://github.com/fury-gl/fury/pull/432 + +- .. rubric:: Helios Network Visualization Lib: Network Layout + Algorithms + :name: helios-network-visualization-lib-network-layout-algorithms + + **Case 1:** Suppose that you need to monitor a hashtag and build a + social graph. You want to interact with the graph and at the same + time get insights about the structure of the user interactions. To + get those insights you can perform a node embedding using any kind of + network layout algorithm, such as force-directed or minimum + distortion embeddings. + + **Case 2:** Suppose that you are modelling a network dynamic such as + an epidemic spreading or a Kuramoto model. In some of those network + dynamics a node can change the state and the edges related to the + node must be deleted. For example, in an epidemic model a node can + represent a person who died due to a disease. Consequently, the + layout of the network must be recomputed to give better insights. + + In the described cases, if we want a better (UX) and at the same time + a more practical and insightful application of Helios, the employed + layout algorithms should not block any kind of computation in the + main thread. + + In Helios we already have a lib written in C (with a python wrapper) + which performs the force-directed layout algorithm using separated + threads avoiding the GIL problem and consequently avoiding blocking + the main thread. But what about the other open-source network layout + libs available on the internet? Unfortunately, most of those libs + have not been implemented like Helios force-directed methods and + consequently, if we want to update the network layout the Python + interpreter will block the computation and user interaction in your + network visualization. + + My solution for having PyMDE and CuGraph-ForceAtlas not blocking the + main thread was to break the network layout method into two different + types of processes: A and B and communicate both process using the + Shared Memory approach. You can more information about this PR + through my following posts [2], [3]. + +The image below show an example that I made and is available at +https://github.com/fury-gl/helios/blob/main/docs/examples/viz_mde.py + +|image2| *Pull Requests:* + +- **MDE Layout:** https://github.com/fury-gl/helios/pull/6 + +- **CuGraph ForceAtlas2** https://github.com/fury-gl/helios/pull/13 + +- **Force-Directed and MDE improvements** + https://github.com/fury-gl/helios/pull/14 + +- .. rubric:: Helios Network Visualization Lib: Visual Aspects + :name: helios-network-visualization-lib-visual-aspects + +I’ve made several stuffs to give Helios a better visual aspects. One of +them was to give a smooth real-time network layout animations. Because +the layout computations happens into a different process that the +process responsible to render the network was necessary to record the +positions and communicate the state of layout between both process. + +The GIF below shows how the network layout through IPC behaved before +these modification + +.. raw:: html + +
+ +.. raw:: html + +
+ +below, you can see how after those modifications the visual aspect is +better. + +.. raw:: html + +
+ +.. raw:: html + +
+ +*Pull Requests:* + +- **OpenGL SuperActors:** https://github.com/fury-gl/helios/pull/1 + +- **Fixed the flickering effect** + https://github.com/fury-gl/helios/pull/10 + +- **Improvements in the network node visual aspects** + https://github.com/fury-gl/helios/pull/15 + +- **Smooth animations when using IPC layouts** + https://github.com/fury-gl/helios/pull/17 + +- .. rubric:: Helios Network Visualization Lib: CI and Documentation + :name: helios-network-visualization-lib-ci-and-documentation + +Because Helios was an project that begins in my GSoC project It was +necessary to create the documentation, hosting and more. Now we have a +online documentation available at https://heliosnetwork.io/ altough the +documentation still need some improvements. + +Below is presented the Helios Logo which was developed by my mentor +Filipi Nascimento. + +.. raw:: html + +
+ +.. raw:: html + +
+ +*Pull Requests:* + +- **CI and pytests:** https://github.com/fury-gl/helios/pull/5, + https://github.com/fury-gl/helios/pull/20 + +- **Helios Logo, Sphinx Gallery and API documentation** + https://github.com/fury-gl/helios/pull/18 + +- **Documentation improvements:** + https://github.com/fury-gl/helios/pull/8 + +- .. rubric:: Objectives in Progress + :name: objectives-in-progress + +- .. rubric:: Draw texts on FURY and Helios + :name: draw-texts-on-fury-and-helios + + This two PRs allows FURY and Helios to draw millions of characters in + VTK windows instance with low computational resources consumptions. I + still working on that, finishing the SDF font rendering which the + theory behinds was developed here [5]. + + *Pull Requests:* + + - https://github.com/fury-gl/helios/pull/24 + + - https://github.com/fury-gl/fury/pull/489 + + .. raw:: html + +
+ + .. raw:: html + +
+ +- .. rubric:: GSoC weekly Blogs + :name: gsoc-weekly-blogs + + Weekly blogs were added to the FURY Website. + + *Pull Requests:* + + - **First Evaluation:** https://github.com/fury-gl/fury/pull/476 + - **Second Evaluation:** TBD + +Timeline +-------- + ++----------+-----------------------------+-----------------------------+ +| Date | Description | Blog Link | ++==========+=============================+=============================+ +| Week | Welcome to my weekly Blogs! | `Weekly Check-in | +| 1(08- | | #1 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Post #1: A Stadia-like | `Weekly Check-in | +| 2(14- | system for data | # | +| 06-2021) | visualization | 2 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | 2d and 3d fake impostors | `Weekly Check-in | +| 3(21- | marker; fine-tunning | #3 `__ | +| | streaming system; | | +| | first-version of helios: | | +| | the network visualization | | +| | lib for helios | | ++----------+-----------------------------+-----------------------------+ +| Week | Post #2: SOLID, monkey | `Weekly Check-in | +| 4(28- | patching a python issue and | #4 | +| 06-2020) | network layouts through | `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Code refactoring; 2d | `Weekly Check-in | +| 5(05- | network layouts for Helios; | #5 `__ | +| | algorithm using the IPC | | +| | approach | | ++----------+-----------------------------+-----------------------------+ +| Week | Post #3: Network layout | `Weekly Check-in | +| 6(12- | algorithms using IPC | #6 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Helios IPC network layout | `eekly Check-in | +| 7(19- | algorithms support for | #7 `__ | +| | ForceAtlas2 network layout | | +| | using cugraph/cuda | | ++----------+-----------------------------+-----------------------------+ +| Week | Helios CI, Helios | `Weekly Check-in | +| 8(26- | documentation | #8 `__ | ++----------+-----------------------------+-----------------------------+ +| Week | Helios documentation; | `Weekly Check-in | +| 9(02- | improved the examples and | #9 `__ | +| | some improvements in the | | +| | compatibility removing some | | +| | dependencies | | ++----------+-----------------------------+-----------------------------+ +| Week | Helios documentation | `Weekly Check-in | +| 10(09- | improvements; found and | #10 `__ | +| | improved the memory | | +| | management system for the | | +| | network layout algorithms | | +| | using IPC | | ++----------+-----------------------------+-----------------------------+ +| Week | Created a PR that allows | `Weekly Check-in | +| 11(16- | FURY to draw hundred of | #11 `__ | +| | fixed the flickering effect | | +| | on the streaming system; | | +| | helios node labels feature; | | +| | finalizing remaining PRs | | ++----------+-----------------------------+-----------------------------+ + +Detailed weekly tasks, progress and work done can be found +`here `__. + +References +~~~~~~~~~~ + +[1] ( Python GSoC - Post #1 - A Stadia-like system for data +visualization - demvessias s Blog, n.d.; +https://blogs.python-gsoc.org/en/demvessiass-blog/post-1-a-stadia-like-system-for-data-visualization/ + +[2] Python GSoC - Post #2: SOLID, monkey patching a python issue and +network layouts through WebRTC - demvessias s Blog, n.d.; +https://blogs.python-gsoc.org/en/demvessiass-blog/post-2-solid-monkey-patching-a-python-issue-and-network-layouts-through-webrtc/ + +[3] Python GSoC - Post #3: Network layout algorithms using IPC - +demvessias s Blog, +n.d.)https://blogs.python-gsoc.org/en/demvessiass-blog/post-3-network-layout-algorithms-using-ipc/ + +[4] Rougier, N.P., 2018. An open access book on Python, OpenGL and +Scientific Visualization [WWW Document]. An open access book on Python, +OpenGL and Scientific Visualization. URL +https://github.com/rougier/python-opengl (accessed 8.21.21). + +[5] Green, C., 2007. Improved alpha-tested magnification for vector +textures and special effects, in: ACM SIGGRAPH 2007 Courses on - +SIGGRAPH ’07. Presented at the ACM SIGGRAPH 2007 courses, ACM Press, San +Diego, California, p. 9. https://doi.org/10.1145/1281500.1281665 + +.. |image1| image:: https://user-images.githubusercontent.com/6979335/116004971-70927780-a5db-11eb-8363-8c0757574eb4.png +.. |image2| image:: https://user-images.githubusercontent.com/6979335/125310065-a3a9f480-e308-11eb-98d9-0ff5406a0e96.gif From 5be0b99872ebe030dae3e23658c1c579e55ab29b Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Fri, 21 Jan 2022 12:27:05 -0300 Subject: [PATCH 5/8] fix: gsoc posts from @devmessias --- .../2021/2021-08-02-gsoc-devmessias-9.rst | 52 +++ .../2021/2021-09-08-gsoc-devmessias-10.rst | 12 +- .../2021/2021-16-08-gsoc-devmessias-11.rst | 7 +- ...021-23-08-gsoc-devmessias-final-report.rst | 404 ------------------ 4 files changed, 61 insertions(+), 414 deletions(-) create mode 100644 docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst delete mode 100644 docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst diff --git a/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst b/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst new file mode 100644 index 000000000..433f36eae --- /dev/null +++ b/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst @@ -0,0 +1,52 @@ +Week #11: Welcome to my weekly Blogs! +==================================== + +.. post:: August 16 2021 + :author: Bruno Messias + :tags: google + :category: gsoc + + +What did I do this week? +------------------------ + +FURY/Helios +^^^^^^^^^^^ + +- `PR fury-gl/helios#22 + : `__ Helios Documentation + Improvements. +- `PR fury-gl/helios#23: `__ + A PR that makes helios IPCLayout system compatible with Windows. + +FURY +^^^^ + +- `PR fury-gl/fury#484: I've found and fixed a bug in FURY time + managment system `__ +- `PR fury-gl/fury#437: `__ + + - Fixed the tests on Windows + - Improve the streaming memory managment system for IPC + communication + +- I've developing a featurehat will allows FURY to draw hundreds + thousands of labels using texture maps and signed distance functions. + Until now I've a sketch that at least is able to draw the labels + using the markers billboards and bitmap fonts |image1| +- `PR fury-gl/fury#432: `__ + minor improvements +- `PR #474 `__ Helped to + review this PR + +Did I get stuck anywhere? +------------------------- + +I did not get stuck this week. + +What is coming up next? +----------------------- + +I’ll discuss that with my mentors tomorrow. + +.. |image1| image:: https://user-images.githubusercontent.com/6979335/128761833-53f53e2c-5bc0-4ff3-93c4-0ad01dc7d8eb.png diff --git a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst index bb86a4559..433f36eae 100644 --- a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst +++ b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst @@ -1,7 +1,11 @@ -Hi everyone! My name is Bruno Messias. Currently I'm a Ph.D student at -USP/Brazil. This summer I'll develop new tools and features for FURY-GL -Specifically, I'll focus on developing a system for collaborative -visualization of large network layouts using FURY and VTK. +Week #11: Welcome to my weekly Blogs! +==================================== + +.. post:: August 16 2021 + :author: Bruno Messias + :tags: google + :category: gsoc + What did I do this week? ------------------------ diff --git a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst index e148b594f..6f100fe1e 100644 --- a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst +++ b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst @@ -1,16 +1,11 @@ Week #11: Welcome to my weekly Blogs! ==================================== -.. post:: August 16 2021 +.. post:: August 10 2021 :author: Bruno Messias :tags: google :category: gsoc -Hi everyone! My name is Bruno Messias. Currently I’m a Ph.D student at -USP/Brazil. This summer I’ll develop new tools and features for FURY-GL -Specifically, I’ll focus on developing a system for collaborative -visualization of large network layouts using FURY and VTK. - What did I do this week? ------------------------ diff --git a/docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst b/docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst deleted file mode 100644 index d6cbe59f4..000000000 --- a/docs/source/posts/2021/2021-23-08-gsoc-devmessias-final-report.rst +++ /dev/null @@ -1,404 +0,0 @@ -Google Summer of Code 2021 Final Work Product -============================================= -.. post:: August 23 2021 - :author: Bruno Messias - :tags: google - :category: gsoc - -Abstract --------- - -We have changed some points of my project in the first meeting. -Specifically, we focused the efforts into developing a streaming system -using the WebRTC protocol that could be used in more generic scenarios -than just the network visualization. In addition to that, we have opted -to develop the network visualization for fury as a separated repository -and package available `here `__. The -name Helios was selected for this new network visualization system based -on the Fury rendering pipeline. - -Proposed Objectives -------------------- - -- Create a streaming system (stadia-like) for FURY - - - Should work in a low-bandwidth scenario - - Should allow user interactions and collaboration across the - Internet using a web-browser - -- Helios Network System objectives: - - - Implement the Force-Directed Algorithm with examples - - Implement the ForceAtlas2 algorithm using cugraph with examples - - Implement Minimum-Distortion Embeddings algorithm (PyMDE) and - examples - - Non-blocking network algorithms computation avoiding the GIL using - the Shared Memory approach - - Create the documentation and the actions for the CI - -- Stretch Goals: - - - Create an actor in FURY to draw text efficiently using shaders - - Add support to draw millions of nodes using FURY - - Add support to control the opengl state on FURY - -Objectives Completed --------------------- - -- .. rubric:: Create a streaming system (stadia-like) for FURY - :name: create-a-streaming-system-stadia-like-for-fury - - There are several reasons to have a streaming system for data - visualization. Because I am doing my Ph.D. in developing country, I - always need to think of the less expensive solutions to use the - computational resources available. For example, with the GPU’s prices - increasing, it is necessary to share the a single machine with GPU - with other users at different locations. - - To construct the streaming system for my project we have opted to - follow three main properties and behaviors: - - 1. avoid blocking the code execution in the main thread (where the - vtk/fury instance resides) - 2. work inside of a low bandwidth environment - 3. make it easy and cheap to share the rendering result. For example, - using the free version of ``ngrok`` - - To achieve the first property we need to circumvent the GIL and allow - python code to execute in parallel. Using the threading module alone - is not good enough to reach real parallelism as Python calls in the - same process can not execute concurrently. In addition to that, to - achieve better organization it is desirable to define the server - system as an uncoupled module from the rendering pipeline. Therefore, - I have chosen to employ the multiprocessing approach for that. The - second and third property can be only achieved choosing a suitable - protocol for transfering the rendered results to the client. We have - opted to implement two streaming protocols: the MJPEG and the WebRTC. - The latter is more suitable for low-bandwidth scenarios [1]. - - The image below shows a simple representation of the streaming - system. - - .. raw:: html - -
- - .. raw:: html - -
- - The video below shows how our streaming system works smothly and can - be easily integrated inside of a Jupyter notebook. - -`Video: WebRTC Streaming + -Ngrok `__ - -`Video: WebRTC Streaming + -Jupyter `__ - -*Pull Requests:* \* https://github.com/fury-gl/fury/pull/480 - -- .. rubric:: 2D and 3D marker actor - :name: d-and-3d-marker-actor - - This feature gave FURY the ability to efficiently draw millions of - markers and impostor 3D spheres. This feature was essential for the - development of Helios. This feature work with signed distance fields - (SDFs) you can get more information about how SDFs works here [4] . - - The image below shows 1 million of markers rendered using an Intel - HD graphics 3000. - -|image1| - -- .. rubric:: Fine-Tunning the OpenGl State - :name: fine-tunning-the-opengl-state - - Sometimes users may need to have finer control on how OpenGL will - render the actors. This can be useful when they need to create - specialized visualization effects or to improve the performance. - - In this PR I have worked in a feature that allows FURY to control the - OpenGL context created by VTK - - *Pull Request:* - - - https://github.com/fury-gl/fury/pull/432 - -- .. rubric:: Helios Network Visualization Lib: Network Layout - Algorithms - :name: helios-network-visualization-lib-network-layout-algorithms - - **Case 1:** Suppose that you need to monitor a hashtag and build a - social graph. You want to interact with the graph and at the same - time get insights about the structure of the user interactions. To - get those insights you can perform a node embedding using any kind of - network layout algorithm, such as force-directed or minimum - distortion embeddings. - - **Case 2:** Suppose that you are modelling a network dynamic such as - an epidemic spreading or a Kuramoto model. In some of those network - dynamics a node can change the state and the edges related to the - node must be deleted. For example, in an epidemic model a node can - represent a person who died due to a disease. Consequently, the - layout of the network must be recomputed to give better insights. - - In the described cases, if we want a better (UX) and at the same time - a more practical and insightful application of Helios, the employed - layout algorithms should not block any kind of computation in the - main thread. - - In Helios we already have a lib written in C (with a python wrapper) - which performs the force-directed layout algorithm using separated - threads avoiding the GIL problem and consequently avoiding blocking - the main thread. But what about the other open-source network layout - libs available on the internet? Unfortunately, most of those libs - have not been implemented like Helios force-directed methods and - consequently, if we want to update the network layout the Python - interpreter will block the computation and user interaction in your - network visualization. - - My solution for having PyMDE and CuGraph-ForceAtlas not blocking the - main thread was to break the network layout method into two different - types of processes: A and B and communicate both process using the - Shared Memory approach. You can more information about this PR - through my following posts [2], [3]. - -The image below show an example that I made and is available at -https://github.com/fury-gl/helios/blob/main/docs/examples/viz_mde.py - -|image2| *Pull Requests:* - -- **MDE Layout:** https://github.com/fury-gl/helios/pull/6 - -- **CuGraph ForceAtlas2** https://github.com/fury-gl/helios/pull/13 - -- **Force-Directed and MDE improvements** - https://github.com/fury-gl/helios/pull/14 - -- .. rubric:: Helios Network Visualization Lib: Visual Aspects - :name: helios-network-visualization-lib-visual-aspects - -I’ve made several stuffs to give Helios a better visual aspects. One of -them was to give a smooth real-time network layout animations. Because -the layout computations happens into a different process that the -process responsible to render the network was necessary to record the -positions and communicate the state of layout between both process. - -The GIF below shows how the network layout through IPC behaved before -these modification - -.. raw:: html - -
- -.. raw:: html - -
- -below, you can see how after those modifications the visual aspect is -better. - -.. raw:: html - -
- -.. raw:: html - -
- -*Pull Requests:* - -- **OpenGL SuperActors:** https://github.com/fury-gl/helios/pull/1 - -- **Fixed the flickering effect** - https://github.com/fury-gl/helios/pull/10 - -- **Improvements in the network node visual aspects** - https://github.com/fury-gl/helios/pull/15 - -- **Smooth animations when using IPC layouts** - https://github.com/fury-gl/helios/pull/17 - -- .. rubric:: Helios Network Visualization Lib: CI and Documentation - :name: helios-network-visualization-lib-ci-and-documentation - -Because Helios was an project that begins in my GSoC project It was -necessary to create the documentation, hosting and more. Now we have a -online documentation available at https://heliosnetwork.io/ altough the -documentation still need some improvements. - -Below is presented the Helios Logo which was developed by my mentor -Filipi Nascimento. - -.. raw:: html - -
- -.. raw:: html - -
- -*Pull Requests:* - -- **CI and pytests:** https://github.com/fury-gl/helios/pull/5, - https://github.com/fury-gl/helios/pull/20 - -- **Helios Logo, Sphinx Gallery and API documentation** - https://github.com/fury-gl/helios/pull/18 - -- **Documentation improvements:** - https://github.com/fury-gl/helios/pull/8 - -- .. rubric:: Objectives in Progress - :name: objectives-in-progress - -- .. rubric:: Draw texts on FURY and Helios - :name: draw-texts-on-fury-and-helios - - This two PRs allows FURY and Helios to draw millions of characters in - VTK windows instance with low computational resources consumptions. I - still working on that, finishing the SDF font rendering which the - theory behinds was developed here [5]. - - *Pull Requests:* - - - https://github.com/fury-gl/helios/pull/24 - - - https://github.com/fury-gl/fury/pull/489 - - .. raw:: html - -
- - .. raw:: html - -
- -- .. rubric:: GSoC weekly Blogs - :name: gsoc-weekly-blogs - - Weekly blogs were added to the FURY Website. - - *Pull Requests:* - - - **First Evaluation:** https://github.com/fury-gl/fury/pull/476 - - **Second Evaluation:** TBD - -Timeline --------- - -+----------+-----------------------------+-----------------------------+ -| Date | Description | Blog Link | -+==========+=============================+=============================+ -| Week | Welcome to my weekly Blogs! | `Weekly Check-in | -| 1(08- | | #1 `__ | -+----------+-----------------------------+-----------------------------+ -| Week | Post #1: A Stadia-like | `Weekly Check-in | -| 2(14- | system for data | # | -| 06-2021) | visualization | 2 `__ | -+----------+-----------------------------+-----------------------------+ -| Week | 2d and 3d fake impostors | `Weekly Check-in | -| 3(21- | marker; fine-tunning | #3 `__ | -| | streaming system; | | -| | first-version of helios: | | -| | the network visualization | | -| | lib for helios | | -+----------+-----------------------------+-----------------------------+ -| Week | Post #2: SOLID, monkey | `Weekly Check-in | -| 4(28- | patching a python issue and | #4 | -| 06-2020) | network layouts through | `__ | -+----------+-----------------------------+-----------------------------+ -| Week | Code refactoring; 2d | `Weekly Check-in | -| 5(05- | network layouts for Helios; | #5 `__ | -| | algorithm using the IPC | | -| | approach | | -+----------+-----------------------------+-----------------------------+ -| Week | Post #3: Network layout | `Weekly Check-in | -| 6(12- | algorithms using IPC | #6 `__ | -+----------+-----------------------------+-----------------------------+ -| Week | Helios IPC network layout | `eekly Check-in | -| 7(19- | algorithms support for | #7 `__ | -| | ForceAtlas2 network layout | | -| | using cugraph/cuda | | -+----------+-----------------------------+-----------------------------+ -| Week | Helios CI, Helios | `Weekly Check-in | -| 8(26- | documentation | #8 `__ | -+----------+-----------------------------+-----------------------------+ -| Week | Helios documentation; | `Weekly Check-in | -| 9(02- | improved the examples and | #9 `__ | -| | some improvements in the | | -| | compatibility removing some | | -| | dependencies | | -+----------+-----------------------------+-----------------------------+ -| Week | Helios documentation | `Weekly Check-in | -| 10(09- | improvements; found and | #10 `__ | -| | improved the memory | | -| | management system for the | | -| | network layout algorithms | | -| | using IPC | | -+----------+-----------------------------+-----------------------------+ -| Week | Created a PR that allows | `Weekly Check-in | -| 11(16- | FURY to draw hundred of | #11 `__ | -| | fixed the flickering effect | | -| | on the streaming system; | | -| | helios node labels feature; | | -| | finalizing remaining PRs | | -+----------+-----------------------------+-----------------------------+ - -Detailed weekly tasks, progress and work done can be found -`here `__. - -References -~~~~~~~~~~ - -[1] ( Python GSoC - Post #1 - A Stadia-like system for data -visualization - demvessias s Blog, n.d.; -https://blogs.python-gsoc.org/en/demvessiass-blog/post-1-a-stadia-like-system-for-data-visualization/ - -[2] Python GSoC - Post #2: SOLID, monkey patching a python issue and -network layouts through WebRTC - demvessias s Blog, n.d.; -https://blogs.python-gsoc.org/en/demvessiass-blog/post-2-solid-monkey-patching-a-python-issue-and-network-layouts-through-webrtc/ - -[3] Python GSoC - Post #3: Network layout algorithms using IPC - -demvessias s Blog, -n.d.)https://blogs.python-gsoc.org/en/demvessiass-blog/post-3-network-layout-algorithms-using-ipc/ - -[4] Rougier, N.P., 2018. An open access book on Python, OpenGL and -Scientific Visualization [WWW Document]. An open access book on Python, -OpenGL and Scientific Visualization. URL -https://github.com/rougier/python-opengl (accessed 8.21.21). - -[5] Green, C., 2007. Improved alpha-tested magnification for vector -textures and special effects, in: ACM SIGGRAPH 2007 Courses on - -SIGGRAPH ’07. Presented at the ACM SIGGRAPH 2007 courses, ACM Press, San -Diego, California, p. 9. https://doi.org/10.1145/1281500.1281665 - -.. |image1| image:: https://user-images.githubusercontent.com/6979335/116004971-70927780-a5db-11eb-8363-8c0757574eb4.png -.. |image2| image:: https://user-images.githubusercontent.com/6979335/125310065-a3a9f480-e308-11eb-98d9-0ff5406a0e96.gif From a68b4a6d35bd77598fa510960908737f9889023a Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Fri, 21 Jan 2022 17:04:57 -0300 Subject: [PATCH 6/8] fix: wrong dates and missing imgs --- .../2021/2021-08-02-gsoc-devmessias-9.rst | 38 +++++++-------- ...021-08-23-gsoc-devmessias-final-report.rst | 47 +++++++------------ .../2021/2021-09-08-gsoc-devmessias-10.rst | 4 +- 3 files changed, 34 insertions(+), 55 deletions(-) diff --git a/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst b/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst index 433f36eae..82f7aa51c 100644 --- a/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst +++ b/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst @@ -1,7 +1,7 @@ -Week #11: Welcome to my weekly Blogs! +Week #09: Welcome to my weekly Blogs! ==================================== -.. post:: August 16 2021 +.. post:: August 02 2021 :author: Bruno Messias :tags: google :category: gsoc @@ -13,31 +13,27 @@ What did I do this week? FURY/Helios ^^^^^^^^^^^ + - `PR fury-gl/helios#22 : `__ Helios Documentation Improvements. -- `PR fury-gl/helios#23: `__ - A PR that makes helios IPCLayout system compatible with Windows. - + I’ve spent some time studying sphinx in order to discover how I could create a custom summary inside of a template module. + FURY ^^^^ - -- `PR fury-gl/fury#484: I've found and fixed a bug in FURY time - managment system `__ +Added my GSoC blogs to the FURY blogs as requested by my mentors. - `PR fury-gl/fury#437: `__ - - Fixed the tests on Windows - - Improve the streaming memory managment system for IPC - communication + - Docstrings improvements + - Covered more tests + - Covered tests using optional dependencies. + - Aiortc now it’s not a mandatory dependency + - improvements in memory management + +- PR #432 Fixed some typos, improved the tests and docstrings +- `PR fury-gl/fury#474: `__ +- Helped to review and made some suggestions to the PR #474 made by @mehabhalodiya. -- I've developing a featurehat will allows FURY to draw hundreds - thousands of labels using texture maps and signed distance functions. - Until now I've a sketch that at least is able to draw the labels - using the markers billboards and bitmap fonts |image1| -- `PR fury-gl/fury#432: `__ - minor improvements -- `PR #474 `__ Helped to - review this PR Did I get stuck anywhere? ------------------------- @@ -47,6 +43,4 @@ I did not get stuck this week. What is coming up next? ----------------------- -I’ll discuss that with my mentors tomorrow. - -.. |image1| image:: https://user-images.githubusercontent.com/6979335/128761833-53f53e2c-5bc0-4ff3-93c4-0ad01dc7d8eb.png +I’ll discuss that with my mentors tomorrow. \ No newline at end of file diff --git a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst index 8e055d0fe..76153d1e2 100644 --- a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst +++ b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst @@ -50,13 +50,6 @@ Objectives Completed - .. rubric:: Create a streaming system (stadia-like) for FURY :name: create-a-streaming-system-stadia-like-for-fury - There are several reasons to have a streaming system for data - visualization. Because I am doing my Ph.D. in developing country, I - always need to think of the less expensive solutions to use the - computational resources available. For example, with the GPU’s prices - increasing, it is necessary to share the a single machine with GPU - with other users at different locations. - To construct the streaming system for my project we have opted to follow three main properties and behaviors: @@ -81,12 +74,11 @@ Objectives Completed The image below shows a simple representation of the streaming system. - .. raw:: html +.. raw:: html
- - .. raw:: html - + ...
The video below shows how our streaming system works smothly and can @@ -111,7 +103,11 @@ Jupyter + + - .. rubric:: Fine-Tunning the OpenGl State :name: fine-tunning-the-opengl-state @@ -191,22 +187,19 @@ The GIF below shows how the network layout through IPC behaved before these modification .. raw:: html - +
- -.. raw:: html - +
below, you can see how after those modifications the visual aspect is better. .. raw:: html - +
- -.. raw:: html - + ...
*Pull Requests:* @@ -230,16 +223,11 @@ necessary to create the documentation, hosting and more. Now we have a online documentation available at https://heliosnetwork.io/ altough the documentation still need some improvements. -Below is presented the Helios Logo which was developed by my mentor +The Helios Logo which was developed by Filipi Nascimento. .. raw:: html - -
- -.. raw:: html - -
+ Helios Network Logo *Pull Requests:* @@ -272,9 +260,7 @@ Filipi Nascimento. .. raw:: html
- - .. raw:: html - + ...
- .. rubric:: GSoC weekly Blogs @@ -402,5 +388,4 @@ textures and special effects, in: ACM SIGGRAPH 2007 Courses on - SIGGRAPH ’07. Presented at the ACM SIGGRAPH 2007 courses, ACM Press, San Diego, California, p. 9. https://doi.org/10.1145/1281500.1281665 -.. |image1| image:: https://user-images.githubusercontent.com/6979335/116004971-70927780-a5db-11eb-8363-8c0757574eb4.png .. |image2| image:: https://user-images.githubusercontent.com/6979335/125310065-a3a9f480-e308-11eb-98d9-0ff5406a0e96.gif diff --git a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst index 433f36eae..27b8fbea3 100644 --- a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst +++ b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst @@ -1,7 +1,7 @@ -Week #11: Welcome to my weekly Blogs! +Week #10: Welcome to my weekly Blogs! ==================================== -.. post:: August 16 2021 +.. post:: August 09 2021 :author: Bruno Messias :tags: google :category: gsoc From b315c99bd547ef0a5ad7cd36a3846d8f1b1c93e3 Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Wed, 26 Jan 2022 18:58:26 -0300 Subject: [PATCH 7/8] docs: fixes styling issues and adds missing headers --- .../2021/2021-08-02-gsoc-devmessias-9.rst | 7 ++- ...021-08-23-gsoc-devmessias-final-report.rst | 16 ++--- .../2021/2021-09-08-gsoc-devmessias-10.rst | 6 +- .../2021/2021-16-08-gsoc-devmessias-11.rst | 60 ++++++++----------- 4 files changed, 40 insertions(+), 49 deletions(-) diff --git a/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst b/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst index 82f7aa51c..73a94c191 100644 --- a/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst +++ b/docs/source/posts/2021/2021-08-02-gsoc-devmessias-9.rst @@ -1,5 +1,5 @@ -Week #09: Welcome to my weekly Blogs! -==================================== +Week #09: Sphinx custom summary +=============================== .. post:: August 02 2021 :author: Bruno Messias @@ -17,7 +17,8 @@ FURY/Helios - `PR fury-gl/helios#22 : `__ Helios Documentation Improvements. - I’ve spent some time studying sphinx in order to discover how I could create a custom summary inside of a template module. + I’ve spent some time studying sphinx in order to discover how I could create a + custom summary inside of a template module. FURY ^^^^ diff --git a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst index 76153d1e2..a574d015c 100644 --- a/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst +++ b/docs/source/posts/2021/2021-08-23-gsoc-devmessias-final-report.rst @@ -1,11 +1,11 @@ -Google Summer of Code 2021 Final Work Product -============================================= - -- **Name:** Bruno Messias -- **Organisation:** Python Software Foundation -- **Sub-Organisation:** FURY -- **Project:** A system for collaborative visualization of large - network layouts using FURY +Google Summer of Code 2021 - Final Report - Bruno Messias +========================================================= + +.. post:: August 23 2021 + :author: Bruno Messias + :tags: google + :category: gsoc + Abstract -------- diff --git a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst index 27b8fbea3..1511c4c6f 100644 --- a/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst +++ b/docs/source/posts/2021/2021-09-08-gsoc-devmessias-10.rst @@ -1,5 +1,5 @@ -Week #10: Welcome to my weekly Blogs! -==================================== +Week #10: SDF Fonts +=================== .. post:: August 09 2021 :author: Bruno Messias @@ -30,7 +30,7 @@ FURY - Improve the streaming memory managment system for IPC communication -- I've developing a featurehat will allows FURY to draw hundreds +- I've developing a feature that will allows FURY to draw hundreds thousands of labels using texture maps and signed distance functions. Until now I've a sketch that at least is able to draw the labels using the markers billboards and bitmap fonts |image1| diff --git a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst index 6f100fe1e..21acb104f 100644 --- a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst +++ b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst @@ -1,7 +1,7 @@ -Week #11: Welcome to my weekly Blogs! -==================================== +Week #11: Removing the flickering effect +======================================== -.. post:: August 10 2021 +.. post:: August 16 2021 :author: Bruno Messias :tags: google :category: gsoc @@ -14,8 +14,7 @@ FURY - `PR fury-gl/fury#489: `__ -| I’ve created the PR that will allow FURY to draw hundreds thousands of - labels using texture maps. By default, this PR give to FURY three + This PR give to FURY three pre-built texture maps using different fonts. However, is quite easy to create new fonts to be used in a visualization. | It’s was quite hard to develop the shader code and find the correct @@ -25,17 +24,14 @@ FURY everthing is woking on FURY. I’ve also created two different examples to show how this PR works. -:: + The first example, viz_huge_amount_of_labels.py, shows that the user can + draw hundreds of thounsands of characters. - * - The first example, viz_huge_amount_of_labels.py, shows that feature has a realy good performance. The user can - draw hundreds of thounsands of characters in a regular computer. + |image2| - ![](https://user-images.githubusercontent.com/6979335/129643743-6cb12c06-3415-4a02-ba43-ccc97003b02d.png) - - * The second example, viz_billboad_labels.py, shows the different behaviors of the label actor. In addition, presents - to the user how to create a new texture atlas font to be used across different visualizations. + The second example, viz_billboad_labels.py, shows the different behaviors of the label actor. In addition, presents + to the user how to create a new texture atlas font to be used across different visualizations. - `PR fury-gl/fury#437: `__ @@ -43,34 +39,27 @@ FURY asyncio :name: fix-avoid-multiple-opengl-context-on-windows-using-asyncio - :: - - The streaming system must be generic, but opengl and vtk behaves in uniques ways in each Operating System. Thus, can be tricky - to have the same behavior acrros different OS. One hard stuff that we founded is that was not possible to use my - TimeIntervals objects (implemented with threading module) with vtk. The reason for this impossibility is because we can't use - vtk in windows in different threads. But fortunely, moving from the threading (multithreading) to the asyncio approcach (concurrency) - have fixed this issue and now the streaming system is ready to be used anywhere. + The streaming system must be generic, but opengl and vtk behaves in uniques ways in each Operating System. Thus, can be tricky + to have the same behavior acrros different OS. One hard stuff that we founded is that was not possible to use my + TimeIntervals objects (implemented with threading module) with vtk. The reason for this impossibility is because we can't use + vtk in windows in different threads. But fortunely, moving from the threading (multithreading) to the asyncio approcach (concurrency) + have fixed this issue and now the streaming system is ready to be used anywhere. - .. rubric:: Flickering :name: flickering - :: - - Finally, I could found the cause of the flickering effect on the streaming system. - This flickering was appearing only when the streaming was created using the Widget object. - The cause seems to be a bug or a strange behavior from vtk. - Calling - -iren.MouseWheelForwardEvent() or - -iren.MouseWheelBackwardEvent() inside of a thread without invoking the -Start method from a vtk instance produces a memory corruption. -Fortunately, I could fix this behavior and now the streaming system is -working without this glitch effect. + Finally, I could found the cause of the flickering effect on the streaming system. + This flickering was appearing only when the streaming was created using the Widget object. + The cause seems to be a bug or a strange behavior from vtk. + Calling iren.MouseWheelForwardEvent() or iren.MouseWheelBackwardEvent() + inside of a thread without invoking the + Start method from a vtk instance produces a memory corruption. + Fortunately, I could fix this behavior and now the streaming system is + working without this glitch effect. -:: - FURY/Helios +FURY/Helios +^^^^^^^^^^^ - `PR fury-gl/helios#24 : `__ @@ -97,3 +86,4 @@ Did I get stuck anywhere? I did not get stuck this week. .. |image1| image:: https://user-images.githubusercontent.com/6979335/129642582-fc6785d8-0e4f-4fdd-81f4-b2552e1ff7c7.png +.. |image2| image:: https://user-images.githubusercontent.com/6979335/129643743-6cb12c06-3415-4a02-ba43-ccc97003b02d.png From 3045eae2dd3bbdf5322cb011690cf8e16f843101 Mon Sep 17 00:00:00 2001 From: Bruno Messias Date: Wed, 26 Jan 2022 19:12:30 -0300 Subject: [PATCH 8/8] docs: fix hidden info in post #11 --- .../posts/2021/2021-16-08-gsoc-devmessias-11.rst | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst index 21acb104f..50a0b8360 100644 --- a/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst +++ b/docs/source/posts/2021/2021-16-08-gsoc-devmessias-11.rst @@ -35,19 +35,15 @@ FURY - `PR fury-gl/fury#437: `__ - - .. rubric:: Fix: avoid multiple OpenGl context on windows using - asyncio - :name: fix-avoid-multiple-opengl-context-on-windows-using-asyncio - + - Fix: avoid multiple OpenGl context on windows using asyncio The streaming system must be generic, but opengl and vtk behaves in uniques ways in each Operating System. Thus, can be tricky to have the same behavior acrros different OS. One hard stuff that we founded is that was not possible to use my TimeIntervals objects (implemented with threading module) with vtk. The reason for this impossibility is because we can't use vtk in windows in different threads. But fortunely, moving from the threading (multithreading) to the asyncio approcach (concurrency) have fixed this issue and now the streaming system is ready to be used anywhere. - - .. rubric:: Flickering - :name: flickering - + - Flickering: + Finally, I could found the cause of the flickering effect on the streaming system. This flickering was appearing only when the streaming was created using the Widget object. The cause seems to be a bug or a strange behavior from vtk.