Week 6: Finished time-frequency example for multiple pipelines, wrapping up other PRs
alexrockhill
Published: 07/25/2022
This week I finished the tutorial and function dependencies for the time-frequency source space estimation https://github.com/mne-tools/mne-python/pull/10920. There were quite a few complications and disagreements about best implementation within the MNE core development group which made it a bit trickier and more time-consuming than originally thought, but it seems like it turned out better from having more opinions from which to make a consensus. I am a bit behind on the GUI code but I will do that this week. The main reason for that is refactoring parts of MNE to accommodate for the GUI which I think are hugely important for making it maintainable in the long run: I consolidated mixin classes so that MNE time-series objects have more consistent operations https://github.com/mne-tools/mne-python/pull/10945, this will be great for the TFRSourceEstimate class so that it can inherit these capabilities. The backend abstraction PR now is (almost) ready to merge after sorting through some tricky dependency issues and is a really nice way to make MNE better at a higher level than just making the GUI https://github.com/mne-tools/mne-python/pull/10913. Fortunately, I talked to Dan about these changes and how they fit into the broader class refactoring he is funded to do next year and so they will be well-aligned to do that. This should be great it making this project much more forward-facing toward the cutting edge of MNE and not a part lagging change that just creates extra work down the road.
View Blog Post
Week 5: Started on Time-Frequency Example, Vacation
alexrockhill
Published: 07/18/2022
I didn't get as much done this week because I was traveling but I did move into the meat of the project and made some good progress, especially with regards to starting the conversation on best practices for time-frequency transformations and estimation of source space activity https://github.com/mne-tools/mne-python/pull/10920. Specifically, we discussed linearly-constrained minimum variance (LCMV) beamformers compared to dynamic imaging of coherence sources (DICS) beamformers and how to unify a source estimation object. Once this object is complete, then the GUI development can begin to take place.
View Blog Post
Week 4: Troubleshooting the backend but finally finished
alexrockhill
Published: 07/11/2022
This week was a bit of a slog with the same PR (https://github.com/mne-tools/mne-python/pull/10913) as before, and although it's not the central focus of the project, I think it will greatly improve the maintainability and long-term adoption of this project within MNE because the backend is such a fundamental thing to all GUIs. I hope it might even be used outside of MNE, as I think it was a really worthwhile framework. This week will proceed onto the time-frequency source estimate aspects without any further ado. What ended up taking a long time was versioning issues with the dependencies and tweaks to make both the notebook and pyvistaqt backends look as similar as possible. Also, a lot of the functionality for notebook had not been implemented yet. Finally, it also took some time to implement the backend (partially) for mne.viz.Brain to troubleshoot parts that didn't work and show that it could be the framework for a GUI. This week, I am moving on to the new source space class definition which hopefully I will be able to finish tomorrow although I am on vacation Wednesday-Friday.
View Blog Post
Week 3: MNE-Python Code Sprint
alexrockhill
Published: 07/05/2022
This week I had a great code sprint in a transitioning role from sprint participant to more of a mentor which was really great. I helped Adie with her tutorial about importing and integrating objects from 3D Slicer into MNE https://github.com/mne-tools/mne-python/pull/10803. I also finished abstracting the backend code so that there are working examples for both the notebook and pyvistaqt backends for a wide range of widgets that covers those that are used in the MNE GUIs currently. I still have to refactor the GUIs to use these backends though. This has been quite a bit of work and isn't really the main thrust of the GSoC project but it is the low-level code that it depends on so it is really essential that it be done well for this project for its stability into the future. The added benefit is that it benefits all the other MNE GUIs as well and will make them much more portable across the two backends as well as opening up the possibility of adding new backends.
View Blog Post
Week 2: Laying Foundations
alexrockhill
Published: 06/28/2022
In order to implement a successful user interface to do the time-frequency source space viewing, I thought it was necessary to synchronize among MNE GUIs so understanding the other GUIs well and working on the backend renderer was the theme for this week. First, I recorded a YouTube tutorial embedded in the documentation for the coregistration user interface https://github.com/mne-tools/mne-python/pull/10802. There were a few road blocks from failing CIs https://github.com/mne-tools/mne-python/pull/10825, https://github.com/mne-tools/mne-python/pull/10824 that had to be fixed as well. Then, the real workload was refactoring the backend so that it works on both notebook and pyvistaqt https://github.com/mne-tools/mne-python/pull/10803 for when the time-frequency viewer is added. This was quite a bit of work but is almost done, and cleans up the code tremendously.
View Blog Post