MDAnalysis is a Python library to analyze molecular dynamics simulations.

Overview

MDAnalysis Repository README

Powered by NumFOCUS Github Actions Build Status Travis CI Build Status Coverage Status [*]

Documentation (latest release) Documentation (development version) User Google Group Developer Google Group Anaconda My Binder

MDAnalysis is a Python library for the analysis of computer simulations of many-body systems at the molecular scale, spanning use cases from interactions of drugs with proteins to novel materials. It is widely used in the scientific community and is written by scientists for scientists.

It works with a wide range of popular simulation packages including Gromacs, Amber, NAMD, CHARMM, DL_Poly, HooMD, LAMMPS and many others — see the lists of supported trajectory formats and topology formats. MDAnalysis also includes widely used analysis algorithms in the MDAnalysis.analysis module.

The MDAnalysis project uses an open governance model and is fiscally sponsored by NumFOCUS. Consider making a tax-deductible donation to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.

NumFOCUS (Fiscally Sponsored Project)

This project is bound by a Code of Conduct.

Powered by MDAnalysis

If you use MDAnalysis in your project consider lettting your users and the world know about it by displaying the MDAnalysis badge! Embedding code is available for different markups.

Example analysis script

import MDAnalysis as mda

# Load simulation results with a single line
u = mda.Universe('topol.tpr','traj.trr')

# Select atoms
ag = u.select_atoms('name OH')

# Atom data made available as Numpy arrays
ag.positions
ag.velocities
ag.forces

# Iterate through trajectories
for ts in u.trajectory:
    print(ag.center_of_mass())

Documentation

New users should read the Quickstart Guide and might want to look at our videos, in which core developers explain various aspects of MDAnalysis.

All users should read the User Guide.

Developers may also want to refer to the MDAnalysis API docs.

A growing number of tutorials are available that explain how to conduct RMSD calculations, structural alignment, distance and contact analysis, and many more.

Installation and availability

The latest release can be installed via ``pip`` or ``conda`` as described in the Installation Quick Start.

Source code is hosted in a git repository at https://github.com/MDAnalysis/mdanalysis and is available under the GNU General Public License, version 2 (see the file LICENSE).

Contributing

Please report bugs or enhancement requests through the Issue Tracker. Questions can also be asked on the user mailing list.

If you are a new developer who would like to start contributing to MDAnalysis get in touch on the developer mailing list. To set up a development environment and run the test suite read the developer guide.

Citation

When using MDAnalysis in published work, please cite the following two papers:

  • R. J. Gowers, M. Linke, J. Barnoud, T. J. E. Reddy, M. N. Melo, S. L. Seyler, D. L. Dotson, J. Domanski, S. Buchoux, I. M. Kenney, and O. Beckstein. MDAnalysis: A Python package for the rapid analysis of molecular dynamics simulations. In S. Benthall and S. Rostrup, editors, Proceedings of the 15th Python in Science Conference, pages 102-109, Austin, TX, 2016. SciPy. doi:10.25080/Majora-629e541a-00e
  • N. Michaud-Agrawal, E. J. Denning, T. B. Woolf, and O. Beckstein. MDAnalysis: A Toolkit for the Analysis of Molecular Dynamics Simulations. J. Comput. Chem. 32 (2011), 2319--2327. doi:10.1002/jcc.21787

For citations of included algorithms and sub-modules please see the references.

