Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
257 changes: 257 additions & 0 deletions _posts/2026-10-21-release-2.11.0.md
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()`

Copy link
Copy Markdown
Member

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.

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

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The 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!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@micaela-matta @jennaswa what do you think?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The 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.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The 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
Loading