marsipu's Blog

Blog Week 3 (28.06.-02.07.)

marsipu
Published: 06/28/2021

What did I do this week?

I continued with implementing more features into the pyqtgraph-prototype (scrollbars, bad-channel-selection, keyboard-shortcuts) and I fixed several bugs. To investigate the differences in performance between the pyqtgraph-prototype and a barebone PyQt-Prototype I tried to implement the features from the pyqtgraph-prototype there too (see "Did I get stuck anywhere?"). And I recently contacted the community of pyqtgraph for some feedback on the prototype (and to thank them for their great work).

What is coming up next?

There are still features left, especially in terms of markers and the visualization of Epochs. In accordance with my mentors I will continue with implementing those features into the pyqtgraph-backend as this seems to be a viable option as the final backend.

Did I get stuck anywhere?

Working on the barebone PyQt-Prototype I encountered several challenges which haven't been present while I was working with pyqtgraph. For example I couldn't fit the lines to the view and when I tried shifting the visible lines, it resolved in weird artefacts. It was then more than ever that I realized how many problems are solved by pyqtgraph beforehand and as it took to much time to struggle with those problems I now switched back to working on the pyqtgraph-backend. The original performance problem (activating OpenGL for pyqtgraph) turned out to have a very simple solution so now the performance of the pyqtgraph-backend can be better regardless.

View Blog Post

Weekly Check-In Week 2 (14.06.-18.06.)

marsipu
Published: 06/22/2021

1. What did you do this week?

After having decided to continue improving the pyqtgraph-prototype during the first week, I worked on implementing more features from the current RawBrowser as scrolling vertically through the channels and customizing the axes. An improved benchmark-utility allows now for comparison between different parameter-sets to observe the influence of parameters on the performance.

2. What is coming up next?

As the performance already has reached a satisfying level I decided with my mentors to focus on implementing the remaining features to see if everything is feasible with the pyqtgraph-backend.

3. Did you get stuck?

Sometimes it took me a while do understand how something like e.g. the axes are implemented in pyqtgraph, but the more I read the pyqtgraph-source-code the easier it gets.

View Blog Post

Blog Week 1 (07.06.-12.06)

marsipu
Published: 06/14/2021

To implement the features of the existing Raw-Visualization and provide improved performance, Qt respectively PyQt was the backend-solution we pursued from the start. The Graphics View Framework from Qt provides the foundation for the required plotting-functionalities. Originally I thought I could read into the documentation of Qt alone and start with an (only) PyQt-based prototype from scratch. This turned out to be a big challenge, because there were various hurdles to overcome as how to setup the View, how to handle multiple Plot-Lines or how to setup axes. Thus on the second day I decided, in consultation with my mentors, to focus on the pyqtgraph-prototype which was planned to be setup during the second week for comparison. This turned out to be great, because by reading pyqtgraph's documentation and it's source-code I learned by example how a plotting-implementation in PyQt could be realized. The modularity of pyqtgraph and its well written code contributed significantly to my learning process (thanks and cudos @developers of pyqtgraph). I even got quickly to a point where the pyqtgraph-prototype could foreshadow to some extent how the final implementation may look like. So this week my work will also by focused on further improving this prototype to set the groundwork for the final backend.

View Blog Post

Weekly Check-In Community Bonding Period (17.05.-06.06)

marsipu
Published: 06/07/2021

Introduction

Dear Python/MNE-Community, I am Martin Schulz (marsipu) from Heidelberg (Germany) and I am a 6th year student of medicine. When starting my thesis about pinprick-evoked pain (MEG/EEG) three years ago, I got first in touch with MNE-Python & Programming and benefited a lot from it since. Starting to contribute was an exciting “looking behind the curtain”-experience and therefore I am enthusiastic about the perspective of using this summer for full-time contribution.

My project is about providing an additional backend for the visualization of Raw-data. It is supposed to offer higher performance (e.g. regarding scrolling & scaling) and thus shall facilitate the analysis-step of signal inspection.

1. What did you do this week?

During the Community-Bonding-Period I met with my mentors and started to learn more about the current RawBrowser-Implementation by working on related issues (#9412, #9414, #9419, #9444). I also started reading into the documentation of some of the possible backend-alternatives (PyQt, pyqtgraph) and created my gsoc-repository where prototypes and progress will be hosted.

2. What is coming up next?

This first week of coding will be all about expanding the existing (only)pyqt-based prototype to be comparable to the other possible backends (pyqtgraph, vtk). In the course of that I will also probably start to refactor the prototypes to make their comparision in a future benchmark-utility easier.

3. Did you get stuck anywhere?

Learning about how Qt handles custom plots took (and still takes) me longer than expected and some problems of #9419 posed a challenge, but with the help of the other contributors/mentors those could be overcome.

View Blog Post