Skip to content

Latest commit

 

History

History
290 lines (232 loc) · 12.9 KB

File metadata and controls

290 lines (232 loc) · 12.9 KB
layout title
post
Release 2.8.0 of MDAnalysis

We are happy to release version 2.8.0 of MDAnalysis!

This is a minor release of the MDAnalysis library, which means that it contains enhancements, bug fixes, deprecations, and other backwards-compatible changes.

However, in this case minor does not quite do justice to what is happening in this release, given that we have (at least) three big changes/additions:

  1. The license was changed to the GNU Lesser General Public License so that MDAnalysis can be used by packages under any license while keeping the source code itself free and protected.

  2. We introduce the Guesser API for guessing missing topology attributes such as element or mass in a context-dependent manner. Until release 3.0, you should not notice any differences but under the hood we are getting ready to make it easier to work with simulations in a different context (e.g., with the MARTINI force field or experimental PDB files). With consistent attributes, such as elements, it becomes a lot easier to interface with tools like the cheminformatics RDKit (via the converters).

    The guessers are the [GSoC 2022 project][] of @aya9aladdin with help from @lilyminium, @IAlibay, and @jbarnoud.1

  3. We are introducing [parallel analysis][] for tools in [MDAnalysis.analysis][] following the simple split-apply-combine paradigm that we originally prototyped in [PMDA][] 2. What's really exciting is that any analysis code that is based on [MDAnalysis.analysis.base.AnalysisBase][] can enable parallelization with a few lines of extra code---all the hard work is done behind the scenes in the base class (in a way that is fully backwards compatible!).

    This new feature is the work of @marinegor who brought his [GSoC 2023 project][] to completion, with great contributions by @p-j-smith, @yuxuanzhuang and @RMeli 3.

    Not all MDAnalysis analysis classes have parallelization enabled yet but @talagayev has been working tirelessly on already updating GNMAnalysis, BAT, Dihedral, Ramachandran, Janin, DSSP (yes, MDAnalysis has finally got DSSP, based on [pydssp][], also thanks to @marinegor), HydrogenBondAnalysis, in addition to RMSD.

Read on for more details on the license change and the usual information on supported environments, upgrading your version of MDAnalysis, and a summary of the most important changes.

License change to LGPL

LGPLv3 logo

This is the first release of MDAnalysis under the Lesser General Public License. We have been working towards this license change for the last 3 years; this release (almost) concludes the process that we described in our [licensing update blog post][licensing update].

  • All code is now under LGPLv2.1 license or any higher version.
  • The package is under the LGPLv3 license or any higher version. However, once we have removed dependencies that prevent licensing under LGPLv2.1+ at the moment, we will also license the package under the same LGPLv2.1+ as the code itself.

We would like to thank all our contributors who granted us permission to change the license. We would also like to thank a number of institutions who were especially supportive of our open source efforts, namely Arizona State University, Australian National University, Johns Hopkins University, and the Open Molecular Science Foundation. We are also grateful to [NumFOCUS][] for legal support. The [relicensing team][roles] was lead by @IAlibay and @orbeckst.

Supported environments

The minimum required NumPy version is 1.23.3; MDAnalysis now builds against NumPy 2.0.

Supported Python versions: 3.10, 3.11, 3.12, 3.13. Support for version 3.13 has been added in this release and support for 3.9 has been dropped (following [SPEC 0][]).

Please note that Python 3.13 is limited to [PyPi][] for now, the [conda-forge channel][] installs only provide support for Python 3.10 to 3.12.

Supported Operating Systems:

  • Linux (on [x86-64][])
  • Windows (on [x86-64][])
  • MacOS (on [x86-64][] and [ARM64][])

Upgrading to MDAnalysis version 2.8.0

To update with mamba (or conda) from the [conda-forge channel][] run

mamba update -c conda-forge mdanalysis

To update from [PyPi][] with pip run

python -m pip install --upgrade MDAnalysis

For more help with installation see the [installation instructions in the User Guide][]. Make sure you are using a Python version compatible with MDAnalysis before upgrading (Python >= 3.10).

Notable changes

For a full list of changes, bugfixes and deprecations see the [CHANGELOG][].