[*] build: Unit testing is for the whole package; coverage is shown for the core library modules and the analysis modules.
Comments
  • Serialize FileIO and TextIOWrapper and Universe

    Serialize FileIO and TextIOWrapper and Universe

    Fixes #2878

    • Composition over inheritance for pickling Universe in #2704

    Changes made in this Pull Request:

    • add new picklable BufferedReader, FileIO, and TextIOWrapper classes.
    • add new classes and pickle_open function to picklable_file_io.py
    • implement __getstate__, __setstate__ to Universe and BaseReader
    • fix DCD, XDR pickle issue

    PR Checklist

    • [x] Tests?
    • [x] Docs?
    • [x] CHANGELOG updated?
    • [x] Issue raised/referenced?
    enhancement GSoC 
    opened by yuxuanzhuang 123
  • [WIP] DCD Cython Changes

    [WIP] DCD Cython Changes

    Related to #929 -- I'm working in a separate branch descending from the original but rebased against develop. We can deal with merging stuff etc. later.

    The changes introduced so far finally allow the DCD unit tests to run again on my machine, although there is a new failure for one of them for some reason. Trying to figure this out & slowly chip away at writing DCDs. Focusing on py2 at the moment.

    Format-DCD 
    opened by tylerjereddy 101
  • Inclusion of ENCORE into MDAnalysis

    Inclusion of ENCORE into MDAnalysis

    Fixes #

    Changes made in this Pull Request:

    • Added ArrayReader trajectory reader
    • Added encore module under MDAnalysis.analysis

    PR Checklist

    • [ ] Tests?
    • [ ] Docs?
    • [ ] CHANGELOG updated?
    • [x] Issue raised/referenced?
    needs review Component-Analysis 
    opened by mtiberti 91
  • Diffusion Map Refactor/Implementation

    Diffusion Map Refactor/Implementation

    Fixes #857

    Changes made in this Pull Request:

    • Refactor of @euhruska's work to fit bauhaus style
    • Currently working through literature to ensure module fits researcher needs, agrees with theory.

    TODO:

    • [x] Finish Tranform Function
    • [x] Jupyter notebook explanation of diffusion maps analysis
    • [x] Figure out if matrix exponentiation actually needs to be done for timescaling, (it does not, http://www.stat.cmu.edu/~cshalizi/350/lectures/15/lecture-15.pdf) The eigenvectors for A^m are the same as those for A. Stems from diagonizability of matrix)
    • [x] Write up some notes in TeX for algorithm
    • [x] Check all citations in docs
    • [x] Switch to isotropic diffusion maps method.

    PR Checklist

    • [x] Tests?
    • [x] Docs?
    • [x] CHANGELOG updated?
    • [x] Issue raised/referenced?
    enhancement Component-Analysis 
    opened by jdetle 77
  • Deprecations on all components to disappear or change in Topology Refactor

    Deprecations on all components to disappear or change in Topology Refactor

    The 0.16 release features a complete overhaul of the topology system, giving better performance and consistency in a major part of MDAnalysis' core functionality. This also includes the disappearance of some API elements that no longer made sense; these must be marked as deprecated in the 0.15 release.

    Add to this list, and check when marked deprecated in develop branch.

    Deprecate and recommend alternative:

    • [x] AtomGroup.get_* getters
    • [x] AtomGroup.set_* setters
    • [x] ResidueGroup.get_* getters
    • [x] ResidueGroup.set_* setters
    • [x] SegmentGroup.get_* getters
    • [x] SegmentGroup.set_* setters

    Deprecate and indicate workaround (eg use RG.atoms.names)

    • [x] Residue as AtomGroup
    • [x] ResidueGroup as AtomGroup
    • [x] Segment as AtomGroup
    • [x] SegmentGroup as AtomGroup

    Indicate when the deprecation will happen

    • [x] CamelCase methods (#663)
    Priority-High usability Component-Core 
    opened by dotsdl 77
  • Issue 363 - New Topology System

    Issue 363 - New Topology System

    Fixes #363

    This is a WIP PR to serve as a focal point for discussion on the new topology system before it is merged into develop. The merge will happen soon after release of 0.15.0.

    Changes made in this Pull Request:

    • WIP

    TODO List

    • [x] Get tests passing!
    • [x] Implement guessers
    • [x] Make flags work
    • [x] Make moving residues work (in progress @richardjgowers)
    • [x] For each Parser, check all fields are read and correctly named/assigned
    • [x] For each Writer, check that no assumptions are made on the contents of Timesteps/AtomGroups
    Priority-High Component-Core Component-Topology 
    opened by dotsdl 74
  • [WIP] Issue 785 add auxiliary

    [WIP] Issue 785 add auxiliary

    WIP for #785.

    Currently, allows adding data from an xvg file to a trajectory by add_auxiliary(filename, name, **kwargs). When reading the next trajectory timestep, the auxiliary timesteps closest to that trajectory timestep are read through, and a 'representative' value calculated from these and stored in the timestep in an aux namespace, as ts.aux.name. The 'representative' value can be either an average or the value from the closest timepoint (with an optional cutoff).

    The XVGReader itself also has go_to_step and go_to_ts methods for jumping to specified auxiliary steps/trajectory timesteps; the latter's used to bring the auxiliary to the same time as the trajectory when it's first added, but I've not hooked it up with the equivalent trajectory method yet.

    There's a couple things that seem to work but I'm not sure I've gone about the right way (particularly the go_to methods; they currently just start reading form the top of the file and wait till the times match up...); apologies if I'm doing anything particularly silly!

    TODO

    • Expand to other filetypes + implement a guess_reader
    • Allow to select columns/name individually when reading multi-column data?
    • Dealing with 'missing data'?
    • Allow to iterate with auxiliary dt, rather than trajectory's
    • Proper testing!

    PR Checklist

    • [ ] Tests?
    • [ ] Docs?
    • [ ] CHANGELOG updated?
    • [x] Issue raised/referenced?
    enhancement Component-Readers 
    opened by fiona-naughton 67
  • Simple RDKitConverter

    Simple RDKitConverter

    Part of the fixes for #2468

    Changes made in this Pull Request:

    • Added a converter that works for any input with all hydrogens explicit in the topology.

    Inspired from the ParmEdConverter

    PR Checklist

    • [x] Tests?
    • [x] Docs?
    • [x] CHANGELOG updated?
    • [x] Issue raised/referenced?
    • [x] Merge tempfactors and bfactors
    • [x] Check Codecov
    • [x] Check pep8speaks
    enhancement GSoC 
    opened by cbouy 66
  • conda build scripts (fixes #608)

    conda build scripts (fixes #608)

    Fixes #608

    Changes made in this Pull Request:

    • Added conda scripts

    This updates the scripts from #571 by @hainm. I currently uploaded them on my own account. I still have to figure out how to do this for the MDAnalysis org once I have access to it.

    https://anaconda.org/kain88-de/mdanalysis

    PR Checklist

    • [x] CHANGELOG updated?
    • [x] Issue raised/referenced?

      - [ ] publish blog post detailing how MDAnalysis can be installed from conda

    • [x] add anaconda badge

      - [ ] add instructions to Quick Start Installation

    EDIT

    I remove some bullet points because they are tracked here

    enhancement installation release 
    opened by kain88-de 60
  • 2 failures and 1 error while performing the tests

    2 failures and 1 error while performing the tests

    Hi MDAnalysis developers!!

    Any advice on the following error and failures will be much appreciated. I am aiming to get everything working before contributing to the MDAnalysis code with some analysis enhancements.

    ======================================================================
    ERROR: MDAnalysisTests.coordinates.test_trz.TestTRZWriter2.test_writer_trz_from_other
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/users/ardita/MDAPCAvenv/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
        self.test(*self.arg)
      File "MDAnalysisTests/coordinates/test_trz.py", line 189, in test_writer_trz_from_other
        u2 = mda.Universe(two_water_gro, outfile)
      File "/users/ardita/MDAPCAvenv/lib/python2.7/site-packages/MDAnalysis-0.13.0_dev0-py2.7-linux-x86_64.egg/MDAnalysis/core/AtomGroup.py", line 3791, in __init__
        "Error: {2}".format(self.filename, parser, err))
    IOError: Failed to load from the topology file MDAnalysisTests/data/two_water_gro.gro with parser <class 'MDAnalysis.topology.GROParser.GROParser'>.
    Error: [Errno 5] Cannot open file or stream in mode='r'.: "'MDAnalysisTests/data/two_water_gro.gro'"
    -------------------- >> begin captured stderr << ---------------------
    /users/ardita/MDAPCAvenv/lib/python2.7/site-packages/MDAnalysis-0.13.0_dev0-py2.7-linux-x86_64.egg/MDAnalysis/coordinates/TRZ.py:539: UserWarning: Timestep didn't have the following attributes: 'pressure, pressure_tensor, total_energy, potential_energy, kinetic_energy, temperature, step', these will be set to 0 in the output trajectory
      "".format(", ".join(faked_attrs)))
    /users/ardita/MDAPCAvenv/lib/python2.7/site-packages/MDAnalysis-0.13.0_dev0-py2.7-linux-x86_64.egg/MDAnalysis/coordinates/TRZ.py:547: UserWarning: Timestep didn't have velocity information, this will be set to zero in output trajectory. 
      warnings.warn("Timestep didn't have velocity information, "
    
    --------------------- >> end captured stderr << ----------------------
    -------------------- >> begin captured logging << --------------------
    MDAnalysis.core.AtomGroup: DEBUG: Universe.load_new(): loading MDAnalysisTests/data/two_water_gro.gro...
    --------------------- >> end captured logging << ---------------------
    
    ======================================================================
    FAIL: test_write_trajectory (MDAnalysisTests.coordinates.test_netcdf.TestNCDFWriter)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "MDAnalysisTests/coordinates/test_netcdf.py", line 139, in test_write_trajectory
        'ncdf coord output not float32')
    AssertionError: ncdf coord output not float32
    -------------------- >> begin captured logging << --------------------
    MDAnalysis.core.AtomGroup: DEBUG: Universe.load_new(): loading MDAnalysisTests/data/Amber/bala.ncdf...
    MDAnalysis.core.AtomGroup: DEBUG: Universe.load_new(): loading /tmp/tmp2QChD0/ncdf-writer-1.ncdf...
    --------------------- >> end captured logging << ---------------------
    
    ======================================================================
    FAIL: test_write_trajectory (MDAnalysisTests.coordinates.test_netcdf.TestNCDFWriterTZ2)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "MDAnalysisTests/coordinates/test_netcdf.py", line 139, in test_write_trajectory
        'ncdf coord output not float32')
    AssertionError: ncdf coord output not float32
    -------------------- >> begin captured logging << --------------------
    MDAnalysis.core.AtomGroup: DEBUG: Universe.load_new(): loading MDAnalysisTests/data/Amber/tz2.truncoct.nc...
    MDAnalysis.core.AtomGroup: DEBUG: Universe.load_new(): loading /tmp/tmpdfdaTZ/ncdf-writer-1.ncdf...
    --------------------- >> end captured logging << ---------------------
    
    ----------------------------------------------------------------------
    Ran 3275 tests in 983.183s
    
    FAILED (KNOWNFAIL=3, errors=1, failures=2)
    
    Continuous Integration 
    opened by ashkurti 58
  • Slicing fixes

    Slicing fixes

    Fixes #914, #818

    Changes made in this Pull Request:

    • Changed coordinates/base.py to reflect true behavior of check_slice_indices
    • Changed DCD correl and timeseries documentation and defaults to reflect behavior of start stop step
    • Changed diffusion map docs to reflect the behavior of default start, stop, step
    • Changed density docs to reflect the behavior of default start, stop, step
    • Changed contact analysis docs to reflect the behavior of default start, stop, step
    • Changed RMSF docs to reflect behavior of default start, stop, step
    • Changed RMSF testing to reflect proper value.
    • Changed DCD reader source for timeseries creation. This included reformatting some code to make it look nicer, adding a helper variable to keep track of the number of frames and changing the way skipping is done.
    • Changed DCD
    • Added known failures for backwards steps steps. PR Checklist

      • [x] Tests?
      • [x] Docs?
      • [x] CHANGELOG updated?
      • [x] Issue raised/referenced?

    TODO

    • [x] Deprecate skip for step in DCD correl and timeseries
    • [x] Add more tests for slice checking
    • [x] Update docs to be more clear regarding inclusivity and exclusivity of slicing.

    LINE CHANGES IN dcd.c

    line 440 [line 470](https://github.com/jdetle/mdanalysis/blob/1c6c24124c1640294b65e6bc27f4cf8c09f962db/package/M DAnalysis/coordinates/src/dcd.c#L470)

    frame iteration lines

    opened by jdetle 56
  • [WIP] try making darker_lint experimental

    [WIP] try making darker_lint experimental

    This might at least avoid things looking like they failed (we can clean up the actions later if it works).

    PR Checklist

    • [ ] Tests?
    • [ ] Docs?
    • [ ] CHANGELOG updated?
    • [ ] Issue raised/referenced?
    Component-Analysis 
    opened by IAlibay 2
  • taking a swing at #3825

    taking a swing at #3825

    Fixes #3825

    Changes made in this Pull Request:

    • ts.data['tempfactor'] is now populated each frame (from PDB format files)

    PR Checklist

    • [ ] Tests?
    • [ ] Docs?
    • [ ] CHANGELOG updated?
    • [ ] Issue raised/referenced?
    Component-Readers 
    opened by richardjgowers 7
  • pytng reader tests generate a lot of warnings

    pytng reader tests generate a lot of warnings

    Is your feature request related to a problem?

    Running tests generates 611 warnings, by comparison PDB coordinate tests (which is generally the worst for the coordinate readers) only generates 268.

    A lot of these warnings are repeated stride block issues and therefore could easily be filtered out.

    Describe the solution you'd like

    Add some warnings filters to the TNG tests.

    Additional context

    Issue #2980

    testing Difficulty-easy GSOC Starter 
    opened by IAlibay 2
  • Move linting out of main gh action and don't make it run on merge

    Move linting out of main gh action and don't make it run on merge

    Expected behavior

    When merging everything should be green if it's been approved.

    Actual behavior

    We quite often end up with a red badge because darker fails on merge. We should prevent that by moving darker out of the core action file into a separate linter one and just have them run in PRs not on merge to develop.

    opened by IAlibay 0
  • Deprecate unpickle core/groups.py

    Deprecate unpickle core/groups.py

    1. Delete the current _unpickle() function and rename _unpickle2() to _unpickle().
    2. Change AtomGroup's __reduce__() from:
        def __reduce__(self):
            return (_unpickle, (self.universe, self.ix))
    

    to:

        def __reduce__(self):
            return (_unpickle, (self.universe, self.ix, AtomGroup))
    
    persistence Component-Core 
    opened by pgbarletta 4
  • Increase minimum numpy version to 1.21

    Increase minimum numpy version to 1.21

    As per NEP29, the 2.5.0 release of MDA will happen ~ March 2023 and will be Python 3.8+ & NumPy 1.21+

    See: https://numpy.org/neps/nep-0029-deprecation_policy.html#support-table

    Changes made in this Pull Request:

    • Raised the minimum NumPy version to 1.21.0
    • Change some uses of np.ndarray to npt.NDArray for typing

    PR Checklist

    • [x] Tests?
    • Docs?
    • [x] CHANGELOG updated?
    • Issue raised/referenced?
    Component-lib Continuous Integration 
    opened by IAlibay 2
Releases(package-2.4.2)
  • package-2.4.2(Jan 4, 2023)

    Release 2.4.2 of MDAnalysis

    This is a bugfix release of the 2.4.x version of MDAnalysis, it serves as an amendment to the earlier released version 2.4.1.

    Bug fixes

    • Fixed an issue where the arguments passed to np.histogramdd in MDAnalysis.analysis.DensityAnalysis were not compatible with the 1.24 release of NumPy (PR #3976)
    • Fixed upcoming incompatibilities with NumPy 1.25 in MDAnalysis.visualization.streamlines_3D and MDAnalysis.visualization.streamlines where incorrect comparison of the truth of arrays would have led to failures (PR #3977)
    Source code(tar.gz)
    Source code(zip)
  • package-2.4.1(Dec 17, 2022)

    Release 2.4.1 of MDAnalysis

    This is a bugfix release of the 2.4.x version of MDAnalysis, it serves as an amendment to the earlier released version 2.4.0.

    Bug fixes

    • The minimum version of biopython has been raised to 1.80 for pip installs
    • pytng has been added as an optional dependency
    Source code(tar.gz)
    Source code(zip)
  • package-2.4.0(Dec 16, 2022)

    Release 2.4.0 of MDAnalysis

    This a minor release of MDAnalysis, as per our once-every-three-months schedule.

    The minimum NumPy and Python versions remain largely unchanged, however the minimum version of biopython has been raised to 1.80. This is also the first release to officially support Python 3.11.

    Supported Python versions:

    • 3.8, 3.9, 3.10, 3.11

    Major changes:

    See the CHANGELOG and our release blog post for more details.

    Fixes:

    Enchancements:

    • As part of their outreachy project @umak has started adding type annotations throughout the MDAnalysis codebase
    • As part of their GSoC project @BFedder has added an auxialliary reader for EDR files (PR #3749)
    • As part of their GSoC project @aya9aladdin has fixed various issues with guessing and and attribute reading. This will be followed by the introduction of a new guesser system in a future release.
    • A reader for TNG files has been added by @hmacdope, follow up on his previous GSoC 2020 work on creating a python library for reading TNG files (PR 3765)
    • Addition of a new isolayer selection method (PR #3846)
    • Various enchancements and fixes to the LAMMPS DUMP Parser (allowing box translation on reading, allowing coordinates to be unwrapped based on dump image flags, and importing of forces and velocities) (PR #3844)
    • All readers now have a timeseries attribute (PR #3890)
    • ReaderBase file formats now accept pathlib inputs (PR #3935)
    • Added ability for hbond analysis to use types when resnames are not present (PR #3848)

    Changes:

    • The deprecated setup.py extra_requires AMBER entry has been removed in favor of extra_formats (PR #3810)
    • Various issues with the auxilliary reader, this should not be much more robust (PR #3749)
    • The Cython headers have been moved to MDAnalysis.lib.libmdanalysis (PR #3913)
    • The MDAnalysis.analysis.align.sequence_alignment now uses Bio.Align.PairwiseAligner instead of the deprecated Bio.pairwise2 (PR #3951)

    Deprecations:

    • The MemoryReader's timeseries inclusive indexing will be changed to exclusive in version 3.0.0 (PR #3894)
    • The sequence_aligment() method has been deprecated and will be removed in version 3.0.0 (PR #3951)
    • MDAnalysis.analysis.nucleicacids' direct indexing of selection indices to obtain pair distances results has been deprecated in favor of accessing results.pair_distances (PR #3958)

    New Contributors

    • @jaclark5 made their first contribution in https://github.com/MDAnalysis/mdanalysis/pull/3846
    • @pgbarletta made their first contribution in https://github.com/MDAnalysis/mdanalysis/pull/3876
    • @jfennick made their first contribution in https://github.com/MDAnalysis/mdanalysis/pull/3832
    • @Hakarishirenai made their first contribution in https://github.com/MDAnalysis/mdanalysis/pull/3956
    Source code(tar.gz)
    Source code(zip)
  • package-2.3.0(Aug 30, 2022)

    Release 2.3.0 of MDAnalysis

    This a minor release of MDAnalysis, as per our once-every-three-months schedule.

    The minimum NumPy version has been raised to 1.20.0 (1.21 for macosx-arm64) in line with NEP29.

    Supported python versions:

    • 3.8, 3.9, 3.10

    Major changes:

    See the CHANGELOG and our release blog post for more details.

    Fixes:

    • Fixed reading error when dealing with corrupt PDB CONECT records, and an issue where MDAnalysis would write out unusable CONECT records with index>100000 (Issue #988).

    Enhancements:

    • Formal charges are now read from PDB files and stored in a formalcharge attribute (PR #3755).
    • A new normalizing norm parameter for the InterRDF and InterRDF_s analysis methods (Issue #3687).
    • Improved Universe serialization performance (Issue #3721, PR #3710).

    Changes:

    • To install optional packages for different file formats supported by MDAnalysis, use pip install ./package[extra_formats] (Issue #3701, PR #3711).

    Deprecations:

    • The extra_requires target AMBER for pip install ./package[AMBER] will be removed in 2.4.0. Use extra_formats (Issue #3701, PR #3711).

    CZI EOSS Performance Improvements:

    A series of performance improvements to the MDAnalysis library's backend have been made as per planned work under MDAnalysis' CZI EOSS4 grant. Further details about these will be provided in a future blog post.

    • MDAnalysis.lib.distances now accepts AtomGroups as well as NumPy arrays (PR #3730).
    • Timestep has been converted to a Cython Extension type (PR #3683).
    Source code(tar.gz)
    Source code(zip)
  • package-2.2.0(Jun 2, 2022)

    Release 2.2.0 of MDAnalysis

    In line with NEP29, this version of MDAnalysis drops support for Python 3.7 and raises the minimum NumPy version to 1.19.0. Minimum version support has also been changed for the following packages; networkx>=2.0, scipy>=1.5.0, gsd>=1.9.3. Further details on MDAnalysis future support strategy and NEP29 will be released shortly.

    Supported python versions:

    • 3.8, 3.9, 3.10

    Major changes:

    See the CHANGELOG and our release blog post for more changes and details.

    Enhancements:

    • The frames argument was added to AnalysisBase-derived classes (i.e. modern analysis classes) allowing for specific frames to be defined when running an analysis. (PR #3415)
    • DL_POLY classic HISTORY files are now supported (Issue #3678)
    • Python wheels are now made available through PyPI for x86_64 architectures (Issue #1300, PR #3680)
    • Added a center_of_charge attribute for AtomGroups (PR #3671)
    • LinearDensity now work with UpdatingAtomGroups (Issue #2508, PR #3617)
    • Addition of a PCA transformation and an associated inverse-PCA transformation was added to the PCA analysis class (PR #3596, Issue #2703)
    • Major improvements to the RDKitConverter's accuracy (PR #3044)
      • Accuracy of 99.14% when benchmarked against ChEMBL30
      • AtomGroups containing monatomic ion charges and edge cases with nitrogen, sulfur, phosphorus and conjugated systems should now have correctly assigned bond orders and charges.
    • Addition of a new AnalysisBase derived Watson-Crick distance analysis class (PR #3611)

    Fixes:

    • Fixed issues where calling the copy method of Readers did not preserve optional arguments (Issue #3664, PR #3685)
    • Fixed several issues where iterating trajectories had undefined behaviour
      • Iterating (not in memory) SingleFrame readers now reset modified trajectory attributes (Issue #3423)
      • Iterating using defined indices did not rewind the trajectory (Issue #3416)
    • Fixed issues with competing processes writing to an XTC offset file leading to offset corruption (Issue #1988, PR #3375)
    • Fixed issue preventing OpenMMTopologyParsers from parsing systems with missing elements (Issue #3317, PR #3511)
    • Fixed issue with encore.covariance.covariance_matrix not working when providing an external reference (Issue #3539, PR #3621)
    • Fixed issue with broken code paths for "residues" and "segment" groupings for LinearDensity (Issue #3571, PR #3572)
    • Improved the flexibility of MOL2 reading, allowing for optional columns (subst_id, subst_name and charge) not to be provided (Issue #3385, PR #3598)
    • Fixed several issues related to converting AtomGroups to RDKit molecules (PR #3044):
      • Atoms are now in the same order
      • atom.GetMonomerInfor().GetName() now follows the guidelines for PDB files
      • Using NoImplicit=False no longer throws a SanitizationError
    • Fixed issues with incorrect reading of triclinic boxes from DUMP files (Issue #3386, PR #3403)
    • Fixed issue with the BAT method modifying input coordinate data (Issue #3501)

    Changes:

    • The number of matches allowed when doing a smarts selection has been increased from the default 1000 to max(1000, n_atoms * 10), an additional set of smarts_kwargs can now also be passed to override this behaviour (Issue #3469, PR #3470)
    • The fasteners package is now a core dependency (PR #3375)
    • LinearDensity now saves the histogram bin edges for easier plotting as `hist_bin_edges for each dimension in the results dictionary (Issue #2508, PR #3617)
    • ContactAnalysis now accepts AtomGroups (Issue #2666, PR #3565)

    Deprecations:

    • The following results attribute for LinearDensity are now deprecated: (Issue #2508, PR #3617)
      • pos is now mass_density
      • char is now charge_density
      • std entries are now stddev

    Known test failures:

    • Windows builds
      • In some cases users may get permission errors with tests involving symlinks. This should not impact the behaviour of MDAnalysis but may impact the creation of temporary files when using HOLE2 (see: https://github.com/MDAnalysis/mdanalysis/issues/3556).
    Source code(tar.gz)
    Source code(zip)
  • package-2.1.0(Mar 8, 2022)

    Release 2.1.0 of MDAnalysis

    In line with ongoing attempts to align with NEP29, this version of MDAnalysis drops support for Python 3.6 and raises the minimum NumPy version to 1.18.0.

    Please note that at time of release whilst all the MDAnalysis core functionality supports Python 3.10, some optional modules do not due to a lack of support by dependencies which they require. We hope that this support will gradually be added as more of these dependencies release new versions compatible with Python 3.10.

    Supported python versions:

    • 3.7, 3.8, 3.9, 3.10

    Major changes:

    See the CHANGELOG and our release blog post for more changes and details.

    Enhancements:

    • Addition of a new dielectric analysis module (PR #2118)
    • The TPR parser now supports reading files from GROMACS 2022 (PR #3514)
    • The H5MDReader can now load trajectories without a topology (PR #3466)
    • Custom compiler flags can be used when building MDAnalysis from source (PR #3429)
    • The RDKit reader now supports parsing R/S chirality (PR #3445)
    • A new method to apply the minimum image convention to a collection of vectors, minimize_vectors, has been introduced (PR #3472)

    Fixes:

    • Fixed various integer overflow issues in the distance calculation backend of MDAnalysis which would prevent calculations on large systems (Issues #3183, #3512).
    • Fixed issues with the creation of VMD surfaces in HOLE2 when using a non-contiguous start/stop/step.
    • Fixes reading of charges with the ITPParser (Issue #3419).
    • Fixed issue with the creation of a Universe from a custom object which only provides a topology (Issue #3443).
    • Fixed issue with accessing newly created values added via add_Segment or add_Residue (Issue #3437).

    Changes:

    • packaging is now a core dependency of MDAnalysis.
    • Indexing a Group (AtomGroup, ResidueGroup, SegmentGroup) with None now raises a TypeError. Prior to this indexing by None would incorrectly return the whole Group but claim to have a length of 1 atom (Issue #3092).
    • The TRZReader now defaults to a dt value of 1.0 ps instead of the previous 0.0 ps (Issue #3257).

    Deprecations:

    • The pbc keyword argument for various Group methods has been deprecated in favor of wrap. The deprecated keyword will be removed in version 3.0.0 (Issue #1760).

    Known test failures:

    • pytest-xdist and more than 4 workers
      • Under these conditions a test related to logging for HydrogenBondAnalysis can fail. This is not thought to impact the validity of MDAnalysis. See here for more details: https://github.com/MDAnalysis/mdanalysis/issues/3543
    • Windows builds
      • In some cases users may get permission errors with tests involving symlinks. This should not impact the behaviour of MDAnalysis but may impact the creation of temporary files when using HOLE2 (see: https://github.com/MDAnalysis/mdanalysis/issues/3556).
    Source code(tar.gz)
    Source code(zip)
  • release-2.0.0(Aug 21, 2021)

    Release 2.0.0 of MDAnalysis

    This is the first version of MDAnalysis to solely support python 3.6+

    Supported python versions:

    • 3.6, 3.7, 3.8, 3.9

    Please note that starting with the next minor version, MDAnalysis will be following NEP29.

    Notes:

    • This is a major release and introduces major advertised API breaks. Caution is advised when upgrading to 2.0.0.

    Major changes:

    Enhancements:

    • LAMMPSDumpReader can now read coordinates in all different LAMMPS coordinate conventions (Issue #3358)
    • New Results class for storing analysis results (Issue #3115)
    • New OpenMM coordinate and topology converters (Issue #2863, PR #2917)
    • New intra_bonds,intra_angles, intra_dihedrals, etc... methods to return connections involve atoms within AtomGroups instead of including atoms outside of it (Issue #1264, #2821, PR #3200)
    • Support for Groamcs 2021 TPR files (Issue #3180)
    • Adds preliminary support for ppc64le and aarch64 [ARM] (Issue #3127, PR #2956 #3149)
    • New selection operators (Issue #3054, PR #2927)
    • New refactor of helix analysis class as analysis.helix_analysis (Issue #2452)
    • New converter between RDKit molecules and MDAnalysis AtomGroup objects (Issue #2468). Also includes from_smiles Universe generator method, and the aromatic and smarts selection.
    • New analysis method for calculating Mean Squared Dsiplacements (Issue #2438)
    • New converter between Cartesian and Bond-Angle-Torsion coordinates (PR #2668)
    • Universes and readers can now be pickled paving the way to easier parallel analyses (Issue #2723)
    • New H5MDReader and H5MDWriter (Issue #762, #2866)

    Fixes:

    • Fixes an issue where select_atom, AtomGroup.unique, ResidueGroup.unique, and SegmentGroup.unique did not sort the output atoms (Issues #3364 #2977)
    • GRO files now only support unit cells defined with 3 or 9 entries (Issue #3305)
    • Fixes the sometimes wrong sorting of atoms into fragments when unwrapping (Issue #3352)
    • Fixes issue when atttempting to use/pass mean positions to PCA analysis (Issue #2728)
    • Fixes support for DL_POLY HISTORY files that contain cell information even if there are no periodic boundary conditions (Issue #3314)
    • Fixes issue with WaterBridgeAnalysis double counting waters (Issue #3119)
    • PDBWriter will use chainID instead of segID (Issue #3144)
    • PDBParser and PDBWriter now assign and use the element attribute (Issues #3030 #2422)
    • AtomGroup.center now works correctly for compounds + unwrapping (Issue #2984)
    • Documents and fixes the density keyword for rdf.InterRDF_s (Isuse #2811)
    • Fixed Janin analysis residue filtering, including CYSH (Issue #2898)

    Changes:

    • New converter API for all MDAnalysis converters under MDAnalysis.converters
    • Timestep now stores information in 'C' memory layout instead of the previous 'F' default (PR #1738)
    • hbonds.hbond_analysis has been remove din favour of hydrogenbonds.hbond_analysis (Issues #2739, #2746)
    • TPRParser now loads TPR files with tpr_resid_from_one=True by deafult, which starts TPR resid indexing from 1 (instead of 0 as in previous MDAnalysis versions) (Issue #2364, PR #3152)
    • analysis.hole has now been removed in favour of analysis.hole2.hole (Issue #2739)
    • Writer.write(Timestep) and Writer.write_next_timestep have been removed. Please use write() instead (Issue #2739)
    • Removes deprecated density_from_Universe, density_from_PDB, Bfactor2RMSF, and notwithin_coordinates_factory from MDAnalysis.analysis.density (Issue #2739)
    • Changes the minimum numpy supported version to 1.16.0 (Issue #2827)
    • Removes deprecated waterdynamics.HydrogenBondLifetimes (PR #2842)
    • hbonds.WaterBridgeAnalysis has been moved to hydrogenbonds.WaterBridgeAnalysis (Issue #2739 PR #2913)

    Deprecations:

    • The bfactors attribute is now aliased to tempfactors and will be removed in 3.0.0 (Issue #1901)
    • WaterBridgeAnalysis.generate_table() now returns table information, with the table attribute being deprecated
    • Various analysis result attributes which are now stored in Results will be deprecated in 3.0.0 (Issue #3261)
    • In 3.0.0 the ParmEd classes will only be accessible from the MDAnalysis.converters module
    • In 2.1.0 the TRZReader will default to a dt of 1.0 ps when failing to read it from the input TRZ trajectory

    See the CHANGELOG for more changes and details.

    Known issues:

    • Windows builds
      • For some compilers (seen on MVC v.19xx), differences in floating point precision leads to PBC wrapping differing from expected outcomes. This leads to failures in the MDAnalysisTests.lib.test_augment tests. To our knowledge this does not significantly affect results (as all other tests pass). We will aim to fix this in version 2.1.0.
    Source code(tar.gz)
    Source code(zip)
  • release-1.1.1(May 2, 2021)

    Final bugfix release for 1.0.x

    Python support is kept the same as 1.0.0, with python 3.9 not supported.

    Supported python versions:

    • 2.7, 3.5, 3.6, 3.7, 3.8

    Please note that python 2.7 and 3.5 support will be dropped in the upcoming 2.0.0 release.

    Major changes:

    Bug fixes

    • Re-enables support for Windows (Issue #3129)
    • NSGrid distance search backend is re-enabled, with a brand new code fixing previously seen issues (Issues #2670 #2229 #2345 #2919)
    • Adds support for numpy 1.20 for compatible python versions
    • Fixes bug where the exclusion matrix of hbond_autocorrel was not applied correctly (Issue #2987 PR #3242)

    Deprecations:

    • NCDFWriter scale_factor writing behaviour will change in 2.x (Issue #2327)
    • PDBWriter will no longer use the last letter of SegID for the chainID in 2.x (Issue #3144)
    • In 2.x, the universe attributes tempfactors and bfactors will stop being separate (Issue #1901)
    • MDAnalysis.analysis.hbonds.WaterBridgeAnalysis will be moved to MDAnalysis.analysis.hydrogenbonds.WaterBridgeAnalysis in 2.x (PR #3111)
    • In 2.x the TPRParser will index residues from 1 instead of 0. The tpr_resid_from_one keyword has been added to modify this behaviour (Issue #2364)

    Enhancements:

    • The get_connections method has been added to more easily get bonds, angles, dihedrals, etc.. for a group (Issues #1264 #2821)

    See the CHANGELOG for more changes and details.

    Known issues:

    • Windows builds
      • For some compilers (seen on MVC v.19xx), differences in floating point precision leads to PBC wrapping differing from expected outcomes. This leads to failures in the MDAnalysisTests.lib.test_augment tests. To our knowledge this does not significantly affect results (as all other tests pass). We will aim to fix this in version 2.0.
      • For python 3.5 only, extra tests failures are seen. These mostly relate to deprecations and warnings being raised upstream (primarily by os.path). As far as we know they do not affect the validity of the code. The following tests are affected:
        • MDAnalysisTests.analysis.test_base::test_analysis_class_decorator
        • MDAnalysisTests.analysis.test_dihedrals::TestRamachandran::test_protein_ends
        • MDAnalysisTests.analysis.test_helanal::test_warnings
        • MDAnalysisTests.coordinates.test_chainreader::TestChainReaderContinuous::test_easy_trigger_warning
        • MDAnalysisTests.utils.test_streamio::TestNamedStream_filename_behaviour::test_func[abspath]

    Notes:

    • Release 1.1.1 fixes an installation issue with 1.1.0. There is no published release for version 1.1.0.
    • As detailed in the 1.0.0 release, the 1.x releases only include bug fix changes. New features are being developed for MDAnalysis 2.x.
    Source code(tar.gz)
    Source code(zip)
  • release-1.0.1(Feb 28, 2021)

    First bugfix release for 1.0.x

    Python support is kept the same as 1.0.0, with python 3.9 not supported. Supported python versions:

    • 2.7, 3.5, 3.6, 3.7, 3.8

    Major changes:

    Bug fixes

    • Temporary disabling of the default nsgrid backend (in favour of PDKTree) to the capped_distance code due to a bug affecting accuracy (#2930)
    • Fixes issues with importing matplotlib versions > 3.3 (#2938)
    • TRZ reader and writer now checks and writes n_atoms (#2817)
    • The density keyword for rdf.InterRDF_s is now documented and has been fixed to give correct results (#2811)
    • Fixed reading of masses and charges from hoomdxml files (#2888)
    • The DMSParser now handles the creation of multiple segids sharing residues with identical resids (#1387)

    Deprecations:

    • waterdynamics.HydrogenBondLifetimes will be replaced with hydrogenbonds.HydrogenBondAnalysis.lifetime in 2.0.0 (#2547)
    • analysis.helanal will be removed in 2.0.0 and will be replaced with analysis.helix_analysis (#2622)
    • lib.util.echo and core.universe.as_Universe will be removed in 2.0.0.
    • analysis.leaflets.LeafletFinder will no longer accept non-Universe inputs as of version 2.0.0.

    Performance improvements:

    • Fixes a performance regression seen in 1.0.0 when doing string selections with select_atoms (#2751)
    • Performance improvements to the TPR parser and ParmEd converter (#2804 and #3028)

    See the CHANGELOG for more changes and details.

    Known issues:

    • PyPI and conda-forge releases of 1.0.1 are not compatible with Windows OS due to issues with our setup.py. We aim to fix this for the upcoming 1.0.2 release (#3129)

    As detailed in the 1.0.0 release, the 1.x releases only include bug fix changes. New features are being developed for MDAnalysis 2.x.

    Source code(tar.gz)
    Source code(zip)
  • release-1.0.0(Jun 17, 2020)

    First major stable release of MDAnalysis. The API will be stable for all 1.x releases.

    • supports
      • Python ≥3.5
      • Python 2.7 (last major release to do so, see the Roadmap)
    • new User Guide documentation
    • many new features
      • new hydrogen bonding and HOLE analysis modules, improved density analysis
      • new file formats (Chemfiles reader, NAMD binary coordinates, FHI-AIMS, Gromacs ITP, Gromacs 2020 TPR), improved PDB parsing
      • package interoperablity layer ("converters"): interface to ParmEd
    • bug fixes
    • better support for Windows 32 bit
    • removed features and constructs that were previously deprecated

    See the CHANGELOG for details.

    Note that 1.x will not be further developped, with only occasional bug fixes being backported as described in the Roadmap.

    The main development is geared towards MDAnalysis 2.x, which will only support Python 3.x and remove any code that was deprecated in 1.0.

    Source code(tar.gz)
    Source code(zip)
  • release-0.20.1(Oct 19, 2019)

  • release-0.19.2(Oct 19, 2019)

  • release-0.19.1(Aug 28, 2019)

  • release-0.19.0(Aug 28, 2019)

  • release-0.18.0(Apr 22, 2018)

  • release-0.17.0(Jan 25, 2018)

  • release-0.16.2(Jun 29, 2017)

  • release-0.16.1(Jun 4, 2017)

  • release-0.15.0(May 16, 2016)

  • release-0.14.0(Feb 28, 2016)

  • release-0.13.0(Jan 17, 2016)

  • release-0.12.1(Oct 10, 2015)

    Release 0.12.1 of MDAnalysis

    Main change log: https://github.com/MDAnalysis/mdanalysis/wiki/ReleaseNotes0120

    Additional fixes: https://github.com/MDAnalysis/mdanalysis/wiki/ReleaseNotes0121

    Source code(tar.gz)
    Source code(zip)
  • release-0.12.0(Oct 10, 2015)

Owner
MDAnalysis
MDAnalysis is an object-oriented Python library to analyze molecular dynamics trajectories.
MDAnalysis
Python script to automate the plotting and analysis of percentage depth dose and dose profile simulations in TOPAS.

topas-create-graphs A script to automatically plot the results of a topas simulation Works for percentage depth dose (pdd) and dose profiles (dp). Dep

Sebastian Schäfer 10 Dec 8, 2022
Helper tools to construct probability distributions built from expert elicited data for use in monte carlo simulations.

Elicited Helper tools to construct probability distributions built from expert elicited data for use in monte carlo simulations. Credit to Brett Hoove

Ryan McGeehan 3 Nov 4, 2022
The repo for mlbtradetrees.com. Analyze any trade in baseball history!

The repo for mlbtradetrees.com. Analyze any trade in baseball history!

null 7 Nov 20, 2022
Leverage Twitter API v2 to analyze tweet metrics such as impressions and profile clicks over time.

Tweetmetric Tweetmetric allows you to track various metrics on your most recent tweets, such as impressions, retweets and clicks on your profile. The

Mathis HAMMEL 29 Oct 18, 2022
Uses MIT/MEDSL, New York Times, and US Census datasources to analyze per-county COVID-19 deaths.

Covid County Executive summary Setup Install miniconda, then in the command line, run conda create -n covid-county conda activate covid-county conda i

Ahmed Fasih 1 Dec 22, 2021
follow-analyzer helps GitHub users analyze their following and followers relationship

follow-analyzer follow-analyzer helps GitHub users analyze their following and followers relationship by providing a report in html format which conta

Yin-Chiuan Chen 2 May 2, 2022
Autopsy Module to analyze Registry Hives based on bookmarks provided by EricZimmerman for his tool RegistryExplorer

Autopsy Module to analyze Registry Hives based on bookmarks provided by EricZimmerman for his tool RegistryExplorer

Mohammed Hassan 13 Mar 31, 2022
Python Library for learning (Structure and Parameter) and inference (Statistical and Causal) in Bayesian Networks.

pgmpy pgmpy is a python library for working with Probabilistic Graphical Models. Documentation and list of algorithms supported is at our official sit

pgmpy 2.2k Dec 25, 2022
Sensitivity Analysis Library in Python (Numpy). Contains Sobol, Morris, Fractional Factorial and FAST methods.

Sensitivity Analysis Library (SALib) Python implementations of commonly used sensitivity analysis methods. Useful in systems modeling to calculate the

SALib 663 Jan 5, 2023
TextDescriptives - A Python library for calculating a large variety of statistics from text

A Python library for calculating a large variety of statistics from text(s) using spaCy v.3 pipeline components and extensions. TextDescriptives can be used to calculate several descriptive statistics, readability metrics, and metrics related to dependency distance.

null 150 Dec 30, 2022
HyperSpy is an open source Python library for the interactive analysis of multidimensional datasets

HyperSpy is an open source Python library for the interactive analysis of multidimensional datasets that can be described as multidimensional arrays o

HyperSpy 411 Dec 27, 2022
pyETT: Python library for Eleven VR Table Tennis data

pyETT: Python library for Eleven VR Table Tennis data Documentation Documentation for pyETT is located at https://pyett.readthedocs.io/. Installation

Tharsis Souza 5 Nov 19, 2022
DaDRA (day-druh) is a Python library for Data-Driven Reachability Analysis.

DaDRA (day-druh) is a Python library for Data-Driven Reachability Analysis. The main goal of the package is to accelerate the process of computing estimates of forward reachable sets for nonlinear dynamical systems.

null 2 Nov 8, 2021
Lale is a Python library for semi-automated data science.

Lale is a Python library for semi-automated data science. Lale makes it easy to automatically select algorithms and tune hyperparameters of pipelines that are compatible with scikit-learn, in a type-safe fashion.

International Business Machines 293 Dec 29, 2022
statDistros is a Python library for dealing with various statistical distributions

StatisticalDistributions statDistros statDistros is a Python library for dealing with various statistical distributions. Now it provides various stati

null 1 Oct 3, 2021
EOD Historical Data Python Library (Unofficial)

EOD Historical Data Python Library (Unofficial) https://eodhistoricaldata.com Installation python3 -m pip install eodhistoricaldata Note Demo API key

Michael Whittle 20 Dec 22, 2022
vartests is a Python library to perform some statistic tests to evaluate Value at Risk (VaR) Models

vartests is a Python library to perform some statistic tests to evaluate Value at Risk (VaR) Models, such as: T-test: verify if mean of distribution i

RAFAEL RODRIGUES 5 Jan 3, 2023
A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms

MatrixProfile MatrixProfile is a Python 3 library, brought to you by the Matrix Profile Foundation, for mining time series data. The Matrix Profile is

Matrix Profile Foundation 302 Dec 29, 2022