Skip to content

Commit

Permalink
release 2.8.0 blog post (#411)
Browse files Browse the repository at this point in the history
* release 2.8.0 blog post

* changelog 280

* Update _posts/2024-11-22-release-2.8.0.md

Co-authored-by: Irfan Alibay <[email protected]>

* added more recognition

* links + fixes

* finalized blog post

- all deprecations
- links to role list instead of role description
- MDAKits with links

* untabified

* no cf package for py13

Co-authored-by: Irfan Alibay <[email protected]>

---------

Co-authored-by: Irfan Alibay <[email protected]>
  • Loading branch information
orbeckst and IAlibay authored Nov 26, 2024
1 parent bcebb97 commit ffc5e5b
Showing 1 changed file with 290 additions and 0 deletions.
290 changes: 290 additions & 0 deletions _posts/2024-11-22-release-2.8.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
---
layout: post
title: 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](#license-change-to-lgpl) 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][guesser modules docs] 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][converter modules docs]).

The guessers are the [GSoC 2022 project][] of @aya9aladdin with
help from @lilyminium, @IAlibay, and @jbarnoud.[^guesserPR]
3. We are introducing **[parallel analysis][]** for tools in
[MDAnalysis.analysis][] following the simple
*split-apply-combine* paradigm that we originally prototyped in
[PMDA][] [^PMDApaper]. 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 [^parallelizationPR].

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](#supported-environments),
[upgrading](#upgrading-to-mdanalysis-version-280) your version of MDAnalysis, and a
[summary of the most important changes](#notable-changes).


## License change to LGPL

<a href="https://www.gnu.org/licenses/lgpl-3.0.en.html">
<img src="https://www.gnu.org/graphics/lgplv3-with-text-154x68.png"
title="LGPLv3" alt="LGPLv3 logo" style="float: right"/>
</a>

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](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)
or any higher version.
* The package is under the [LGPLv3
license](https://www.gnu.org/licenses/lgpl-3.0.html) 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

```bash
mamba update -c conda-forge mdanalysis
```

To update from [PyPi][] with `pip` run

```bash
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](https://github.com/ShintaroMinami/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][]


----


[^guesserPR]: 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.

[^PMDApaper]: 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](https://doi.org/10.25080/Majora-7ddc1dd1-013).

[^parallelizationPR]: 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.

[guesser modules docs]: https://docs.mdanalysis.org/stable/documentation_pages/guesser_modules.html
[converter modules docs]: https://docs.mdanalysis.org/stable/documentation_pages/converters.html

[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]: https://github.com/MDAnalysis/mdanalysis/pull/3753
[PR #4162]: https://github.com/MDAnalysis/mdanalysis/pull/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

0 comments on commit ffc5e5b

Please sign in to comment.