-
Notifications
You must be signed in to change notification settings - Fork 660
GSoC 2024 Project Ideas
Hello, and welcome to MDAnalysis!
Please read our blog post for important official information.
Please see our Google Summer of Code wiki page for some general information, including advice on application writing and also see our GSoC FAQ for commonly asked questions.
If you just found out about the MDAnalysis Python package from the GSoC website, you can have a look at the MDAnalysis 2021 Trailer [YouTube] to get an overview of the scope of the MDAnalysis package.
MDAnalysis is a Python library for the analysis of computer simulations of many-body systems at the molecular scale, spanning use cases from interactions of drugs with proteins to novel materials. Therefore, our GSoC projects require a basic knowledge and hands-on experience of molecular dynamics simulations and the associated analyses, or equivalent experience in simulations and modeling of molecular systems (physics, biophysics, chemistry, or materials). For our suggested projects, please check carefully the project descriptions to see the associated desirable skills.
If you are interested in taking part, please do get in touch on the GSoC with MDAnalysis Discussion Forum. Given the GSoC program structure (small, medium, and large projects), letting us know of your intentions to apply and getting acquainted with the project early will be very helpful.
MDAnalysis welcomes new mentors, please do get in touch in the developer forum if you are interested in taking part. We typically expect mentors to be familiar with our development process as evidenced by contributions to the code base and interactions on the developer forum.
A list of projects ideas for Google Summer of Code 2024.
The currently proposed projects are:
- Generalize groups
- Extend MDAnalysis interoperability
- On the fly transformations
- 2D visualization for small molecules
- Better interfacing of Blender and MDAnalysis
Or work on your own idea! Get in contact with us to propose an idea and we will work with you to flesh it out into a full project. Raise an issue in the Issue Tracker or contact us via the GSoC with MDAnalysis Discussion Forum.
Look at the list of all available mentors for MDAnalysis for potential mentors for your project. Please send all communications to the discussion forum (and don't contact mentors privately). You can certainly ask for the opinion of a specific mentor if you know that their expertise is particularly suitable for your project.
The table summarizes the project ideas; long descriptions come after the table (or click on the links under each project name). The difficulty is a somewhat subjective ranking, where easy means that we know pretty much what needs to be done, medium requires some additional research into best solutions as part of the project, and hard is high risk/high reward where we think a solution exists but we will have to work with the student to find it and implement it. The project size is either 90 h (small), 175 h (medium) or 350 h (large) projects.
project | name | difficulty | project size | description | skills | mentors |
---|---|---|---|---|---|---|
1 | Generalise Groups | hard | 350 hours | Generalise concept of groups | Python, NetworkX, Molecular modeling | @richardjgowers, @yuxuanzhuang |
2 | Extend MDAnalysis Interoperability | medium | 350 hours | Extend converters module to other relevant packages | Python, Molecular modeling | @hmacdope, @yuxuanzhuang, @xhgchen |
3 | On the fly transformations | medium/hard | 175/350 hours | Expand on code for on-the-fly transformations through documentation, product research or performance optimization | Python, Molecular modeling, Computational chemistry, Scientific writing, Performance profiling | @richardjgowers, @cbouy, @hmacdope, @xhgchen |
4 | 2D visualization for small molecules | easy | 90 hours | Add basic 2D visualization functionalities for small molecule groups in notebooks | Python, basic knowledge of MDAnalysis and RDKit | @cbouy, @hmacdope, @xhgchen |
5 | Better interfacing of Blender and MDAnalysis | medium | 350 hours | Add functionality to visualize simple MDAnalysis results in Blender | Python, basic knowledge of MDAnalysis, familiarity with Blender ideal | @BradyAJohnston, @yuxuanzhuang |
It is common to want to consider a group of atoms as a single site/particle, for example defining the position of a water molecule (or a larger solvent) as its center of mass.
It then follows that it is useful to consider many such groupings as an array of quasi-particles, leading to something like an AtomGroup
-Group, e.g. a Group representing a solvent where each item in the Group is a single molecule.
The goal of this project is to make two such groupings, BeadGroup
and RingGroup
:
-
BeadGroup
: groups of atoms that can be represented as a single site/particle. This could be used for analysis purposes, as well as to define coarse-grained beads. -
RingGroup
: aromatic rings (eg benzene, nucleobases etc.) can be defined by their position (the geometric center of the ring) and their normal vector (the direction they are facing). This class would be implemented as a special case ofBeadGroup
which also defines a directionality.
- Design and implement a
BeadGroup
class to represent a container of many groupings of atoms - Generalise existing methods (e.g. center_of_mass) to
BeadGroup
- Implement
RingGroup
, as a special case ofBeadGroup
- Implement ring finding functions to quickly define these groups
- Implement basic
RingGroup
analysis functions, eg angle between rings, π-stacking identification.
- Python
- Graph theory (eg the NetworkX package)
- Molecular modeling
- Chemistry
- https://github.com/MDAnalysis/mdanalysis/issues/1861
- https://github.com/MDAnalysis/mdanalysis/issues/2188
- @richardjgowers
- @yuxuanzhang
MDAnalysis has been pushing towards interoperability objectives. In pursuit of this aim, we have already added converters to the ParmEd and RDKit libraries. We aim to continue this direction by focusing on other relevant packages such as MDTraj, pytraj, OpenBabel, and Psi4.
- Create converter classes to and from MDAnalysis to your chosen package(s)
- Python
- Any other language relevant to your chosen package (likely C++)
- Basic knowledge of the chosen package(s)
- Molecular modeling
- Molecular Dynamics/Cheminformatics/Quantum Chemistry (depending on the chosen package)
- @hmacdope
- @yuxuanzhuang
- @xhgchen
The use of on-the-fly transformations for manipulating coordinates as they are read offers users a way of applying common post-simulation filters. This offers many advantages including not having to first preprocess their entire data (potentially multiple times), and being able to use analysis modules which are unable to apply these filters themselves. The current code for transformations in the codebase is relatively new and has many directions in which it could be improved and expanded upon.
Exact objectives for this project are open ended, as the project could move in many directions including documentation, product research and performance analysis. Objectives could include some of these points:
- Create documentation on how to achieve common post-simulation transformation workflows.
- Identify missing functionality in MDAnalysis that could be implemented to achieve other common workflows
- Create benchmarks of the above common workflows to identify the slowest steps
- Create recommendations for where in the codebase optimizations could be applied to improve performance of transformations
- Python
- Molecular Modeling
- Computational chemistry, esp. knowledge of periodic boundary conditions
- Scientific writing for explaining transformations
- Performance profiling of Python code
- @richardjgowers
- @cbouy
- @hmacdope
- @xhgchen
MDAnalysis currently lacks visualization functionalities. While it is possible to use other compatible 3D visualization libraries such as NGLView to depict entire molecular systems, this only provides limited information (atoms and their connectivity), which may not be sufficient for small molecules such as drug-like compounds. Since the addition of the RDKit Converter, MDAnalysis has the possibility to reuse functionalities from a popular cheminformatics library, RDKit, to depict molecules by simply converting MDAnalysis atom groups to RDKit objects. This project can range from a basic 2D visualization to more enhanced depictions that include metadata or a heatmap from atom-level data.
- Add functionality such that small molecule groups can be easily visualized in notebooks
- Python
- Basic knowledge of MDAnalysis
- Basic knowledge of RDKit
- @cbouy
- @hmacdope
- @xhgchen
Blender is industry-leading 3D modeling, animation software. Through the add-on Molecular Nodes, MDAnalysis universes are able to be imported into the 3D scene, enabling advanced rendering of molecular dynamics trajectories that is not possible inside of any other molecule viewers. Currently, there is initial support for streaming of MD trajectories into the 3D viewport, and the possibility to update selections inside of Blender.
- Prototype an API and a base class for visualizing analysis results in MDAnalysis with Blender.
- Add functionality such that some simple MDAnalysis results, e.g. interatomic distances, can be visualized interactively inside Blender.
- Python
- Basic knowledge of MDAnalysis
- Familiarity with Blender is ideal
- @BradyAJohnston
- @yuxuanzhuang