GSoC 2025 - Week 1
The official coding period for GSoC 2025 started on 2nd June 2025. Here is the Week 1 update for my project:
In the meeting with my mentors Brady Johnston and Yuxuan Zhuang during the community bonding period, we discussed about several details of the project and agreed that the code written as part of this project will reside in the MolecularNodes repo.
I started off with a GSoC 2025: High level structure to start with (#870) discussion to outline what I would begin with. Based on these discussions, I created a Basic universe management APIs and GUI (#877) PR. This PR added the following things:
- A base class for MDAnalysis visualization (
MDAVis
) - A
UniverseManager
class to manage MDAnalysis universes added to Blender - A
UniverseView
class that is responsible for all display aspects of the universe in Blender - APIs to add / delete / list / get / clear universes
- Subscriptable and iterable access to the added universes using
UniverseManager
for easy data access - GUI within Blender for listing and managing (add / delete) the universes and Trajectory info
- An example notebook that shows all the APIs added
- Tests for all the new APIs
- Documentation setup to pull all new APIs added under these classes
Here is a short video that shows the progress made so far:
There were several new things I learnt during this week. Here is a list of a few of them:
__init__
will get called everytime a singleton class is instantiated, so this needs to be guarded to prevent any repeated initializations- Blender’s
bpy.msgbus.subscribe_rna
method to subscribe to RNA property changes- How they have to be re-subscribed during new file loads using
bpy.app.handlers.load_post.append
- How they have to be re-subscribed during new file loads using
- Blender’s collection property can be looked up by
name
using thefind
method, but the key name is immutable, so it needs to be saved forO(1)
lookups _ipython_key_completions_
method that allows key completions in IPython - for subscriptable access,__dir__
method to control what attributes can be shown and__iter__
for iterable support- Blender’s support for mix-in classes to simplify UI panelss
- Showing a confirmation dialog (
window_manager.invoke_confirm
) or a properties dialog (window_manager.invoke_props_dialog
) while invoking Blender operators, concept of thepoll
that determines panel visibility - A bit about
pytest
- setup and cleanup using fixtures (andyield
) and writing basic tests - A bit about quarto for documentation
- Jupyter Notebooks with Blender kernel and caveats
Next week, I plan to start working on styles support. I started a GSoC 2025: Styles support for MDA Universes #879 discussion to outline some of the approaches.