22 Apr 2018
MDAnalysis version 0.18.0 has been released.
This release brings various fixes and new features and users should update with either pip install -U MDAnalysis
or conda install -c conda-forge mdanalysis
.
One exciting new feature is the addition of duecredit
to keep track of what citations are appropriate.
Once you have written an analysis script (e.g., myanalysis.py
)
and have installed the duecredit
package (pip install duecredit
),
you can either set the environment variable DUECREDIT_ENABLE=yes
and run your script python myanalysis.py
or to run python -m duecredit myanalysis.py
to be given a report of what citable software you have used.
You can then use the data written by duecredit to export the bibliography and have it ready to be imported into your reference manager.
We hope that this will allow all contributors of analysis packages within MDAnalysis to get properly cited
and we are working on retroactively adding all required citations to duecredit.
The AtomGroup.groupby
method now supports using multiple attributes to group by,
for example one could create a dictionary which allows a particular residue name and atom name to be quickly queried:
>>> grouped = ag.groupby(['resnames', 'names'])
>>> grouped['MET', 'CA']
<AtomGroup with 6 atoms>
When writing GRO files,
previously all atoms would have their indices reset so that they ran sequentially from 1.
To preserve their original index, the reindex
option has been added to the GROWriter
.
For example:
>>> u = mda.Universe()
>>> u.atoms.write('out.gro', reindex=False)
or
>>> with mda.Writer('out.gro', reindex=False) as w:
... w.write(u.atoms)
Gromacs users can benefit from a new feature when reading TPR files. Now, when the topology is read from a TPR file, the atoms have a moltype
and a molnum
attribute. The moltype
attribute is the molecule type as defined in ITP files, the molnum
attribute is the index of the molecule. These attributes can be accessed for an atom group using the plural form:
>>> u = mda.Universe(TPR, XTC)
>>> u.atoms.moltypes
>>> u.atoms.molnums
These attributes can be used in groupby
:
>>> u.atoms.groupby('moltypes')
>>> u.atoms.groupby('molnums')
to provide access to all atoms of a specific moleculr type or that are part of a particular molecule.
The AtomGroup.split
method of atom groups can also work on molecules:
>>> u.atoms.split('molecule')
and will create a list of AtomGroup instances, one for each molecule.
For convenience, various Group classes have been moved to the top namespace (namely, AtomGroup
, ResidueGroup
, SegmentGroup
):
import MDAnalysis as mda
u = mda.Universe(topology, trajectory)
# for creating AtomGroups from arrays of indices
ag = mda.AtomGroup([11, 15, 16], u)
# or for checking an input in a function:
def myfunction(thing):
if not isinstance(thing, mda.AtomGroup):
raise TypeError("myfunction requires AtomGroup")
And finally, this release includes fixes for many bugs.
This includes
a smaller memory footprint when reading NetCDF trajectories,
better handling of time when reading DCD trajectories
and adding support for Gromacs 2018 TPR files.
For more details see the CHANGELOG entry for release 0.18.0.
As ever, this release of MDAnalysis was the product of collaboration of various researchers around the world featuring the work of 12 different contributors.
We would especially like to welcome and thank our six new contributors:
Ayush Suhane,
Mateusz Bieniek,
Davide Cruz,
Navya Khare,
Nabarun Pal,
and
Johannes Zeman.
14 Feb 2018
MDAnalysis has been accepted as a sub-org of the NumFOCUS foundation,
for Google Summer of Code 2018. If you are interested in working with us
this summer as a student read the advice and links below and write to us on the
mailing list.
We are looking forward to all applications from interested students
(undergraduate and postgraduate).
The application window deadline is March 27, 2018 at 12:00 (MST). As
part of the application process you must familiarize yourself with Google
Summer of Code 2018. Apply as soon as possible.
Project Ideas
We have listed several possible projects for you to work on on our
wiki.
Alternatively if you have your own idea about a potential project
we’d love to work with you to develop this idea; please write to us on the
developer list to discuss it there.
You must meet our own requirements if you want to be a student with MDAnalysis
this year (read all the docs behind these links!). You must also meet the
eligibility criteria.
As a start to get familiar with MDAnalysis and open source development you
should follow these steps:
Complete the Tutorial
We have a tutorial explaining the basics of MDAnalysis. You should go through
the tutorial at least once to understand how MDAnalysis is used.
Introduce yourself to us
Introduce yourself on the mailing list. Tell us what you plan to work
on during the summer or what you have already done with MDAnalysis
Close an issue of MDAnalysis
You must have at least one commit in the development branch of
MDAnalysis in order to be eligible, i.e.. you must demonstrate that
you have been seriously engaged with the MDAnalysis project.
We have a list of easy bugs to work on in our issue tracker on
GitHub. We also appreciate if you write more tests or update/improve
our documentation. To start developing for MDAnalysis have a look at
our guide for developers and write us on the
mailing list if you have more questions about setting up a
development environment.
— @kain88-de
30 Jan 2018
With the new year comes also a new release of MDAnalysis.
This release fixes bugs, removes deprecated code, and adds support for new file formats.
The biggest changes however aim at making MDAnalysis more sustainable in the long run.
The release note lists all the changes in this version.
This release of MDAnalysis comes with a long awaited change:
MDAnalysis now officially supports Python 3.4 and newer!
We cannot be your excuse to stick with Python 2 anymore.
Nevertheless, Python 2.7 remains supported for the foreseeable future.
The port to Python 3 was a long process that started in 2015 and was completed by Tyler Reddy and Richard Gowers thanks to a grant awarded by NumFOCUS.
To complete the port, the handling of the DCD format, used by, e.g., CHARMM and NAMD, had to be completely rewritten, a big task carried out by Tyler Reddy and Max Linke during the last year.
So this release brings a fresh DCD reader and a new low level library (libdcd) to manipulate DCD files.
An other change to stay up to date was supported by Google Summer of Code.
GSoC student Utkarsh Bansal ported our tests from nose to pytest.
Sadly, nose is now deprecated by lack of maintainers.
While we liked nose and are grateful to its developers, we had to move away from it.
We chose pytest as a replacement as it has a vibrant community and many great features.
Utkarsh not only made the tests run under the new framework but he also applied the pytest recommended idioms wherever possible.
As a result, our code coverage increased to 91% and the tests run significantly faster.
We added support for three new trajectory and topology formats.
The TXYZ and ARC files from Tinker and the GSD format of HOOMD.
Learn more about these file formats in our documentation.
If instead your prefer Amber’s netcdf4 trajectories, you should experience a performance gain when reading such trajectories. Gromacs users may notice that the parser for the TPR format now exposes molecule names under the moltype
attribute of atoms and residues, it also makes it easier to split atom groups by molecules.
It is also now possible to create Universes withot existing topology and coordinate files via the Universe.empty
class method. This should allow more possibilities in creating input files for simulations from a Python interface.
import MDAnalysis as mda
# `empty` classmethod does not require filenames
u = mda.Universe.empty(100, trajectory=True)
# can add the required attributes to the new Universe
u.add_TopologyAttr('names')
u.add_TopologyAttr('masses')
# ... position atoms, assign names etc
# then finally export to any supported format
u.atoms.write('system.gro')
A new tool makes an entrance in the analysis module tanks to Zhiyi Wu. It is now possible to follow water bridges between two selections using the WaterBridgeAnalysis
module. Read the documentation of the module to learn more about it.
With this release, we introduced some deprecations. In HydrogenBondAnalysis
, the keyword detect_hydrogen="heuristic"
is deprecated in favor of detect_hydrogen="distance"
. Indeed, the former may not find all the hydrogens, making the latter safer to use. In the result of the same analysis, the column “donor_id”x and “acceptor_idx”, that start counting at 1, are deprecated in favor of “donor_index” and “acceptor_index, respectively, that start counting at 0. Finally, throughout the code base, the use of the format
keyword of timeseries is deprecated and renamed order
, which reflects better the use of the keyword to set the order of output columns. We plan on removing the deprecated code with the version 1.0 of MDAnalysis. For the list of deprecations we removed in this version, consult the release note.
We also have various speed improvements in the whole library.
To ensure that MDAnalysis keeps getting faster Tyler Reddy has worked on developing asv benchmarks.
The benchmarks can be found in Benchmark repo.
You should also experience a performance gain of about 20 % when running GNM analyses.
For performance we also started experimenting with implementing multi core analysis in PMDA.
This release contains fixes to enable the use of PMDA.
Fifteen people contributed to this release, among which five were first time contributors.
Thank you to all contributors and welcome to Nestor Wendt, Micaela Mata, Sören von Bülow, Ruggero Cortini and Jose Borreguuero.
Upgrade
You can upgrade with pip install --upgrade MDAnalysis
. If you use the conda package manager run conda update -c conda-forge mdanalysis
.