Enhancements:

  • Added guess_TopologyAttrs() API to the Universe to handle attribute guessing (PR #3753)
  • Added the DefaultGuesser class, which is a general-purpose guesser with the same functionalities as the existing guesser.py methods (PR #3753)
  • Introduce parallelization API to AnalysisBase and to analysis.rms.RMSD class (Issue #4158, PR #4304)
  • Add analysis.DSSP module for protein secondary structure assignment, based on pydssp
  • Improved performance of PDBWriter (Issue #2785, PR #4472)
  • Added parsing of arbitrary columns of the LAMMPS dump parser. (Issue #3504)
  • Implement average structures with iterative algorithm from DOI 10.1021/acs.jpcb.7b11988. (Issue #2039, PR #4524)
  • Add support for TPR files produced by Gromacs 2024.1 (PR #4523)

Fixes:

  • Fix Bohrium (Bh) atomic mass in tables.py (PR #3753)
  • Catch higher dimensional indexing in GroupBase & ComponentBase (Issue #4647)
  • Do not raise an Error reading H5MD files with datasets like observables/<particle>/<property> (part of Issue #4598, PR #4615)
  • Fix failure in double-serialization of TextIOPicklable file reader. (Issue #3723, PR #3722)
  • Fix failure to preserve modification of coordinates after serialization, e.g. with transformations (Issue #4633, PR #3722)
  • Fix PSFParser error when encountering string-like resids (Issue #2053, Issue #4189 PR #4582)
  • Convert openmm Quantity to raw value for KE and PE in OpenMMSimulationReader.
  • Atomname methods can handle empty groups (Issue #2879, PR #4529)
  • Fix bug in PCA preventing use of frames=... syntax (PR #4423)
  • Fix analysis/diffusionmap.py iteration through trajectory to iteration over self._sliced_trajectory, hence supporting DistanceMatrix.run(frames=...) (PR #4433)

Changes:

  • Relicense code contributions from GPLv2+ to LGPLv2.1+ and the package from GPLv3+ to LGPLv3+ (PR #4794)
  • only use distopia < 0.3.0 due to API changes (Issue #4739)
  • The fetch_mmtf method has been removed as the REST API service for MMTF files has ceased to exist (Issue #4634)
  • MDAnalysis now builds against numpy 2.0 rather than the minimum supported numpy version (PR #4620)

Deprecations:

  • Deprecations of old guessing functionality (in favor of the new Guesser API)

    • MDAnalysis.topology.guessers is deprecated in favour of the new Guessers API and will be removed in version 3.0 (PR #4752)
    • The guess_bonds, vdwradii, fudge_factor, and lower_bound kwargs are deprecated for bond guessing during Universe creation. Instead, pass ("bonds", "angles", "dihedrals") into to_guess or force_guess during Universe creation, and the associated vdwradii, fudge_factor, and lower_bound kwargs into Guesser creation. Alternatively, if vdwradii, fudge_factor, and lower_bound are passed into Universe.guess_TopologyAttrs, they will override the previous values of those kwargs. (Issue #4756, PR #4757)
    • MDAnalysis.topology.tables is deprecated in favour of MDAnalysis.guesser.tables and will be removed in version 3.0 (PR #4752)
    • Element guessing in the ITPParser is deprecated and will be removed in version 3.0 (Issue #4698)
    • Unknown masses are still set to 0.0 for current version, this will be changed in version 3.0.0 and replaced by Masses "no_value_label" attribute (np.nan) (PR #3753)
  • A number of analysis modules have been moved into their own [MDAKits][], following the [3.0 roadmap towards a trimmed down core library][roadmap]. Until release 3.0, these modules are still available through MDAnalysis.analysis (either as an import of the MDAKit as an automatically installed dependency of the MDAnalysis package or as the original code) but from 3.0 onwards, users must install the MDAKit explicitly and then import it by themselves.

    • The MDAnalysis.analysis.encore module has been deprecated in favour of the mdaencore MDAKit and will be removed in version 3.0.0 (PR #4737)
    • The MDAnalysis.analysis.waterdynamics module has been deprecated in favour of the [waterdynamics][] MDAKit and will be removed in version 3.0.0 (PR #4404)
    • The MDAnalysis.analysis.psa module has been deprecated in favour of the [PathSimAnalysis][] MDAKit and will be removed in version 3.0.0 (PR #4403)
  • The MMTF Reader is deprecated and will be removed in version 3.0 as the MMTF format is no longer supported (Issue #4634).

Author statistics

This release was the work of 22 contributors, 10 of which are new contributors.

Our new contributors are:

  • @aditya292002
  • @pstaerk
  • @kainszs
  • @SampurnaM
  • @leonwehrhan
  • @PythonFZ
  • @kurtmckee
  • @laksh-krishna-sharma
  • @MattTDavies,
  • @talagayev

Acknowledgements

MDAnalysis thanks [NumFOCUS][] for its continued support as our fiscal sponsor and the [Chan Zuckerberg Initiative][] for supporting MDAnalysis under EOSS4 and EOSS5 awards.

— @IAlibay ([release manager][roles]) on behalf of the [MDAnalysis Team][]


[GSoC 2022 project]: {{ site.baseurl }}{% post_url 2022-12-9-Aya-gsoc-final-report %} [GSoC 2023 project]: {{ site.baseurl }}{% post_url 2024-01-18-gsoc2023_marinegor %} [parallel analysis]: https://docs.mdanalysis.org/stable/documentation_pages/analysis/parallelization.html [MDAnalysis.analysis.base.AnalysisBase]: https://docs.mdanalysis.org/stable/documentation_pages/analysis/base.html#MDAnalysis.analysis.base.AnalysisBase [PR #3753]: MDAnalysis/mdanalysis#3753 [PR #4162]: MDAnalysis/mdanalysis#4162 [pydssp]: https://github.com/ShintaroMinami/PyDSSP [MDAnalysis.analysis]: https://docs.mdanalysis.org/stable/documentation_pages/analysis_modules.html [PMDA]: https://github.com/mdanalysis/pmda [SPEC 0]: https://scientific-python.org/specs/spec-0000/ [x86-64]: https://en.wikipedia.org/wiki/X86-64 [ARM64]: https://en.wikipedia.org/wiki/Apple_M1 [installation instructions in the User Guide]: https://userguide.mdanalysis.org/stable/installation.html [conda-forge channel]: https://anaconda.org/conda-forge/mdanalysis [PyPi]: https://pypi.org/project/MDAnalysis/ [NumFOCUS]: https://www.numfocus.org [CHANGELOG]: https://github.com/MDAnalysis/mdanalysis/blob/release-2.8.0/package/CHANGELOG [Chan Zuckerberg Initiative]: https://chanzuckerberg.com/ [licensing update]: {{ site.baseurl }}{% post_url 2023-09-22-licensing-update %} [roles]: {{ site.baseurl }}/pages/team/#roles [MDAnalysis Team]: {{ site.baseurl }}/pages/team [MDAKits]: https://mdakits.mdanalysis.org/ [roadmap]: {{ site.baseurl }}{% post_url 2023-10-25-towards_3.0 %}#a-trimmed-down-core-library [mdaencore]: https://mdakits.mdanalysis.org/mdaencore.html [waterdynamics]: https://mdakits.mdanalysis.org/waterdynamics.html [PathSimAnalysis]: https://mdakits.mdanalysis.org/PathSimAnalysis.html

Footnotes

  1. The Guesser API was a big undertaking: Her merged [PR #3753][] totalled 668 (!) comments. We look forward to the community providing Guessers for specific context.

  2. Shujie Fan, Max Linke, Ioannis Paraskevakos, Richard J. Gowers, Michael Gecht, and Oliver Beckstein. PMDA - Parallel Molecular Dynamics Analysis. In Chris Calloway, David Lippa, Dillon Niederhut, and David Shupe, editors, Proceedings of the 18th Python in Science Conference, 134 – 142. Austin, TX, 2019. SciPy. doi:10.25080/Majora-7ddc1dd1-013.

  3. Adding parallelization in a transparent manner was quite a difficult undertaking that touched many parts of the analysis code and required a lot of thought. Feedback is very welcome! See [PR #4162][] with 713 (!) comments.