Repository navigation
Post for release 2.11.0 #526
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,257 @@ | ||
| --- | ||
| layout: post | ||
| title: Release 2.11.0 of MDAnalysis | ||
| --- | ||
|
|
||
| We are happy to release version 2.11.0 of MDAnalysis! | ||
|
|
||
| This is a minor release of the MDAnalysis library; it contains bug fixes, | ||
| new features, and performance improvements. | ||
| These updates are backwards-compatible, with the exception of one API fix | ||
| for the [AtomicDistances][] analysis, which is noted under [Changes](#changes). | ||
|
|
||
| A highlight is the **new support for mmCIF/PDBx files**, which was one of the | ||
| most-requested features (see [Changes](#changes)). | ||
|
|
||
|
|
||
| ## Supported environments | ||
|
|
||
| This release supports NumPy 2.0+ and offers backwards compatibility | ||
| through to NumPy 1.26.0. | ||
|
|
||
| Supported Python versions: **3.11, 3.12, 3.13, 3.14**. | ||
|
|
||
| Supported Operating Systems: | ||
| - **Linux** (on [x86-64][], [ARM64][AArch64], and [ppc64le][PPC64] | ||
| (conda-forge packages)) | ||
| - **Windows** (on [x86-64][]) | ||
| - **MacOS** (on [x86-64][] and [ARM64][]) | ||
|
|
||
|
|
||
|
|
||
| ## Upgrading to MDAnalysis version 2.11.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.11). | ||
|
|
||
|
|
||
| ## Notable changes | ||
|
|
||
| For a full list of changes, enhancements, bug fixes and deprecations see the [CHANGELOG][]. | ||
|
|
||
| #### Enhancements: | ||
|
|
||
| * Single-frame [mmCIF/PDBx][mmCIF] files, including `.cif.gz`, can now be | ||
| read with the optional [gemmi][] library ([Issue #2367][], [PR #4712][]): | ||
|
|
||
| ```python | ||
| import MDAnalysis as mda | ||
|
|
||
| u = mda.Universe("structure.cif") | ||
| ``` | ||
| * New `MDAnalysis.fetch.from_PDB()` helper to download structure files from | ||
| the RCSB Protein Data Bank (optional [pooch][] dependency). It returns a | ||
| path that can be passed to `Universe` ([Issue #4907][], [PR #4943][]). | ||
| The default download is mmCIF (`.cif.gz`); pass `file_format="pdb"` for a | ||
| PDB file: | ||
|
|
||
| ```python | ||
| import MDAnalysis as mda | ||
| from MDAnalysis.fetch import from_PDB | ||
|
|
||
| u = mda.Universe(from_PDB("1AKE")) | ||
| ``` | ||
| * New parallelization support for: | ||
| * `analysis.diffusionmap.DistanceMatrix` ([Issue #4679][], [PR #4745][]) | ||
| * `analysis.atomicdistances.AtomicDistances` ([Issue #4662][], [PR #4822][]) | ||
| * DSSP analysis improvements: | ||
| * Proline is now included in secondary-structure assignment, following | ||
| the upstream PyDSSP 0.9.1 fix ([Issue #4913][], [PR #5065][]) | ||
| * Faster distance calculations, with a selectable distance `backend` | ||
| (for example `"distopia"`) ([PR #5182][]) | ||
| * MOL2 files can now provide unit cell dimensions from `@<TRIPOS>CRYSIN` | ||
| records ([Issue #3341][], [PR #5187][]) | ||
| * GROMACS TPR reader improvements: | ||
| * Support for TPR files written by GROMACS 2026 ([PR #5219][]) | ||
| * Linear angle potentials are read into the topology ([Issue #5361][], [PR #5372][]) | ||
| * Box vectors are now read from file and available as `Universe.dimensions` | ||
| ([Issue #5375][], [PR #5466][]) | ||
| * `AtomGroup.wrap()` with compounds is much faster and now scales close to | ||
| linearly with the number of compounds, rather than quadratically | ||
| ([PR #5226][]) | ||
|
|
||
| #### Fixes: | ||
|
|
||
| * Fixed periodic-boundary handling for triclinic boxes in `apply_PBC()` | ||
| and in the neighbor search used by `capped_distance()` and | ||
| `self_capped_distance()` ([Issue #4906][], [PR #5481][]): | ||
| * `apply_PBC()`, `AtomGroup.wrap()` / `pack_into_box()`, | ||
| `center*(wrap=True)`, `AtomGroup.unwrap()` with `reference="com"` or | ||
| `"cog"`, and the `transformations.wrap` transformation could leave | ||
| atoms or compound centers outside the primary unit cell when both | ||
| `b_x` and `c_y` are non-zero (for example truncated octahedra). They | ||
| were shifted by whole box vectors, so periodic distances were | ||
| unaffected, but results that depend on absolute wrapped positions | ||
| (dipole moments, densities, written coordinates) may change. | ||
| * `capped_distance()` and `self_capped_distance()` with the `nsgrid` or | ||
| `pkdtree` methods could miss pairs within the cutoff, which also | ||
| affects bond guessing and distance-based selections. `nsgrid` was | ||
| affected in triclinic boxes with two or more non-90° angles (for | ||
| example a rhombic dodecahedron); `pkdtree` in boxes with both `b_x` | ||
| and `c_y` non-zero (for example a truncated octahedron). | ||
| * GROMACS TPR file support fixes: | ||
| * Positions and velocities read from TPR files are converted to MDAnalysis | ||
| base units. Previously they were left in GROMACS native units | ||
| ([PR #5374][]) | ||
| * Fixed reading of older TPR files written before GROMACS 5.1 (TPX version | ||
| < 103) ([Issue #5145][], [PR #5146][]) | ||
| * Bond guessing now works with mixed-case atom types ([Issue #5342][], [PR #5343][]) | ||
| * NumPy boolean arrays passed to `AnalysisBase.run(frames=...)` are treated | ||
| as frame masks. Previously they were interpreted as integer frame indices, | ||
| i.e., ``True`` was parsed as frame 1 and ``False`` as frame 0, and the | ||
| analysis most likely did not produce the intended output ([Issue #5472][], [PR #5476][]) | ||
| * DSSP analysis: Hydrogen-bond detection now respects periodic boundary | ||
| conditions ([PR #5182][]) | ||
| * Fixed a `TypeError` when indexing GSD trajectories with NumPy integer | ||
| types, which stopped analysis classes from running on those trajectories | ||
| ([Issue #5224][], [PR #5260][]) | ||
| * Fixed parallel reductions that produced wrong results in multiple analysis | ||
| classes: | ||
| * mean bin values in `InterRDF` ([PR #5344][]) | ||
| * pair counts in `InterRDF_s` (wrong for one pair of groups, and an | ||
| error for more than two) ([Issue #5496][], [PR #5497][]) | ||
| * eigenvectors in `GNMAnalysis` when using multiprocessing | ||
| ([Issue #5494][], [PR #5495][]) | ||
|
|
||
| #### Changes: | ||
|
|
||
| * `MDAnalysis.analysis.atomicdistances.AtomicDistances` now stores its outputs | ||
| *inside* the `results` dictionary as `results.distances`, like other analysis | ||
| classes. Code that read the old attribute needs to be updated ([Issue #4819][], | ||
| [PR #5347][]). | ||
|
|
||
| This fixed an API issue in a **backwards incompatible manner**. | ||
| * `AtomGroup.rotate()` and the `rotateby` trajectory transformation now | ||
| rotate velocities and forces as well as positions. The same applies to | ||
| `align.alignto()` and `AlignTraj`, which fit through `AtomGroup.rotate()`. | ||
| Previously velocities and forces were left unchanged ([Issue #5421][], [PR #5452][]) | ||
| * `WatsonCrickDist`, `MinorPairDist`, and `MajorPairDist` match the full | ||
| residue name. Previously only the first character was used, so names such | ||
| as CHARMM `DG`/`DA` or `GUA`/`ADE` were handled incorrectly. Analyses that | ||
| relied on the old truncation need explicit residue names via `g_name`, | ||
| `a_name`, and the related keyword arguments ([Issue #5360][], [PR #5365][]) | ||
|
|
||
|
|
||
| ## Author statistics | ||
|
|
||
| This release was the work of 34 contributors, **22** of which are **new contributors**. | ||
|
|
||
| Our **new contributors** are: | ||
|
|
||
| * @spyke7 | ||
| * @Pranay096 | ||
| * @PardhavMaradani ([GSoC contributor]({% post_url 2026-05-21-gsoc-students %}#pardhav-maradani-dashboard-for-tracking-md-simulation-progress-with-the-new-streaming-interface)) | ||
| * @tani-dubey | ||
| * @BradyAJohnston (new [CoreDeveloper]({{ site.baseurl}}/pages/governance/#mdanalysis-core-developers)) | ||
| * @IAyaanHere | ||
| * @khushi-phougat | ||
| * @Dreamstick9 | ||
| * @jeremyleung521 | ||
| * @harshitgajjela-droid | ||
| * @kunjsinha ([GSoC contributor]({% post_url 2026-05-21-gsoc-students %}#kunj-sinha-interface-for-post-simulation-analysis-crawling-of-westpa-simulations-)) | ||
| * @aygarwal | ||
| * @ParthUppal523 | ||
| * @ollyfutur | ||
| * @Amarendra22 | ||
| * @shubhammittal2241 | ||
| * @charity-g | ||
| * @saiudayagiri | ||
| * @apoorva-01 | ||
| * @Aryaman-Chaudhri | ||
| * @sici17 | ||
| * @AkshitBoora | ||
|
|
||
|
|
||
| ## Acknowledgements | ||
|
|
||
| MDAnalysis thanks [NumFOCUS][] for its continued support as our fiscal sponsor, | ||
| the [Chan Zuckerberg Initiative][] for supporting MDAnalysis under an EOSS5 award, | ||
| and the [National Science Foundation][NSF] for support under CSSI award | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I did not include RMSF because we only just hired but if you think we should add them right away then I am not opposed!
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @micaela-matta @jennaswa what do you think?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wouldn't include, none of the work here was done with that funding.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have left it as is — please chime in if you want it changed. |
||
| [2311372][NSF CSSI 2311372]. | ||
|
|
||
| — @IAlibay on behalf of the [MDAnalysis Team][] | ||
|
|
||
|
|
||
| ---- | ||
|
|
||
| [AtomicDistances]: https://docs.mdanalysis.org/2.11.0/documentation_pages/analysis/atomicdistances.html#MDAnalysis.analysis.atomicdistances.AtomicDistances | ||
| [x86-64]: https://en.wikipedia.org/wiki/X86-64 | ||
| [AArch64]: https://en.wikipedia.org/wiki/AArch64 | ||
| [ARM64]: https://en.wikipedia.org/wiki/Apple_M1 | ||
| [PPC64]: https://en.wikipedia.org/wiki/Ppc64 | ||
| [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.11.0/package/CHANGELOG | ||
| [Chan Zuckerberg Initiative]: https://chanzuckerberg.com/ | ||
| [NSF]: https://www.nsf.gov | ||
| [NSF CSSI 2311372]: https://www.nsf.gov/awardsearch/show-award/?AWD_ID=2311372 | ||
| [MDAnalysis Team]: {{ site.baseurl }}/pages/team | ||
| [mmCIF]: https://mmcif.wwpdb.org/ | ||
| [gemmi]: https://gemmi.readthedocs.io/ | ||
| [pooch]: https://www.fatiando.org/pooch/latest/ | ||
| [Issue #4679]: https://github.com/MDAnalysis/mdanalysis/issues/4679 | ||
| [PR #4745]: https://github.com/MDAnalysis/mdanalysis/pull/4745 | ||
| [Issue #4662]: https://github.com/MDAnalysis/mdanalysis/issues/4662 | ||
| [PR #4822]: https://github.com/MDAnalysis/mdanalysis/pull/4822 | ||
| [Issue #4913]: https://github.com/MDAnalysis/mdanalysis/issues/4913 | ||
| [PR #5065]: https://github.com/MDAnalysis/mdanalysis/pull/5065 | ||
| [PR #5182]: https://github.com/MDAnalysis/mdanalysis/pull/5182 | ||
| [Issue #2367]: https://github.com/MDAnalysis/mdanalysis/issues/2367 | ||
| [PR #4712]: https://github.com/MDAnalysis/mdanalysis/pull/4712 | ||
| [Issue #4907]: https://github.com/MDAnalysis/mdanalysis/issues/4907 | ||
| [PR #4943]: https://github.com/MDAnalysis/mdanalysis/pull/4943 | ||
| [Issue #3341]: https://github.com/MDAnalysis/mdanalysis/issues/3341 | ||
| [PR #5187]: https://github.com/MDAnalysis/mdanalysis/pull/5187 | ||
| [PR #5219]: https://github.com/MDAnalysis/mdanalysis/pull/5219 | ||
| [Issue #5361]: https://github.com/MDAnalysis/mdanalysis/issues/5361 | ||
| [PR #5372]: https://github.com/MDAnalysis/mdanalysis/pull/5372 | ||
| [Issue #5375]: https://github.com/MDAnalysis/mdanalysis/issues/5375 | ||
| [PR #5466]: https://github.com/MDAnalysis/mdanalysis/pull/5466 | ||
| [PR #5226]: https://github.com/MDAnalysis/mdanalysis/pull/5226 | ||
| [PR #5374]: https://github.com/MDAnalysis/mdanalysis/pull/5374 | ||
| [Issue #5145]: https://github.com/MDAnalysis/mdanalysis/issues/5145 | ||
| [PR #5146]: https://github.com/MDAnalysis/mdanalysis/pull/5146 | ||
| [Issue #4906]: https://github.com/MDAnalysis/mdanalysis/issues/4906 | ||
| [PR #5481]: https://github.com/MDAnalysis/mdanalysis/pull/5481 | ||
| [Issue #5472]: https://github.com/MDAnalysis/mdanalysis/issues/5472 | ||
| [PR #5476]: https://github.com/MDAnalysis/mdanalysis/pull/5476 | ||
| [Issue #5224]: https://github.com/MDAnalysis/mdanalysis/issues/5224 | ||
| [PR #5260]: https://github.com/MDAnalysis/mdanalysis/pull/5260 | ||
| [PR #5344]: https://github.com/MDAnalysis/mdanalysis/pull/5344 | ||
| [Issue #5496]: https://github.com/MDAnalysis/mdanalysis/issues/5496 | ||
| [PR #5497]: https://github.com/MDAnalysis/mdanalysis/pull/5497 | ||
| [Issue #5494]: https://github.com/MDAnalysis/mdanalysis/issues/5494 | ||
| [PR #5495]: https://github.com/MDAnalysis/mdanalysis/pull/5495 | ||
| [Issue #5342]: https://github.com/MDAnalysis/mdanalysis/issues/5342 | ||
| [PR #5343]: https://github.com/MDAnalysis/mdanalysis/pull/5343 | ||
| [Issue #4819]: https://github.com/MDAnalysis/mdanalysis/issues/4819 | ||
| [PR #5347]: https://github.com/MDAnalysis/mdanalysis/pull/5347 | ||
| [Issue #5421]: https://github.com/MDAnalysis/mdanalysis/issues/5421 | ||
| [PR #5452]: https://github.com/MDAnalysis/mdanalysis/pull/5452 | ||
| [Issue #5360]: https://github.com/MDAnalysis/mdanalysis/issues/5360 | ||
| [PR #5365]: https://github.com/MDAnalysis/mdanalysis/pull/5365 | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe would be good to have this as the first item, given that it's the most concerning bug.