-
Notifications
You must be signed in to change notification settings - Fork 663
GSoC 2016 Project Ideas
The project ideas can be roughly categorized as
- New analysis functionality
- Increasing performance
- New input formats
- Increase platform availability
- Increase ease-of-use
- Improve the library core
MDAnalysis already comes with a range of different standard analysis tools but currently lacks an implementation of a general dimension reduction algorithm, that can select an arbitrary number of dimensions of interest. 3 common general techniques are
- Time Independent Component Analysis
- [Diffusion Maps] (http://arxiv.org/abs/1506.06259)
- Principle Component Analysis
There are python implementations for all of these algorithms but none of them currently work with MDAnalysis out of the box. This is because the current python implementations work on normal numpy arrays that stores a complete trajectory in memory, but MDAnalysis never loads the whole trajectory but only one frame at a time. This approach allows MDAnalysis to treat very large system on a normal laptop or workstation.
Of course you can also suggest us another dimension reduction algorithm that you would like to implement.
Combine spatial densities (e.g. from time averaged quantities or experimental data such as electron densities) with atom-based queries in order to aid multiscaling approaches and comparisons between experiment and simulation.
Most MD-simulations produce way more data that we could fit into the RAM, even with a modern computer. To cope with this, MDAnalysis never loads a full trajectory but only one frame at a time. This comes with a performance penalty. There are new Python packages like Dask and Blaze that can potentially help us here. You should look into the different distributed computation numerical array libraries in python and implement a reader using it during the summer.
Help us implement a general pipeline to use multiple CPU-cores for analysis tasks (Dask, MPI, or even a hybrid approach) For an example of the direction this is currently taking, see here
Work with domain-decomposition algorithms to improve our distance search algorithms (cell grids) and/or implement distance search on GPUs using CUDA/OpenCL.
One of the strengths of MDAnalysis is its ability to support a wide range of different MD-formats. But we are still missing some like the new TNG file format from Gromacs or H5MD. Alternatively, you can also add a format that you want to use personally in MDAnalysis. This project will familiarise you with working with and connecting different APIs, as well as giving insight into how modern portable data storage file formats work.
To check if a new analysis-method works as intended it is often a good idea to use it with a random walk in different simple energy landscapes (A flat energy, harmonic well, double well). In this project you would develop a 'Reader' that produces random trajectories.
Langevin dynamics in a energy landscape are close to the conformational dynamics of proteins, see [1]. As a first start you could implement a integrator for langevin dynamics and later have the trajectory 'reader' use the integrator to dynamically generate the trajectory.
[1] Robert Zwanzig. Nonequilibrium statistical mechanics. Oxford University Press, 2001
Python 3 is getting adopted by a wider range of users and unix distributions are starting to switch. MDAnalysis can't run right now under Python 3 mostly due to it's C/Cython extensions, we currently try to move our C-extensions to cython which supports Python 2 and 3 with one source. See also #260
None of the current devs has a Windows environment. But some research groups do use Windows and it would be nice they could use MDAnalysis as well. Since neither of us has experience with python extensions on windows we don't know what exactly is needed to make this happen.
Currently MDAnalysis exists only as a framework, however making common tasks available via the command line would make certain work flows easier. As an example, the conversion of trajectories between formats could take the form:
mda convert --topology adk.psf -i adk_dims.dcd -o adk_dims.xtc
This project would involve creating a template for these command line utilities to follow and implementing a foolproof user interface for navigating them using a popular command line parsing library.
Implement a formal flexible parser for atom selections (using pyparsing; see also our discussion on it).
MDAnalysis is using Anström and picoseconds as default units. Our Reader/Writer objects are only aware of units to the extend that they convert other MD-formats to our default units. But we can also read the coordinates in the native units. This can make it hard to remember what units the coordinates of an AtomGroup have, to fix this you should switch from pure numpy arrays to a unit aware numpy-ndarray wrapper. See Issue #596
Raise an issue in the Issue Tracker or contact us via the developer Google group.