Release 2.11.0 of MDAnalysis
21 Oct 2026We 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.
A highlight is the new support for mmCIF/PDBx files, which was one of the most-requested features (see 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, and ppc64le (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
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.11).
Notable changes
For a full list of changes, enhancements, bug fixes and deprecations see the CHANGELOG.
Enhancements:
-
Single-frame mmCIF/PDBx files, including
.cif.gz, can now be read with the optional gemmi library (Issue #2367, PR #4712):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 toUniverse(Issue #4907, PR #4943). The default download is mmCIF (.cif.gz); passfile_format="pdb"for a PDB file: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>CRYSINrecords (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 bycapped_distance()andself_capped_distance()(Issue #4906, PR #5481):-
apply_PBC(),AtomGroup.wrap()/pack_into_box(),center*(wrap=True),AtomGroup.unwrap()withreference="com"or"cog", and thetransformations.wraptransformation could leave atoms or compound centers outside the primary unit cell when bothb_xandc_yare 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()andself_capped_distance()with thensgridorpkdtreemethods could miss pairs within the cutoff, which also affects bond guessing and distance-based selections.nsgridwas affected in triclinic boxes with two or more non-90° angles (for example a rhombic dodecahedron);pkdtreein boxes with bothb_xandc_ynon-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.,Truewas parsed as frame 1 andFalseas 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
TypeErrorwhen 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
GNMAnalysiswhen using multiprocessing (Issue #5494, PR #5495)
- mean bin values in
Changes:
-
MDAnalysis.analysis.atomicdistances.AtomicDistancesnow stores its outputs inside theresultsdictionary asresults.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 therotatebytrajectory transformation now rotate velocities and forces as well as positions. The same applies toalign.alignto()andAlignTraj, which fit throughAtomGroup.rotate(). Previously velocities and forces were left unchanged (Issue #5421, PR #5452) -
WatsonCrickDist,MinorPairDist, andMajorPairDistmatch the full residue name. Previously only the first character was used, so names such as CHARMMDG/DAorGUA/ADEwere handled incorrectly. Analyses that relied on the old truncation need explicit residue names viag_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)
- @tani-dubey
- @BradyAJohnston (new CoreDeveloper)
- @IAyaanHere
- @khushi-phougat
- @Dreamstick9
- @jeremyleung521
- @harshitgajjela-droid
- @kunjsinha (GSoC contributor)
- @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 for support under CSSI award 2311372.
— @IAlibay and @orbeckst on behalf of the MDAnalysis Team