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
Two phase pipeline + StreamlitTwo phase pipeline + Streamlit

Two phase pipeline + Streamlit This is an example project that demonstrates how to create a pipeline that consists of two phases of execution. In betw

Rick Lamers 1 Nov 17, 2021
Describing statistical models in Python using symbolic formulas

Patsy is a Python library for describing statistical models (especially linear models, or models that have a linear component) and building design mat

Python for Data 866 Dec 16, 2022
Python-based Space Physics Environment Data Analysis Software

pySPEDAS pySPEDAS is an implementation of the SPEDAS framework for Python. The Space Physics Environment Data Analysis Software (SPEDAS) framework is

SPEDAS 98 Dec 22, 2022
Creating a statistical model to predict 10 year treasury yields

Predicting 10-Year Treasury Yields Intitially, I wanted to see if the volatility in the stock market, represented by the VIX index (data source), had

10 Oct 27, 2021
Produces a summary CSV report of an Amber Electric customer's energy consumption and cost data.

Amber Electric Usage Summary This is a command line tool that produces a summary CSV report of an Amber Electric customer's energy consumption and cos

Graham Lea 12 May 26, 2022
Clean and reusable data-sciency notebooks.

KPACUBO KPACUBO is a set Jupyter notebooks focused on the best practices in both software development and data science, namely, code reuse, explicit d

Matvey Morozov 1 Jan 28, 2022
Detecting Underwater Objects (DUO)

Underwater object detection for robot picking has attracted a lot of interest. However, it is still an unsolved problem due to several challenges. We take steps towards making it more realistic by ad

27 Dec 12, 2022
PySpark Structured Streaming ROS Kafka ApacheSpark Cassandra

PySpark-Structured-Streaming-ROS-Kafka-ApacheSpark-Cassandra The purpose of this project is to demonstrate a structured streaming pipeline with Apache

Zekeriyya Demirci 5 Nov 13, 2022
Feature engineering and machine learning: together at last

Feature engineering and machine learning: together at last! Lambdo is a workflow engine which significantly simplifies data analysis by unifying featu

Alexandr Savinov 14 Sep 15, 2022
Aggregating gridded data (xarray) to polygons

A package to aggregate gridded data in xarray to polygons in geopandas using area-weighting from the relative area overlaps between pixels and polygons. Check out the binder link above for a sample c

Kevin Schwarzwald 42 Nov 09, 2022
ASOUL直播间弹幕抓取&&数据分析

ASOUL直播间弹幕抓取&&数据分析(更新中) 这些文件用于爬取ASOUL直播间的弹幕(其他直播间也可以)和其他信息,以及简单的数据分析生成。

159 Dec 10, 2022
Used for data processing in machine learning, and help us to construct ML model more easily from scratch

Used for data processing in machine learning, and help us to construct ML model more easily from scratch. Can be used in linear model, logistic regression model, and decision tree.

ShawnWang 0 Jul 05, 2022
Code for the DH project "Dhimmis & Muslims – Analysing Multireligious Spaces in the Medieval Muslim World"

Damast This repository contains code developed for the digital humanities project "Dhimmis & Muslims – Analysing Multireligious Spaces in the Medieval

University of Stuttgart Visualization Research Center 2 Jul 01, 2022
Exploring the Top ML and DL GitHub Repositories

This repository contains my work related to my project where I scraped data on the most popular machine learning and deep learning GitHub repositories in order to further visualize and analyze it.

Nico Van den Hooff 17 Aug 21, 2022
yt is an open-source, permissively-licensed Python library for analyzing and visualizing volumetric data.

The yt Project yt is an open-source, permissively-licensed Python library for analyzing and visualizing volumetric data. yt supports structured, varia

The yt project 367 Dec 25, 2022
Statsmodels: statistical modeling and econometrics in Python

About statsmodels statsmodels is a Python package that provides a complement to scipy for statistical computations including descriptive statistics an

statsmodels 8k Dec 29, 2022
Fancy data functions that will make your life as a data scientist easier.

WhiteBox Utilities Toolkit: Tools to make your life easier Fancy data functions that will make your life as a data scientist easier. Installing To ins

WhiteBox 3 Oct 03, 2022
Single-Cell Analysis in Python. Scales to >1M cells.

Scanpy – Single-Cell Analysis in Python Scanpy is a scalable toolkit for analyzing single-cell gene expression data built jointly with anndata. It inc

Theis Lab 1.4k Jan 05, 2023
Binance Kline Data With Python

Binance Kline Data by seunghan(gingerthorp) reference https://github.com/binance/binance-public-data/ All intervals are supported: 1m, 3m, 5m, 15m, 30

shquant 5 Jul 13, 2022
Random dataframe and database table generator

Random database/dataframe generator Authored and maintained by Dr. Tirthajyoti Sarkar, Fremont, USA Introduction Often, beginners in SQL or data scien

Tirthajyoti Sarkar 249 Jan 08, 2023