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
UniverseManagerclass to manage MDAnalysis universes added to Blender - A
UniverseViewclass 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
UniverseManagerfor 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_rnamethod 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
nameusing thefindmethod, 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 thepollthat 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.
