This summer I set out to improve Avogadro 2 for better handling biomolecules. Here is the initial proposal; now I'd like to share my experience and review what was done.
My work on Avogadro started way before GSoC. Most of it involved fixes and optimization, as well as completing one of my GSoC goals: formal charge support.
The weeks before starting GSoC were focused on cleaning up the code.
One of my goals this summer was to implement at least one kind of molecular interaction, that would be rendered in a predictive manner. In June, I ended up implementing both generic "close contacts" and angle-dependent pair-hole interactions: hydrogen, chalcogen and halogen bonds.
The other major goal of mine was getting the unfinished molecular surface generation code to work. A marching cubes algorithm was already in place for generating meshes, all that was missing was computing some sort of distance function, plus a Laplacian smoothing algorithm to make the mesh look nice afterwards. I also had the goal to get surface coloring by mapping at least one property.
I had been made aware of a missing functionality with PDB/MMTF that had caused problems to at least one user. At the same time, I wanted to finish the remaining non-covalent interactions: salt bridges and "bad" contacts.
I had stated as a GSoC goal that I would work on coordination compounds. While I had a vague idea of what that could mean (updated charge/order/valency perception, zero-order bonds...) and had sketched some more or less developed proposals, an opportunity arose to work on meaningful functionality. My mentor, Geoff, had been working on a new tool to easily create coordination complexes and add chemical groups to molecules.
Having finished all the proposed tasks, and with a few weeks remaining, I decided to go for a more ambitious target. I would try to implement post-processing shaders, and learn graphics programming along the path, in a practical way.