# -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8 -*- ====================== MDAnalysis CHANGELOG ====================== The rules for this file: * entries are sorted newest-first. * summarize sets of changes - don't reproduce every git log comment here. * don't ever delete anything. * keep the format consistent (79 char width, M/D/Y date format) and do not use tabs but use spaces for formatting * accompany each entry with github issue/PR number (Issue #xyz) * release numbers follow "Semantic Versioning" http://semver.org ------------------------------------------------------------------------------ 11/06/18 richardjgowers * 0.19.2 Changes * Added Windows support 11/05/18 orbeckst, PicoCentauri, richardjgowers, zemanj * 0.19.1 Fixes * limit output of Chainreader __repr__ (#2109) * added missing docs for lib.pkdtree (#2104) * Added sphinx markup for FrameIterator (#2106) * fixed error for residues and segments containing 0 atoms (#1999) * fixed numpy deprecation warnings (#2122, #2123) * Fixed reading PDB files with DOS line ending (#2128) Deprecations * Default ``filename`` directory of align.AlignTraj is deprecated and will change in 1.0 to the current directory. 10/09/18 tylerjereddy, richardjgowers, palnabarun, orbeckst, kain88-de, zemanj, VOD555, davidercruz, jbarnoud, ayushsuhane, hfmull, micaela-matta, sebastien.buchoux, arm61, p-j-smith, IAlibay * 0.19.0 Enhancements * Added bond/angle/dihedral reading in PARM7 TOPParser (PR #2052) * Replaced multiple apply (_apply_distmat, _apply_kdtree) methods in distance based selections with lib.distances.capped_distance for automatic selection of distance evaluation method. (PR #2035) * Modified analysis.rdf.InterRDF to use lib.distances.capped_distance to handle rdf calculations for large systems. (PR #2013) * Added return_distances argument in lib.distances.capped_distances to evaluate and return distances only when required. Modified the optimization rules in lib.distances._determine_method for faster computations. (PR #2041) * Added method search_tree in lib.pkdtree to find all the pairs between two kdtrees. (PR #2041) * Added a wrapper of lib.nsgrid in lib.distances.self_capped_distance and lib.distances.capped_distanceto automatically chose the fastest method for distance based calculations. (PR #2008) * Added Grid search functionality in lib.nsgrid for faster distance based calculations. (PR #2008) * Modified around selections to work with KDTree and periodic boundary conditions. Should reduce memory usage (#974 PR #2022) * Modified topology.guessers.guess_bonds to automatically select the fastest method for guessing bonds using lib.distance.self_capped_distance (PR # 2006) * Added lib.distances.self_capped_distance to internally select the optimized method for distance evaluations of coordinates with itself. (PR # 2006) * Added augment functionality to create relevant images of particles in the vicinity of central cell to handle periodic boundary conditions (PR #1977) * Added lib.distances.capped_distance function to quickly calculate all distances up to a given maximum distance (PR #1941) * Added a rotation coordinate transformation (PR #1937) * Added a box centering trajectory transformation (PR #1946) * Added a on-the-fly trajectory transformations API and a coordinate translation function (Issue #786) * Added various duecredit stubs * Import time reduced by a factor two (PR #1881) * Added compound kwarg to center, centroid, center_of_geometry, center_of_mass (PR #1903) * Added rdf.InterRDF_s to calculate site-specific pair distribution functions (PR #1815) * Increased performance of (repeated) calls to AtomGroup.pack_into_box() (PR #1922) * Added boolean property *Group.isunique (PR #1922) * Added *Group.copy() methods returning an identical copy of the respective group (PR #1922) * Use a faster function to deduplicate indices (PR #1951) * Calculations in *Group.center() are performed in double precision (#PR1936) * Functions in lib.distances accept coordinate arrays of arbitrary dtype (PR #1936) * Added pbc kwarg to Bond/Angle/Dihedral/Improper object value method, default True. (Issue #1938) * ChainReader can correctly handle continuous trajectories split into multiple files, generated with gromacs -noappend (PR #1728) * MDAnalysis.lib.mdamath now supports triclinic boxes and rewrote in Cython (PR #1965) * AtomGroup.write can write a trajectory of selected frames (Issue #1037) * Added dihedrals.py with Dihedral, Ramachandran, and Janin classes to analysis module (PR #1997, PR #2033) * Added the analysis.data module for reference data used in analysis (PR #2033) * Added analysis.dihedrals with Ramachandran class to analysis module (PR #1997) * Added augment functionality to create relevant images of particles * Most functions in `MDanalysis.lib.distances` previously only accepting arrays of coordinates now also accept single coordinates as input (PR #2048, Issues #1262 #1938) * Performance improvements to make_whole (PR #1965) * Performance improvements to fragment finding (PR #2028) * Added user-defined boxes in density code (PR #2005) * MemoryReader now can accept velocities and forces (PR #2080) * Universe.transfer_to_memory now copies dimensions, velocities and forces (where possible) (Issue #1041 PR #2080) Fixes * Rewind in the SingleFrameReader now reads the frame from the file (Issue #1929) * Fixed order of indices in Angle/Dihedral/Improper repr * coordinates.memory.MemoryReader now takes np.ndarray only (Issue #1685) * Silenced warning when duecredit is not installed (Issue #1872) * Fixed HBondAnalysis not considering PBC for distances (Issue #1878) * Adding new TopologyAttrs with values defined always coerces this into a numpy array (Issue #1876) * Groups passed to select_atoms() are now type checked (Issue #1852) * Fixed inconsistent handling of groups with/without duplicates in pack_into_box() (Issue #1911) * Fixed format of MODEL number in PDB file writing (Issue #1950) * PDBWriter now properly sets start value * Introduced compatibility for pbd files hybrid36 format encoding (Issue #1897) * Zero length TopologyGroup now return proper shape array via to_indices (Issue #1974) * Added periodic boundary box support to the Tinker file reader (Issue #2001) * Modifying coordinates by assignation is consistently persistent when using the memory reader (Issue #2018) * Allow import of WaterBridgeAnalysis from analysis.hbonds (#2064) * Fixed SphericalLayer and SphericalZone selections with pbc=True. Previously these shifted all atoms to inside the primary unit cell when calculating the center of the reference group (Issue #1795) * PCA analysis now uses start frame as reference frame rather than 0th frame (PR #2055) * Fixed trajectory iteration from a MDAnalysis.Universe.empty (#2076) * Fixed copies MemoryReader not linking to the underlying coordinate array on initial Timestep (Issue #2081 PR #2080) Changes * TopologyAttrs are now statically typed (Issue #1876) * updated meta data for new PyPi (#1837) * AtomGroup.atoms, ResidueGroup.residues, and SegmentGroup.segments now return themselves instead of a new object to increase performance (PR #1922) * *Group.unique now returns a new object only if the respective group contains duplicates. Otherwise, the group itself is returned. Repeated access of *Group.unique will always return the same object unless the group is updated or modified. (PR #1922) * SurvivalProbability does not dilute SP anymore when the reference frame (t0) cannot find any molecules in the first place. (PR #1995) * The TPR parser reads SETTLE constraints as bonds. (Issue #1949) * Indexing a trajectory with a slice or an array now returns an iterable (Issue #1894) * Removed unused function MDAnalysis.lb.mdamath.one_to_many_pointers() (issue #2010) * Box input for functions in `MDAnalysis.lib.distances` is now consistently enforced to be of the form ``[lx, ly, lz, alpha, beta, gamma]`` as required by the docs (Issue #2046, PR #2048) * Added periodic keyword to select_atoms (#759) * PCA.transform now requires that PCA.run() has already been called otherwise a ValueError is raised (PR #2055) * The quiet keyword has been removed and replaced with verbose (Issue #1975 PR #2055) * MDAnalysis.Universe.empty now creates a MemoryReader trajectory (#2076 #2077) Deprecations * start/stop/step are deprecated in the initialization of Analysis classes. These parameters should instead be given to the run() method of the class. (Issue #1463 #1979 PR #2055) * Almost all "save()", "save_results()", "save_table()" methods in analysis classes were deprecated and will be removed in 1.0 (Issue #1972 and #1745) * Deprecated use of core.flags. For use_pbc, the pbc keyword should be used, use_KDTree_routines is obsolete as all distance calculations select the fastest method, all other uses of flags are deprecated. (#782) Testsuite * skip tests for duecredit when duecredit is not installed (#1906) * updated meta data for PyPi and updated README and INSTALL 04/15/18 tylerjereddy, richardjgowers, palnabarun, bieniekmateusz, kain88-de, orbeckst, xiki-tempula, navyakhare, zemanj, ayushsuhane, davidercruz, jbarnoud * 0.18.0 Enhancements * Added flatten_dict function that flattens nested dicts into shallow dicts with tuples as keys. * Can now pass multiple attributes as a list to groupby function. Eg ag.groupby(["masses","charges"]) (Issue #1839) * Added reading of record types (ATOM/HETATM) for PDB, PDBQT and PQR formats (Issue #1753) * Added Universe.copy to allow creation of an independent copy of a Universe (Issue #1029) * Added copy method to various core classes including Reader, TransTable, Topology, TopologyAttr (Issue #1029) * Added `reindex` option to GROWriter to preserve original atom ids when set to False (Issue #1777) * Can now pass 'atom_style' keyword argument when parsing Lammps Data files to specify what is on each line. Eg atom_style = 'id type charge x y z' (Issue #1791) * Added periodic boundary condition option to HydrogenBondAnalysis (Issue #1188) * Added duecredit to prepare a summary of the citations, when a user uses MDAnalysis (Issue #412) * Added AtomGroup, ResidueGroup and SegmentGroup to the top module namespace Fixes * Fixed MPI fork() warning when importing MDAnalysis in an Infiniband-enabled MPI environment (PR #1794) * Fixed waterdynamics SurvivalProbability ignoring the t0 start time (Issue #1759) * AtomGroup.dimensions now strictly returns a copy (Issue #1582) * lib.distances.transform_StoR now checks input type (Issue #1699) * libdcd now writes correct length of remark section (Issue #1701) * DCDReader now reports the correct time based on istart information (PR #1767) * added requirement scipy >= 1.0.0 (absolutely needed: >= 0.19) (Issue #1775) * Universe.empty now warns about empty Residues and Segmnets (Issue #1771) * AMBER netcdf reader now defaults to mmap=None as described in the docs (meaning mmap=True for files and NOT in memory), thus avoiding memory problems on big trajectories (Issue #1807) * analysis.align: fixed output and catch more cases with SelectionError when selections are incompatible (Issue #1809) * fix cython 0.28 compiler error * DCD istart was wrongly interpreted as frames (only in 0.17.0) instead of integrator timesteps, which lead to large time-offsets when reading and writing DCD files; now istart is correctly interpreted when reading and when writing, istart=None will set it to the CHARMM default nsavc but the default is istart=0, which will make the DCD start at frame 0 (Issue #1819) * Can now parse PDB files without resids (Issue #1854) * Fixed periodic KDTree, now requires Biopython version 1.71 onwards (Issue #1857) * fixed a bug in visualization.streamlines (Issue #1617) * Updated TPR parser for GROMACS 2018 (Issue #1796) * Fixed reading of PQR files generated by Gromacs (Issue #1804) Changes * scipy >= 1.0.0 is now required (issue #1775 because of PR #1758) Deprecations * undeprecated creating Groups from list of Components (Issue #1847) Testsuite * Unit tests for unwanted side effects when importing MDAnalysis * MDAnalysis.visualization is now tested 01/24/18 richardjgowers, rathann, orbeckst, tylerjereddy, mtiberti, kain88-de, jbarnoud, nestorwendt, mmattaNU, jmborr, sobuelow, sseyler, rcortini, xiki-tempula, manuel.nuno.melo * 0.17.0 Enhancements * added support for GSD format topology/trajectory parser (PR #1693) * spherical selections tokens can use the periodic KDTree (PR #1733) * added Amber residue names to 'protein' atom selection (PR #1704) * KDTree for neighbor search on periodic systems (PR #1660, #1692) * Python versions 3.4 and upwards are now supported (Issue #260) * added Universe.empty to allow Universes of custom size to be constructed without any files (PR #1533) * add minimal topology reader that is able to load coordinate/trajectory files on their own without requiring a topology file (Issue #1371) * added "parse_n_atoms" to Reader API and implemented this for DCD, INPCRD, NCDF, TRR and XTC formats (PR #1533) * added 'all_coordinates' keyword to Universe to also load the topology file as a frame of the reader together with the trajectory files (PR #1533) * add low level lib.formats.libdcd module for reading/writing DCD (PR #1372) * replace old DCD reader with a Python 3 ready DCD reader (Issue #659) * about 20% speed improvements for GNM analysis. (PR #1579) * added support for Tinker TXYZ and ARC files * libmdaxdr and libdcd classes can now be pickled (PR #1680) * speed up atomgroup.rotate when point = (0, 0, 0) (Issue #1707) * introduce the water bridge analysis module (PR #1722) * Universe.add_TopologyAttr now accepts strings to add a given attribute to the Universe (Issue #1092, PR #1186) * The TPR parser populate the `moltypes` and `molnums` topology attributes; the `moltype` and `molnum` selection keyword are added (Issue #1555, PR #1578) * use gridDataFormats >= 0.4.0 for new 'type' kwarg in analysis.density.Density.export() to enable writing DX files compatible with (buggy) PyMOL (#1725) Deprecations * HydrogenBondAnalysis detect_hydrogens=heuristic is marked for deprecation in 1.0 * timeseries keyword format is replaced by order. The format keyword is marked for deprecation in 1.0 Fixes * Fixed analysis.psa.dist_mat_to_vec not returning int values (Issue #1507) * Fixed triclinic PBC transform for a- and b- axes (Issue #1697) * Fixed nuclinfo.tors() not converting delta (Issue #1572) * Changed _calc_dihedral and Dihedral.value() to match IUPAC convention (Issue #1565) * Fixed _calc_dihedral returning negative angles as positive (Issue #1554) * correctly read little-endian TRZ files on big-endian architectures (issue #1424) * Fixed type matching and inclusion compilation warnings for the ENCORE analysis package (issue #1390) * Fix extra deprecation warnings for instant segment and residue selectors (Issue #1476) * Accessing segments from a universe with an instant selector now issues a deprecation warning as expected (Issue #1478) * Fixed Angle.angle method return NaN values when angle was very close to 180 degrees (Issue #1556) * Fixed analysis.rms.RMSD failure with select != "all" (Issue #1487) * Fixed analysis.rms.RMSD: group RMSD calculation does not superimpose groupselections anymore (issue #720) * XDR files now avoid offset recalculation on a rewind (PR #1667) * Universe creation doesn't Matryoshka NamedStream anymore (PR #1669) * Fixed triclinic unit cell distances for box edges (Issue #1475) * Fixed analysis.rms.RMSD: selections are now applied to atomgroup, not to atomgroup.universe * Default filename argument for AlignTraj works again (Issue #1713) * Fixed analysis.rms.RMSD failed when selection is unicode (PR #1710) * Fixed analysis.align.AlignTraj failed when step > 1 (Issue #1714) Changes * generate pairwise distance matrix, analysis.psa.PSAnalysis.D, by default when analysis.psa.PSAnalysis.run_pairs_analysis is run (Issue #1507) * remove deprecated TimeSeriesCollection * remove deprecated analysis.align.rms_fit_trj * remove deprecated analysis.contacts.ContactAnalysis * remove deprecated analysis.contacts.ContactAnalysis1 * remove deprecated analysis.hbonds.hbond_analysis 1-indexing * remove deprecated analysis.rms `target` keyword from functions * remove deprecated analysis.rms.RMSD `mass_weighted` keyword * remove deprecated analysis.align `mass_weighted` keyword from classes * remove deprecated analysis.psa `mass_weighted` keyword from classes * use fast scipy.io.netcdf pure python implementation for reading of Amber netcdf3 trajctories instead of netCDF4 but use netCDF4 for fast writing (if available) or fall back to netcdf (see also Issue #506) * libmdaxdr classes now accept more argument types for a write (PR #1442) * libmdaxdr classes now raise EOFError when accessing another frame after the end of the file. Used to raise IOError. * Universe.load_new() now returns the universe itself instead of tuple (filename_or_array, trajectory_type) (Issue #1613) * docs: URLs to (www|docs).mdanalysis.org now link to SSL-encrypted site (see issue MDAnalysis/MDAnalysis.github.io#61) * attributes can not be assigned to AtomGroups (and similar objects) unless they are part of the Universe topology (Issue #1092 PR #1186) 06/29/17 richardjgowers, rathann, jbarnoud, orbeckst, utkbansal * 0.16.2 Deprecations * deprecated core.Timeseries module for 0.17.0 (Issue #1383) * deprecated instant selectors for 1.0 (Issue #1377) * deprecated the core.flag registry for 1.0 (Issue #782) Fixes * fixed GROWriter truncating long resids from the wrong end (Issue #1395) * Fixed dtype of numpy arrays to accomodate 32 bit architectures (Issue #1362) * Groups are hashable on python 3 (Issue #1397) Changes * scipy and matplotlib are now required dependencies (Issue #1159) Changes * scipy and matplotlib are now required dependencies (Issue #1159) Testsuite * Port to pytest - removed nose as a dependency (Issue #884) 06/03/17 utkbansal, kain88-de, xiki-tempula, kaplajon, wouterboomsma, richardjgowers, Shtkddud123, QuantumEntangledAndy, orbeckst, kaceyreidy * 0.16.1 Enhancements * Universe now works with StringIO objects for topologies and trajectories. * Residues with the same residue ids are not merged by default now (apply to PDB, GRO) (Issue #1306) * Improved print to screen format in waterdynamics module (using ProgressMeter). * PQRParser now treats insertion codes properly (Issue #1317) * made online docs responsive with the Alabaster Sphinx theme (#378) Fixes * In Universe.transfer_to_memory(): dt is now adjusted with step (Issue #1310) * Various documentation sphinx errors (PR #1312) * Bugfix in confdistmatrix.get_distance_matrix; now works on all trajectory types. (issue #1324) * Fixed bug "no molecules in water selection" in waterdynamics analysis module. * Fix hbond_analysis cannot deal with Universe where no two atoms are with 3A. (PR #1325) * Fix PDBParser docs for conect (issue #1246) * Fixed bug where amber topology files would fail to load if number of atoms was exactly divisible by number of atoms per line (issue #1331) * Fixed incorrect handling of residue names with trailing numbers in HydrogenBondAnalysis (issue #801) * Fixed AnalysisBase class provides numerical start,stop,step values (PR #1340) * Fixed PSFParser not creating multiple residues for identical resids in different segments. (Issue #1347, PR #1348) * Add the OC1 and OC2 from amber99sb-ildn to hydrogen bond acceptors (issue #1342) * Fix RMSF run return value (PR #1354) * Fixed documentation in pca (Issue #1378 PR #1379) Changes * Enable various pylint warnings to increase python 3 compatibility * Change Mathjax cdn (Issue #1313) * Change mass_weight to weights for PSA analysis * Move mass_weights deprecation to version 0.18 * Docs moved to http://docs.mdanalysis.org (Issue #1315) and made responsive (Alabaster theme with readable-sphinx CSS) (Issue #378) * speed improvements parsing PDB / PDBQT / PQR / XYZ coordinate reader (Issue #1308) 04/10/17 kain88-de, fiona-naughton, richardjgowers, tyler.je.reddy, jdetle euhruska, orbeckst, rbrtdlg, jbarnoud, wouterboomsma, shanmbic, dotsdl, manuel.nuno.melo, utkbansal, vedantrathore, shobhitagarwal1612, xiki-tempula, kash1102, vedantrathore * 0.16.0 Enhancements * Added 'filename' attribute to 'MemoryReader' * GRO reader conforms to the reader API standard(#1196) * Improved __str__ and __repr__ of 'GroupBase' class in MDAnalysis.core.groups (addresses Issue #1223) * Added dynamic selections (addresses Issues #175 and #1074). * Added 'MemoryReader' class to allow manipulation of trajectory data in-memory, which can provide substantial speed-ups to certain calculations. * Universe creation now takes an 'in_memory' option, which will transfer the corresponding trajectory to memory. Likewise a new 'Universe.transfer_to_memory()' method makes it possible to make this transfer after construction of the universe * Added 'in_memory' option to 'rms_fit_trj', which makes it possible to do in-place (in-memory) alignment of trajectories. * All classes derived from 'AnalysisBase' now display a ProgressMeter with 'quiet=False' * The 'run' method from all 'AnalysisBase' derived classes return the class itself. * Added boolean flag at lib.distances.USED_OPENMP to reveal if OpenMP was used in compilation (Issue #883) * Added Principal Component Analysis module for linear dimensionality reduction. * Added Auxiliary module for reading additional timeseries data alongside trajectories (Issue #785) * Added AnalysisFromFunction & analysis_class, see (Issue #946 and PR #950) * Established the MDAnalysis.analysis.legacy module for unmaintained analysis code (Issue #743) * Added ProgressMeter to 'transfer_to_memory' function, to show progress of loading trajectory to memory (Issue #1028 and PR #1055). * Selecting atoms by resid now respects icodes if they were present. Ie select_atoms('resid 163A') works! (Issue #839 PR #1066) * Added ability to read MMTF format files (#907 PR #1069) * Added MDAnalysis.fetch_mmtf function to download from PDB and create Universe (#810 PR #1082) * Added coordinates.null.NullWriter, which behaves like a Writer but ignores all input; useful for suppressing output. * Added random access support to GMSReader and TRJReader (#1081) * Added atomgroup.center(weights, pbc) method to calculate the center of a group given weights * Universe anchors (for unpickling) now use a uuid (rather than filename) to distinguish themselves by default. Can still use anchor_name kwarg to control the anchor name manually. (PR #1125) * Added groupby method to Group objects. (PR #1112) * Added `singleframe` attribute to Writer API to exclude from known Writers for a single frame (Issue #1199 PR #1201) * Correct the display error of HydrogenBondAnalysis when start is not 0 or step is not one. * Groups (atomgroup, residuegroup, and segmentgroup) have more operators, included set operators (Issue #726) * Universes built with Merge now use the MemoryReader (Issue #1251) * speed improvement for analysis.gnm.closeContactGNMAnalysis(..., weights="size") by about 5x (partially Issue #1191) Fixes * Trajectory slicing made completely Pythonic (Issue #918 PR #1195) * Argument validation of dist_mat_to_vec is fixed (#597 PR #1183) * Give correct error when the topology file format is not recognized (Issue #982) * Give correct error when file doesn't exist/ has bad permissions (Issue #981) * Improvement of analysis/waterdynamics module (Issue #935) * Removed MDAnalysis.analysis.PDBToBinaryTraj (Issue #1035) * MDAnalysis.analysis.distances.between() is no longer broken * GROWriter resids now truncated properly (Issue #886) * reading/writing lambda value in trr files (Issue #859) * fix __iter__/next redundancy (Issue #869) * SingleFrameReader now raises StopIteration instead of IOError on calling next (Issue #869) * Display of Deprecation warnings doesn't affect other modules anymore (Issue #754) * Changed nframes to n_frames in analysis modules for consistency (Issue #890) * fixed incompatibility with newer matplotlib in analysis.hole * Fixed modules that improperly documented and/or used frame slicing defaults (#914) * Fixed same interRDF can be run twice (Issue #924) * Support for TPR files produced by Gromacs-2016 (Issue #932) * Fixed parsing PDB files with CONECT records to TER entries (Issue #936) * Fixed parsing PDB files with single entry in CONECT record (Issue #937) * Progress meters are now displayed as expected on jupyter notebooks (Issue #927) * Reset trajectory to 0 after sliced iteration (Issue #1031) * Fixed rotaxis returning NaN if a=b (Issue #1045) * Fixed align_principal_axis onto a principal axes (Issue #1045) * Fixed NCDFWriter wrote velocities instead of forces if convert_units=False was set: now correctly writes forces (PR #1113) * Fixed warn about missing cython package in dev builds * Fix align.rotation_matrix checks array shape equality (Issue #1152) * Fixed strange error when writing a PDB with 0 atoms (Issue #1083 PR #1103) * Fixed selections using operators backwards ('prop 10 > mass') and sensitivity about whitespace around these (PR #1156 Issue #1011 #1009) * Fixed PSA analysis is now using AlignTraj * Fixed Principal Axes to order from highest to lowest eigenval (Issue #1162) * Fixed analysis.density with soluteselection and notwithin_coordinates_factory when using KDTree (Issue #1211) * GRO files with greater than 99,999 residues now read correctly (Issue #728) Changes * Started unifying the API of analysis classes (named internally "Bauhaus" style; see Issue #719) * Added protected variable _frame_index to to keep track of frame iteration number in AnalysisBase * Added new AlignTraj class for alignment. (Issue #845) * Added new diffusionmap module for dimension reduction (Issue #857) * Added new PCA module for dimension reduction (PR #896) * Qcprot now takes N x 3 arrays instead of 3 x N arrays. This gives about a 40% speed up. (PR #930) * The ProgressMeter class now has a `dynamic` keyword argument. It is now recommended to provide format strings using the new python format syntax, the old %-based syntax is still available but will be deprecated. (PR #944) * Analysis.rms.RMSD now confirms to standard analysis API (Issue #893) * Fragments in Universe.fragment are now sorted by the index of their first atom. (Issue 1007) * atoms.tranform/translate/rotate/rotateby return original atomgroup (Issue #1010) * atoms.translate/rotateby don't accept AtomGroup tuples as parameters anymore (Issue #1025) * atoms.rotate can be given center of rotation (Issue #1022) * XTCFile and TRRFile only raise IOError now on error. * Deprecate usage of MDAnalysis.core.AtomGroup * get_writer_for() returns NullWriter when filename=None instead of raising TypeError and filename is now a required arg instead of kwarg * moved coordinates.base.ChainReader to coordinates.chain.ChainReader * renamed private method ChainReader.get_flname() to ChainReader._get_filename() * totaltime now considers the first frame to be at time 0 (Issue #1137) * analysis.rms.RMSF now conforms to standard analysis API (PR #1136) * analysis.rms/align function keyword `mass_weighted` is replaced by generic `weights='mass'`. This new keyword allows to pass it an arbitrary weights array as well. (PR #1136) * Renamed various base classes for clarity. Iobase -> IOBase, Reader -> ReaderBase, SingleFrameReader -> SingleFrameReaderBase, Writer -> WriterBase, TopologyReader -> TopologyReaderBase, SelectionWriter -> SelectionWriterBase (Issue #921) * Selection writers do not have a 'wa' mode anymore, but they have a 'close' method (Issue #1244) * Remove deprecated PrimitivePDB* classes * Remove deprecated `delta` keyword for ChainReader * Remove deprecated permissive_pdb_reader flag * Removed superfluous and confusing keywords `start` and `end` for resid selection in analysis.helanal.helanal_main() and analysis.helanal.helanal_trajectory() * weights="size" parameter in analysis.gnm.closeContactGNMAnalysis to replace MassWeight=True * bump minimum numpy version to 1.10.4 Deprecations (Issue #599) * Use of rms_fit_trj deprecated in favor of AlignTraj class (Issue #845) * Moved analysis.x3dna to the analysis.legacy module (Issue #906) * The keyword argument *quiet* is deprecated in favor of *verbose* throughout the library (Issue #903) * MassWeight=True parameter in analysis.gnm.closeContactGNMAnalysis deprecated in favor of weights="size". Testsuite * Make knownfailure work even without parentheses. * Added a plugin to list the non-closed file handle (Issue #853, PR #874). The plugin can be disabled with --no-open-files. * The test_failure test can be made fail by setting the MDA_FAILURE_TEST environment variable (PR #874) * replaced XTC_HOLE test trajectory with more meaningful one MULTIPDB_HOLE * install external packages on Travis (SETUP == full: HOLE, clustalw) to test additional analysis code (Issue #898) * removed usage of random numbers from tests (Issue #958) * test_imports now always uses the correct source directory (Issue #939). 05/15/16 jandom, abhinavgupta94, orbeckst, kain88-de, hainm, jbarnoud, dotsdl, richardjgowers, BartBruininks, jdetle, pedrishi, fiona-naughton, jdetle * 0.15.0 Metadata * link download_url to GitHub releases so that Depsy recognizes contributors (issue #749) * a __version__ variable is now exposed; it is built by setup.py from the AUTHORS file (Issue #784) API Changes * rmsd doesn't superimpose by default anymore. The superposition is controlled by the 'superposition' keyword now. (see issue #562, #822) Enhancements * Add conda build scripts (Issue #608) * Added read-only property giving Universe init kwargs (Issue #292) * Added 'crdbox' as AMBER Trj format extension (Issue #846) * Iteration and seeking in PDB files made faster (Issue #848) Fixes * Fixed TypeError in PSAnalysis heatmap-dendrogram plotting (Issue #1018) * ENT file format added to PDB Readers/Writers/Parsers (Issue #834) * rmsd now returns proper value when given array of weights (Issue #814) * change_release now finds number and dev (Issue #776) * units.py now correctly prints errors for unknown units. * test_shear_from_matrix doesn't fail for MKL builds anymore (Issue #757) * HEADER and TITLE now appear just once in the PDB. (Issue #741) (PR #761) * MOL2 files without substructure section can now be read (Issue #816) * MOL2 files can be written without substructure section (Issue #816) * GRO files with an incomplete set of velocities can now be read (Issue #820) * Fixed Atom.position/velocity/force returning a view onto Timestep array (Issue #755) * PDB files can now read a CRYST entry if it happens before model headers (Issue #849) * Fixed HistoryReader returning 1 based frame indices (Issue #851) Changes * Added zero_based indices for HBondsAnalysis. (Issue #807) * Generalized contact analysis class `Contacts` added. (Issue #702) * Removed Bio.PDBParser and sloppy structure builder and all of MDAnalysis.coordinates.pdb (Issue #777) * PDB parsers/readers/writers replaced by "permissive"/"primitive" counterparts (formerly known as PrimitivePDBReader); the 'permissive' keyword for Universe is now ignored and only the native MDAnalysis PDBReader is being used (Issue #777) * PDBReader only opens a single file handle in its lifetime, previously opened & closed handle each frame (Issue #850) Deprecations (Issue #599) * Use of PrimitivePDBReader/Writer/Parser deprecated in favor of PDBReader/ Writer/Parser (Issue #777) * Deprecated all `get_*` and `set_*` methods of Groups. * Deprecation warnings for accessing atom attributes from Residue, ResidueGroup, Segment, SegmentGroup. Will not be present or will give per-level results. * Deprecation warnings for accessing plural residue attributes from Residue or Segment (will disappear), or from SegmentGroup (will give per-Segment results). * Deprecation warnings for accessing plural segment attributes from Segment (will disappear). * Deprecated Atom number, pos, centroid, universe setter * Deprecated AtomGroup serials, write_selection * Deprecated Residue name, id * Deprecated Segment id, name * Deprecated as_Universe function; not needed * Deprecated ContactAnalysis and ContactAnalysis1 classes Testsuite * metadata update: link download_url to GitHub releases so that Depsy recognizes contributors (issue #749) and added @richardjgowers as maintainer * a __version__ variable is now exposed; it is built by setup.py from the AUTHORS file (Issue #784) * Removed all bare assert (Issue #724) * added tempdir module 02/28/16 tyler.je.reddy, kain88-de, jbarnoud, richardjgowers, orbeckst manuel.nuno.melo, Balasubra, Saxenauts, mattihappy * 0.14.0 API Changes * Offsets files for Gromacs trajectory formats have been changed to a numpy style format '.npz'. Offsets files will be regenerated when you load a xtc/trr trajectory again. (Issue #441) * rotation_matrix now accepts array-likes as input Enhancement * XDR file seeking errors now report system errno. (PR #678) * Offsets reading for xtc/trr files has been sped up. (Issue #441) * select_atoms now implicitly ORs multiple values after a keyword for many types of selections (Issue #345) * Performance improvements for the PDBReader of about 10% * LinearDensity analysis module added, which allows to compute linear mass and charge density profiles along the three cartesian axes of the cell. Works for orthorombic, fixed volume cells only. (Issue #670) * Trajectories can now be sliced using a boolean array (Issue #725) Changes * xdrlib was rebranded libmdaxdr. (Issue #679) * xdrlib has been ported to cython. (Issue #441) * util.NamedStream no longer inherits from basestring (Issue #649) * Short TRZ titles are striped from trailing spaces. A friendlier error message is raised when the TRZ writer is asked to write a title longer than 80 characters. (Issue #689) * PDB doesn't save charge information anymore * coordinates.core.get_writer_for uses the user defined format if provided before trying to deduce the format from file extension. (Issue #712) Fixes * Syntax error corrected in psa.py (Issue #738) * XDR file seeking and telling working again for large files (Issue #677). * ContactAnalysis1 run method now starts at frame index 0 by default (Issue #624) * Fixed PrimitivePDBWriter alignment of the atom name. (Issue #639 and #647) * The 'atom' selection keyword returns an empty selection rather than an error when no atoms are are found. (Issue #644) * nucleic selection will now detect nucleic residue names suffixed with 3 or 5 (Issue #461) * Fixed Reader returning all frames with stop in slice was 0 (Issue #672) * Fixed NCDFReader not reading dt (Issue #676) * Fixed PDB-Topology read bonds for atom ids larger then 10000 (Issue #693) * Fixed Type Error in qcprot.pyx when no rotation can be fond (Issue #705) * Fixed cyzone selection failing in orthogonal systems (Issue #710) * Fixed Error in calculation of average grid density (Issue #716) * Fixed indexing an AtomGroup using a list of bools now working (Issue #729) Testsuite * Added the cleanup plugin (--with-mda_cleanup) to delete offset files after tests have run (Issue 669) * Made memleak testing python 3 compliant (Issue 662). It may be a moot point since python 3.4 now cleverly deals with leaks. 01/16/16 tyler.je.reddy, kain88-de, richardjgowers, manuel.nuno.melo, orbeckst, Balasubra * 0.13.0 API Changes * ChainReader `delta` keyword deprecated in favor of `dt`. (Issue #522) * XYZWriter can now be used as a container format for different protein models as well as a normal trajectory. If `n_atoms` is None (default) MDAnalysis assumes that it is used as a container and won't give a warning if the number of atoms differs between frames. * GROWriter.fmt strings updated to use format style (Issue #494) * removed MDAnalysis.lib.parallel.distances; use the new backend="OpenMP" keyword for the functions in MDAnalysis.lib.distances (Issue #530) Enhancement * ChainReader now reports times properly summed over sub-readers (Issue #522) * GRO file reading approximately 50% faster for large files (Issue #212) * GRO file writing now will write velocities where possible (Issue #494) * Added bonded selection (Issue #362) * Spherical layer and spherical zone selections now much faster (Issue #362) * new keyword "backend" for accelerated functions in MDAnalysis.lib.distances to select "serial" or "OpenMP"-enabled versions of the code; the default is "serial" so old code will behave as before (see Issue #530) * Lammps data file parsing improved greatly. Should now support all files, and triclinic geometry. (Issue #139) * Added analysis.polymer, currently with PersistenceLength tool (Issue #460) * Added analysis.rdf, with InterRDF tool. (Issue #460) * Made Reader.check_slice_indices a public method (Issue #604) * analysis.helanal.helanal_main() now returns results as dict * Added keyword to update selection every frame in density calculation (Issue #584) * New keywords start, stop, step for density.density_from_Universe() to slice a trajectory. * MOL2Reader now reads molecule and substructure into ts.data * All subclasses of ProtoReader, Writer and TopologyReader are automatically added to the MDAnalysis directory of I/O (Issue #431) Changes * built html doc files are no longer version controlled (Issue #491) * The lib._distances and lib_distances_openmp libraries now have a OPENMP_ENABLED boolean flag which indicates if openmp was used in compilation. (Issue #530) * analysis.helanal.helanal_trajectory() and helanal_main() now use a logger at level INFO to output all their computed values instead of printing to stdout * default offset for ProgressMeter was changed from 0 to 1 (to match the change from 1- to 0-based ts.frame counting) * removed superfluous analysis.density.density_from_trajectory(); use density_from_Universe(TOPOL, TRAJ) instead. * MOL2Writer.write now only writes a single frame (Issue #521) Fixes * Fixed select_atoms requiring a trajectory be loaded (Issue #270) * AtomGroup timesteps no longer cached (Issue #606) * GROWriter now truncates atom numbers over 99999 (Issue #550) * AMBER netcdf writer now correctly uses float32 precision (Issue #518) * Fixed a numpy incompatibility in `analysis.leaflet.LeafletFinder`. (Issue #533) * Cleaned up `MDAnalysis.Writer` docs regarding `dt` usage. (Issue #522) * Fixed setup-time dependency on numpy that broke pip installs. (Issue #479) * Fixed unpickling errors due to lingering dead universes. (Issue #487) * Fixed analysis.density modules requiring the defunct `skip` attribute on trajectories. (Issue #489) * ten2eleven camelcase fixer now deals with centerOfMass (Issue #470) * ten2eleven will now convert numatoms to n_atoms argument for writer() functions (Issue #470) * Fixed non-compliant Amber NCDFWriter (Issue #488) * Fixed many Timestep methods failing when positions weren't present (Issue #512) * Fixed PointSelection using KDTree (Issue #362) * Fixed GROParser getting tripped up by some file (Issue #548) * Fixed writing dx files from analysis.density.density_from_Universe() (Issue #544 and #410) * Fixed base.Reader._check_slice_indices not liking numpy ints (Issue #604) * Fixed broken analysis.helanal.helanal_trajectory() and helanal_main() * Fixed lib.util.greedy_splitext() (now returns full path) * Fixed MOL2Reader not reading molecule and substructure on init (Issue #521) * Fixed MOL2Writer rereading frames when writing them (Issue #521) * Fixed PDBWriter not writing occupancies from atoms (Issue #620) Testsuite * removed ez_setup.py 10/08/15 * 0.12.1 kain88-de, orbeckst, richardjgowers API Changes Enhancements Changes Fixes * Fixed OpenMP detection on Linux/OSX #459 * Fixed reading of LAMMPS trajectory times: default unit ought to be fs and not ps * Fixed setting of dt for DCDReader (and LAMMPS DCDReader) with keyword argument Universe(..., dt=
) * Fixed a bug in topology.core.guess_atom_element where a single digit atom name would raise an IndexError (#476) * Fixed numpy -> np in LeafletFinder 10/04/15 kain88-de, richardjgowers, dotsdl, sseyler, orbeckst, jbarnoud * 0.12.0 API Changes * PrimitivePDBReader now imports occupancies into the `TimeStep` object. (Issue #396) * Atoms without a Universe now return NoDataError instead of AttributeError * AtomGroups of zero length or containing Atoms with no Universe raise a NoDataError when trying to access Universe * Atoms now keep a strong reference to Universe, meaning they do not become orphaned when the Universe goes out of scope (Issue #297) Enhancements * `Atom` and `AtomGroup` now expose occupancy value as `occupancy` and `occupancies` properties (Issue #396) * XYZReader now supports frame indexing (Issue #428) * Reader objects can now be sliced using lists and arrays of indices (Issue #437) * `PSAnalysis` now includes Hausdorff pairs analysis and associated nearest neighbor plotting method (Issue #438) * New class `PSAPair` added to MDAnalysis.analysis.psa for handling Hausdorff pairs analysis (Issue #438) * `PSAnalysis` can now generate annotated heat maps (Issue #438) * Added three new distance functions to MDAnalysis.analysis.psa (Issue #438) * Additional getters added to `Path` and `PSAnalysis` (Issue #438) * MSD matrix function now globally available in MDAnalysis.analysis.psa (Issue #438) * Function for obtaining coordinate axes from numpy trajectories now globally available in MDAnalysis.analysis.psa (Issue #438) * TPR parser updated for Gromacs 5.0.x and 5.1 (Issue #456) * Setup.py now looks for some configuration values in a config file. Each config option can also be changed via environment variables if they are prefixed with 'MDA_'. Current options are 'use_cython', 'ues_openmp', 'debug_cflags' Changes * An AtomGroup with 0 atoms now yields an `IndexError` on call to `AtomGroup.write` (Issue #434) * `PSA` changed to `PSAnalysis` to reduce namespace clutter (Issue #438) * To build with debug-symbols use 'MDA_DEBUG_CFLAGS' instead of 'MDA_DEBUG_CFLAGS' Fixes * Fixed minor issue in lib.mdamath.make_whole where if all bonds were correctly sized, it wouldn't notice that multiple fragments had been given. (Issue #445) * Fixed issue with PDB Topology parsing where if serials went over 100k, they wrapped to '***', breaking the parser (Issue #446) * Fixed AtomGroup.sequence() (Issue #451) * Fixed PrimitivePDBParser not detecting when resids had looped over 10,000. The original resid is stored as Atom.resnum (Issue #454) * Fixed TPR topology parser to treat all bonded interactions available in Gromacs 5.1 (Issue #222 and #352, pull request #463). 09/07/15 tyler.je.reddy, richardjgowers, alejob, orbeckst, dotsdl, manuel.nuno.melo, cyanezstange, khuston, ivirshup, kain88-de, gormanstock * 0.11.0 This release brings large changes to many parts of the API and might break many existing scripts. For a full guide on the API changes, please see: https://github.com/MDAnalysis/mdanalysis/wiki/MDAnalysis-0.11-unifying-release-user-guide Migrating old scripts has been made easier with the introduction of the ten2eleven tool which is part of the package. Details on how to use this are available at: https://github.com/MDAnalysis/mdanalysis/wiki/Migrating-MDAnalysis-code-with-ten2eleven.py API Changes * Changed AtomGroup counting methods to properties with different names: numberOfAtoms() to n_atoms, numberOfResidues() to n_residues, numberOfSegments() --> n_segments (Issue #376) * Changed trajectory reader numframes to n_frames (Issue #376) * Changed Timestep.numatoms to n_atoms (Issue #376) * Deprecated the use of the 'fullgroup' selection keyword (Issue #268) * Changed atom.number attribute to atom.index (Issue #372) * Changed many AtomGroup methods to properties. These are: indices, masses, charges, names, types, radii, resids, resnames, resnums, segids (Issue #372) * Timestep can now only init using an integer argument (which represents the number of atoms) (Issue #250) * Added from_timestep and from_coordinates construction methods to base.Timestep (Issue #250) * Removed KDTree and CoordinateNeighbor from MDAnalaysis. If you want to search in cartesian coordinates directly for nighboring points use the BioPython KDTree or scikit-learn Neighbors module. The AtomNeighborSearch class has been ported to use the BioPython KDTree and is now located in MDAnalaysis.lib.NeighborSearch. MDAnalaysis.KDTree still exists in this version so load the NeighborSearch module but is deprecated and will be removed in 1.0. (Issue #383) * Moved MDAnalysis.core.transformations to MDAnalysis.lib.transformations (Issue #287) * Moved MDAnalysis.core.util to MDAnalysis.lib.util (Issue #287) * Moved MDAnalysis.core.log to MDAnalysis.lib.log (Issue #287) * Moved MDAnalysis.core.units to MDAnalysis.units (Issue #287) * Moved MDAnalysis.core.distances to MDAnalysis.lib.distances (Issue #287) * Moved MDAnalysis.core.parallel to MDAnalysis.lib.parallel (Issue #287) * Moved norm, normal, angle, stp and dihedral from lib.util to lib.mdamath (Issue #287) * AtomGroup.bond .angle .dihedral and .improper now return the corresponding TopologyObject rather than performing the calculation (Issue #373) * All TopologyObjects now have a "value" method to evaluate them (Issue #373) * TopologyGroup now has a "values" methods to evaluate all contained bonds (Issue #373) * MDAnalysis.lib.distances.calc_torsions renamed to calc_dihedrals (Issue #373) * TopologyGroup.selectBonds renamed to select_bonds (Issue #389) * deprecated camelCase AtomGroup methods in favour of underscore_style (Issue #389) * deprecate lib.distances.applyPBC in favour of apply_PBC (Issue #389) * AtomGroup.res[names,ids,nums] and AtomGroup.segids now give arrays of equal size to AtomGroup (Issue #385) * ResidueGroup.segids now gives arrays of equal size to ResidueGroup (Issue #385) * AtomGroup setters `set_` now plural for consistency with property names (Issue #385) * DCDReader no longer supports the "skip" keyword. Use slicing on reader iteration to achieve same affect. (Issue #350) * All Readers have a default "dt" of 1.0 ps. This applies also to single frame readers, these would previously raise an error on accessing dt. (Issue #350) * NCDF Reader no longer has a default skip_timestep of 1 (Issue #350) Enhancements * Added the 'global' selection keyword (Issue #268) * Added Jmol selection writer (Issue #356) * Added reading of Hoomd XML files (Issue #333) These can only act as topology information for now * Tests can now detect memleaks on a per-test basis (Issue #323) * AtomGroups can now be pickled/unpickled (Issue #293) * Universes can have a __del__ method (not actually added) without leaking (Issue #297) * Added reading of DL_Poly format CONFIG and HISTORY files, these can both act as both Topology and Coordinate information (Issue #298) * Timestep objects now have __eq__ method (Issue #294) * coordinates.base.Timestep now can handle velocities and forces (Issue #294) * Waterdynamics analysis module added, including five analysis classes: Hydrogen Bond Lifetimes, Water Orientational Relaxation, Angular Distribution, Mean Square Displacement and Survival Probability. Documentation and test are included. (Issue #300) * RMSF class added to rms analysis module * ProgressMeter now outputs every *interval* number of ``update`` calls (Issue #313) * Created lib.mdamath for common mathematical functions. (Issue #287) * All Timesteps have the has_positions has_velocities and has_forces boolean flags (Issue #213) * Timesteps can now allocate velocities and forces if they weren't originally created with these through the use of the has_ flags. (Issue #213) * Timesteps now store 'dt' and 'time_offset' if passed to them by Reader to calculate time attribute (Issues #306 and #307) * MDAnalysis.selection: can also be written to a NamedStream * Added function lib.mdamath.make_whole to "unbreak" molecules over periodic boundaries. (Issue #355) * Added triclinic_dimensions to Timestep, returns representation of unit cell as triclinic vectors (Issue #276) * Added setter to bfactors property (Issue #372) * Added AtomGroup altLocs and serials properties with setters. (Issue #372) * MDAnalysis.core.AtomGroup.Merge now copies across bonding information (Issue #249) Changes * numpy >= 1.5 required * A ProtoReader class intermediate between IObase and Reader was added so specific Readers can be subclassed without __del__ (the ChainReader and SingleFrameReader), thus preventing memleaks (Issue #312). * Atoms (and all container classes thereof) are now bound to Universes only via weakrefs. If Universes are not explicitly kept in scope Atoms will become orphaned. (Issue #297) * Removed FormatError, now replaced by ValueError (Issue #294) * base.Reader now defines __iter__ and __iter__ removed from many Readers (now use base.Reader implementation) (Issue #350) * Timestep._x _y and _z are now read only (Issue #213) * moved MDAnalysis.selections.base.get_writer() to MDAnalysis.selections.get_writer() to break a circular import. This should not affect any code because MDAnalysis.selections.get_writer() already existed. * distances.contact_matrix now treats the particle distance with itself as a contact for sparse matrices and numpy arrays. The progress reporting for sparse calculations has been removed. (Issue #375) * TopologyObjects and TopologyGroup moved to core.topologyobjects module (Issue #373) * Consolidated coordinates.guess_format and topology.guess_format to lib.util.guess_format (Issue #336) Fixes * All Writers now refer to time between written Timesteps as "dt", was previously "delta" in some Writers. (Issue #206) * Topology files can now be compressed (Issue #336) * Fixed PDB Parser and Reader requiring occupancy field (Issue #396) * Amber TRJ and NCDF Reader & Writers now use 'dt' instead of 'delta' to refer to time elapsed between timesteps. (Issue #350 and #206) * Fixed TPRParser considering LJ 1..4 exclusions as bonds (Issue #351) * ChainReaders no longer cause memory leak (Issue #312) * analysis.hbonds.HydrogenBondAnalysis performs a sanity check for static selections (Issue #296) * Fixed TRZWriter failing when passed a non TRZTimestep (Issue #302) * relative imports are now banned in unit testing modules (Issue #189) * Fixed bug and added DivisionByZero exception in analysis/waterdynamics.py in SurvivalProbability. (Issue #327) * Fixed parsing of PDB header data for PrimitivePDBReader (Issue #332) * Fixed contact_matrix handles periodic boundary conditions correctly for sparse matrices. (Issue #375) * Fixed analysis.hole not using CPOINT (Issue #384) * Fixed XTC/TRR .dt rewinding the trajectory (Issue #407) * Fixed TopologyGroup.from_indices not guessing topology object class (Issue #409) * Fixed TopologyGroup.__contains__ failing if different instance of same bond was queried. (Issue #409) Testsuite * Overhaul of the test subsystem. * Tests now implement nose plugins, as a submodule. (Issue 331) Available plugins are: memleak testing, stderr capturing (for quieter test runs), and proper knownfailure implementation (Issue 338). 06/01/15 richardjgowers, caio s. souza, manuel.nuno.melo, orbeckst, sseyler * 0.10.0 Enhancements * Improved performance of PDB Reading. Up to 3x faster. (Issue #212) * Added the 'same ... as' selection keyword (Issue #217) * Added guess_bonds keyword argument to Universe creation. This will attempt to guess all topology information on Universe creation. (Issue #245) * Added guess_bonds method to AtomGroup. (Issue #245) * All TopologyObjects (Bond, Angle etc) now have is_guessed attribute * TopologyGroup now has alternate constructor method, .from_indices() * Added TopologyObject.indices property * Amber netCDF4 Reader will now read Forces (Issue #257) * Amber netCDF4 Writer will now write Velocities and Forces * Added Amber coordinate/restart file reader (Issue #262) * Structural superpositions (MDAnalysis.analysis.align) can work with partial matches of atoms. * new path similarity analysis module MDAnalysis.analysis.psa * AtomGroup and TopologyGroup can now be indexed by numpy boolean arrays works identically to numpy masks. (Issue #282) Changes * TopologyGroup can now have zero length, and will evaluate to False when empty. * Renamed TopologyGroup.dump_contents to "to_indices" * Deprecated 'bonds' keyword from Universe and replaced with 'guess_bonds' * PrimitivePDBReader now requires the numatoms keyword * Structural superpositions (MDAnalysis.analysis.align) use partial matches of atoms by default (use strict=True for old behavior) * Function rmsd() was removed from MDAnalysis.analysis.align name space and should be accessed as MDAnalysis.analysis.rms.rmsd() Fixes * bynum selections now work from AtomGroup instances (Issue #275) * Cylinder selections now work from AtomGroup instances and honor PBC (Issue #274) * NetCDFWriter previously always wrote velocities/forces if found in timestep, rather than following how the Writer was created. 04/20/15 tyler.je.reddy, richardjgowers, orbeckst * 0.9.2 Enhancements * Can now set velocity from Atom object. (Issue 221) * Atom object now has force attribute for getting/setting forces (requires a trajectory with forces) (Issue 221) * Added wrap method. Wrap allows the centers of groups of atoms to be moved within the primary unit cell without breaking up the group. (Issue 190) Changes * The MDAnalysis project moved from Google Code to GitHub: the new website is http://www.mdanalysis.org and the new source code repository is at https://github.com/MDAnalysis/mdanalysis * "applications" were removed from the mdanalysis source code repository and now exist as independent repositories under https://github.com/MDAnalysis/ * Using a non-existent atom name as an instant selector now raises AttributeError instead of SelectionError (Issue 220) Fixes * trajectory objects are now properly closed in unit tests (Issue 256) 03/27/15 manuel.nuno.melo, richardjgowers, comconadin * 0.9.1 Enhancements * XYZ file format can be used without an associated topology file. * GAMESS output files can be read as trajectories for calculations of type ``SURFACE'' and ``OPTIMIZE'' (work wit both GAMESS-US and Firefly) Changes * removed undocumented MDAnalysis.builder module Fixes * TRR coordinate access via _y and _z now works properly (Issue 224) 03/15/15 richardjgowers, tyler.je.reddy, orbeckst, e.jjordan12, zhuyi.xue, bala.biophysics, dotsdl, sebastien.buchoux * 0.9.0 Enhancements * offsets for XTC and TRR trajectories now stored and retrieved automatically; improves init times for large trajectories (Issue 208) * docs now use secure mathjax CDN (Issue 182) * minor improvements to helanal docstring * Support for reading altloc records in PDB files * Cap proteins with ACE and NMA terminal caps * MOL2 read and write support * 2D streamplot code no longer uses deprecated matplotlib.nxutils module * core.distances.calc_angles and calc_torsions now accept an optional box argument to consider periodic boundary conditions in their calculation (Issue 172) * TopologyGroup angles and torsions methods both have a pbc flag, (default False) to toggle consideration of periodic boundaries * XYZWriter (write simple XYZ trajectories) * TRZReader upgrades, seeking and numframes faster * PQRWriter (write PQR files) * HydrogenBond analysis: new keyword distance_type to alternatively look at the distance between heavy atoms (Issue 185) * TopologyGroup/TopologyDict system overhauled. (Issue 194) * TopologyObject class created, Bonds/Angles/etc nicer to work with. * Topology information is now loaded lazily into Universe, can be forced to load all with u.load_topology(). All topology information is now stored in .bonds .angles .torsions and .impropers attributes. * Added support for improper torsions. * AtomGroup now has .bonds .angles .torsions and .impropers attributes which retrieve relevant TopologyGroups * Increased performance of topology.core.guess_bonds greatly * Added topology.core.guess_angles guess_torsions and guess_improper_torsions which given accurate bond information can calculate the rest of the topology info. * Universe topology information is now settable after initialisation using lists of indices such as those provided by the guess_* functions. * Added LAMMPS data parser for topology files with the .data suffix. Can also read single frame coordinate & velocity information from these files. (Issue 139) * Added Fragments. Fragments are continuously bonded groups of atoms. These are lazily built, and accessible via the Atom.fragment and AtomGroup.fragments attributes. (Issue 190) * Added ability to remove items from Universe cache with _clear_caches. * Added ability to define dimensions from AtomGroup, Universe and Timestep for most formats. (Issue 203) * streamIO: many readers can directly use gzip- or bzip2 compressed files or a stream (such as cStringIO.StringIO) wrapped in util.NamedStream; currently supported: PDB, PSF, CRD, PQR, PDBQT, GRO, MOL2, XYZ * Added hydrogen bonding time autocorrelation analysis module (analysis.hbonds.HydrogenBondAutoCorrel) * Added energy units to core.units (Issue 214) * New AtomGroup.split() method to produce a list of AtomGroups for each atom, residue, or segment * New AtomGroup.sequence() method to extract a protein sequence. * Can pass subclasses of Reader and Topology reader to Universe init to allow custom readers to be defined. (Issue 198) * Added Atom.bonded_atoms property. This returns an AtomGroup of the Atoms that are bonded to a given Atom. (Issue 219) * Added atom selections to ContactAnalysis (Issue 169) Changes * DCD unitcell format changed: MDAnalysis will now read it as [A, gamma, B, beta, alpha, C] instead of [A, alpha, B, beta, gamma, C]. The new CHARMM box vector unitcell format is heuristically guessed. (see Issue 187 for a full discussion and implications). * __getstate__() and __setstate__() raise an NotImplementedError for Universe and AtomGroup; before they were silently accepted on pickling and a cryptic "TypeError: AtomGroup is not callable" was raised (see also Issue 173 for detailed explanation) * XTC/TRR reader raise IOError with errorcode EIO (instead of ENODATA) when the last frame is reached and EBADF (instead of EFAULT) for any other issues (partially addresses Issue 150, Windows compatibility) * Universe.bonds now returns a TopologyGroup not a list. TopologyGroup can be iterated over; list(universe.bonds) should provide a fix to legacy code. * PQR reader will now set segid to a chainID if found in the PQR file (previously, the segid would always be set to 'SYSTEM'). * util.anyopen() only returns the stream and not the tuple (stream, filename) anymore; it tries to set stream.name instead * topology reading now done via classes (similar to trajectory reading) rather than functions. (Issue 210) Fixes * fixed DCD triclinic unit cell reading and writing (although the new CHARMM format with the box matrix is not supported for writing) (Issue 187) ATTENTION: Support for triclinic boxes from DCDs was BROKEN prior to this fix! * fixed creation of residues and segments in Merge() * resolves Issue 188 regarding Helanal Finish Argument * fixed Issue 184 (TPR files with double precision) * fixed Issue 199 (FutureWarning in pyqcprot) 04/01/14 orbeckst, jandom, zhuyi.xue, xdeupi, tyler.je.reddy, manuel.nuno.melo, danny.parton, sebastien.buchoux, denniej0, rmcgibbo, richardjgowers, lennardvanderfeltz, bernardin.alejandro matthieu.chavent * 0.8.1 (Note: 0.8.0 contains a subset of these changes; 0.8.0 is deprecated) Enhancements * Named selections can now be passed to selectAtoms (Issue 174) * (experimental) MDAnalysis.visualization namespace added along with 2D/3D streamplot modules & documentation for them * TRR file handling is now fully aware of missing coordinate/velocity/force information when reading and writing frames. * MDAnalysis.analysis.contacts.ContactAnalysis1 run() method now allows trajectory slicing (Issue 161) * Merge AtomGroups into a new Universe (Issue 157) * TPR parser (currently limited to versions 58, 73 and 83 of the Gromacs TPR format (Gromacs 4.0 to 4.6.1), see Issue 2) * fast XTC seeking (Issue 127) * changing resid (set_resid()) or segid (set_segid()) changes the topology and lists of resids/segids can be assigned to groups of objects (AtomGroup, ResidueGroup) * helanal: additional output of local bend and unit twist angles (Issue 133) * added support for reading DMS files (DESRES molecular structure) * bond connectivity information can be guessed from a PDB file if the bond=True keyword is set in Universe (Issue 23) * MDAnalysis.analysis.rms.RMSD: calculation of additional RMSDs * Plugin to generate nucleic acid helicoidal parameters using X3DNA; (must install working version 2.1 of X3DNA independently) * can use advanced slicing (with arbitrary lists or arrays) at all levels of the hierarchy (Issue 148) * coordinate readers and writers can be used as context managers with the 'with' statement * Can load multiple trajectories as Universe(topology, traj2, traj2, ...) in addition to providing all trajectories as a list, i.e. Universe(topology, [traj1, traj2, ...]) * added support for YASP and IBIsCO formats (.trz) (Issue 152) * new methods for AtomGroup: packIntoBox([inplace=True]) * added non-standard "extended" PDB format (XPDB) that reads five-digit residue numbers * util.convert_aa_code() recognizes non-standard residue names such as HSE, GLUH, GLH, ... * added new geometrics selections: sphlayer, sphzone, cylayer, cyzone * added TopologyDict and TopologyGroup classes for bond analysis * added calc_bonds, calc_angles and calc_torsions cython functions to core.distances for quickly calculating bond information * added applyPBC(coords, box) function to core.distances to move coordinates to within the primary unit cell * many AtomGroup methods now support 'pbc' flag to move atoms to within primary unitcell before calculation. This behaviour can also be toggled using the core.flags['use_pbc'] flag (Issue 156) * MDAnalysis.analysis.rms.rmsd(): new center keyword so that one can immediately calculate the minimum rmsd of two rigid-body superimposed structures Changes * libxdrfile2 is now used instead of libxdrfile. libxdrfile2 is distributed under GPLv2 * dropped support for Python 2.5; minimum requirement is Python 2.6 (Issue 130) * almost all methods of AtomGroup return NumPy arrays * slicing and indexing of AtomGroup, Residue, ResidueGroup, Segment, SegmentGroup will now always return an appropriate object and never a simple list * removed Timeseries.principleAxis (probably was never working) * dependent on Biopython >= 1.59 (Issue 147) * Hydrogen bond analysis defaults to updating selection 1 and 2 for every timestep in order to avoid unexpected behavior (Issue 138) * AtomGroup.velocities is now a (managed) attribute and not a method anymore: replace 'ag.velocities()' with 'ag.velocities' * changed the name of the flag 'convert_gromacs_lengths' to 'convert_lengths' Fixes * asUniverse now also accepts any instance that inherits from MDAnalysis.Universe (Issue 176) * fixed XDR writer incorrect use of delta parameter (Issue 154) * fixed incorrect computation of distances in serial and parallel distance_array() with PBC (Issue 151) * fixed Issue 129 (hole.py module pipe/file closure) * fixed array comparison bug in MDAnalysis.analysis.helanal and various enhancements to the helanal module * fixed MDAnalysis.analysis.rms.RMSD.run(): gave incorrect results if ref_frame != 0 * alignto() now checks that the two selections describe the same atoms (fixes Issue 143) * slicing of ResidueGroup will now produce a ResidueGroup, and slicing of a SegmentGroup will produce a SegmentGroup, not a list as before (fixes Issue 135) * detect OpenMP-capable compiler during setup (Issue 145), which should allow users of Mac OS X 10.7 and 10.8 to build MDAnalysis using Apple's C-compiler (clang) (Issue 142) although they will not get a parallel version of distance_array. * PDB with blank lines gave IndexError (Issue 158) * fixed AtomGroup.ts Timestep instance not containing all available information (Issue 163) * fixed Timestep copy method returning a base Timestep rather than appropriate format (Issue 164) 12/24/12 danny.parton, jandom, orbeckst, jjlights03, jphillips, naveen.michaudagrawal, andy.somogyi, sebastien.buchoux * 0.7.7 Enhancements * multithreaded distance_array() (Issue 80, experimental); see the new core.parallel.distance module * MDAnalysis.analysis.rms for simple RMSD analysis * format of input coordinates can be set as (filename, format) tuples (Issue 76) * new AtomGroup.asphericity() and AtomGroup.shapeParameter() methods to compute shape descriptors. * access to forces (AtomGroup.forces with get_forces() and set_forces(); the default unit for force is kJ/(mol*A) and it is automatically converted from/to native). Currently, only the TRR Reader/Writer support forces. * all element masses * logger reports current version when starting Fixes * fixed Issue 115 (GROReader now uses fixed-column width format to read GRO files) * fixed Issue 116 (Failed to write AMBER netcdf trajectory from AtomGroup) * fixed Issue 117 (could not write Gromacs XTC/TRR from AMBER netcdf) * fixed Issue 120 (DCDWriter: wrote wrong unitcell information) * fixed Issue 121 (PSFParser would fail with IndexError for files without SEGID) * Issue 122 (made installation of netCDF4 library optional, which means that users of the AMBER netcdf Reader/Writer will have to manually install the library and its dependencies netcdf and HDF5, see https://code.google.com/p/mdanalysis/wiki/netcdf) 06/30/12 orbeckst, joshua.adelman, andy.somogyi, tyler.je.reddy, lukas.grossar, denniej0, danny.parton * 0.7.6 Enhancements * GRO file velocities may be accessed as AtomGroup.velocities() or Atom.velocity (Issue 102) * PrimitivePDBReader can be sliced * AMBER NetCDF (binary trajectory) reader and writer, supporting coordinates and velocities; requires netcdf4-python (Issue 109) * additional attributes and methods for AtomGroup to consolidate the interface to the Timestep: attribute 'positions' and 'get_positions()' can be used instead of the 'coordinates()' method. get/set methods for both positions and velocities. * almost all Readers now support some form of slicing; unsupported slicing operations will raise a TypeError * additional analysis for Nucleic Acid order parameters (MDAnalysis.analysis.nuclinfo) * AMBER TOPParser now able to do both amber10 and amber12 formats (Issue 100) Changes * selectAtoms: updated *nucleic* and *nucleicxstal* selection definition *nucleic* includes the two-letter NA code that follows gromacs topolgy format and *nucleicxstal* allows for the one-letter NA code that follows the PDB Database code. * HydrogenBondAnalysis: multiple enhancements and changes (Issue 103) - many new analysis functions (see docs) - run() does not return the results anymore; results are simply stored as attribute timeseries (similar to other analysis tools) - only write per-frame debugging messages to the logfile when the new verbose keyword is set to True - more reliable detection of hydrogens bonded to heavy atoms - remove duplicate hydrogen bonds from the output * removed CHO and EAM (formyl and ethanol termini of gA in CHARMM) from the set of residues recognized as protein (collision with commonly used CHO for cholesterol) * PrimitivePDBWriter: special segid SYSTEM is translated to empty chainID * In order to write multi frame PDB files, the multiframe=True keyword must be supplied or use the MultiPDBWriter * empty AtomGroup can be constructed or can result from a selection without matches; it does *not* raise NoDataError anymore (Issue 12) * all single frame readers denote the first (and only) frame as frame number 1 (i.e. ts.frame == 1); it used to be 0 but 1 is consistent with the way this is is handled with real trajectories * requires Biopython >= 1.51 (fixes for Issue 112 and Issue 113) * Atom.type is always stored as a string. Fixes * HydrogenBondAnalysis: NH1 and NH2 were not recognized * GROWriter: enforce maximum resname and atomname length of 5 chars * Universe.load_new() raised a NameError (thanks to JiyongPark.77) * fixed Issue 105 (trajectory snapshots could not be written to PDB) * fixed Issue 107 (NAMD/VMD space delimited PSF files can be autodetected and read); important when using CGENFF atom types (thanks to JiyongPark.77 for initial patch) * fixed Issue 101 (could not write single frame to trr file) * fixed: permissive=True flag was ignored in Universe and hence the PrimitivePDBReader was always selected even if the Biopython one was desired * fixed Issue 112 (used removed Biopython constructs in MDAnalysis.analysis.align.fasta2select; thanks to francesco.oteri for a test case and fix) * fixed failing 'type' selection for topology formats that read an atom type as an integer (such as the AMBER parser) * fixed Issue 111 (NAN in pycpqrot and RMSD calculation) * fixed Issue 113 (replaced outdated Biopython to call ClustalW) 02/16/12 sebastien.buchoux, orbeckst * 0.7.5.1 Fixes * added: missing files (Issue 95) * removed: unused delaunay-related files Testsuite * test package is now called 'MDAnalysisTests' * tests AND data are now bundled together in MDAnalysisTests * MDAnalysis and MDAnalysisTests packages MUST have the same release number (they need to stay in sync); MDAnalysisTests will NOT run if a release mismatch is detected * see Issue #87 and https://github.com/MDAnalysis/mdanalysis/wiki/UnitTests 02/11/12 orbeckst, sebastien.buchoux, jandom, hallben, lukasgrossar * 0.7.5 MDAnalysis can now be found on PyPI, allowing simple installation from the internet. Metadata was added to setup to facilitate PyPI upload and pages on the wiki describe how to do this. In addition, Debian/Ubuntu packages are also available. Note that in order to run UnitTests one needs the separate package MDAnalysisTests (also release 0.7.5). Enhancements * new method OtherWriter() for trajectory readers to generate a writer for any format that has been initialised for the common basic values * new simple Residue.chi1_selection() selection * new distances.between() function (EXPERIMENTAL) * support LAMMPS non-standard DCD files (Issue 84; EXPERIMENTAL) * read and write multi-frame PDB files (Issue 77; EXPERIMENTAL) * extend the PDB parsing, support CONECT and REMARK entries * new GNM-based trajectory analysis module (Issue 90) * Read/Write velocities with TRR, new attribute Atom.velocity and AtomGroup.velocities() (Issue 91) * hydrogen bond analysis detects a range of GLYCAM atom types and utils.convert_aa_code will also accept GLYCAM-style residue names (Issue 92) * XYZ reader: can set timestep (Issue 92) Changes * The UnitTests are now integrated with the separate test data in a separate Python package named MDAnalysisTests; to run the tests for 0.7.5 one will need MDAnalysisTests-0.7.5 (Issue 87). * install a range of analysis dependencies right away: networkx, biopython, GridDataFormats (usually all painless); leave scipy and matplotlib to the user and the local package manager * When writing a trajectory and converting units, effectively a copy of the timestep is made and the in-memory timestep is not altered. In this way, analysis after writing a frame will still see the coordinates in MDAnalysis units and not converted units. Fixes * analysis.align.rms_fit_traj(): can output fitted trajectory to any supported format not just the input format * fixed ProgressMeter: default format string was broken * fixed: ResidueGroup and SegmentGroup indexing (did not work with numpy.int64 etc) and now raise TypeError if it does not fit * fixed HydrogenBondingAnalysis backbone donor list: had C but should have been O (this was supposed to be fixed with r849 in 0.7.4 but a typo crept in). NOTE: analysis might have produced partially wrong results. * fixed: dihedral() and other methods using core.util.angle() sometimes returned nan instead of +pi or -pi * fixed: writing a trajectory from chained CRD files gave garbage coordinates (Issue 81) * fixed: support files for docs are now in included in the source distribution (thanks to Sebastien Buchoux; Issue 82) * fixed: core.util.iterable() would wrongly detect unicode strings as "iterable"; this lead the Reader autodections and then the ChainReader fail with "Runtime Error: Maximum recursion depth exceeded" for single filenames provided as a unicode string. * fixed: HBond analysis pickling of tables (Issue 92) 07/09/11 orbeckst, dcaplan, jandom * 0.7.4 Enhancements * Universe() got new keywords topology_format and format to allow the user to specify the file formats instead of deriving it from the extensions (does not work with "chained" files at the moment); thanks to Michael Lerner for the suggestion * Chain trajectory reader allows frame indexing. * Issue 75: additional donors and acceptors keywords for H-bond analysis * structural alignment functions alignto() and rms_fit_traj() can also take a list of selection strings in order to define atom groups with fixed atom order and alignto() preserves the order of supplied AtomGroups for the special select values "all" and None. * new set_* methods for AtomGroup allows changing of Atom attributes for all members of the group (such as the segid) (EXPERIMENTAL) * new Atom and Residue attribute resnum that can be used to store the canonical PDB residue number (EXPERIMENTAL) Fixes * fixed Issue 74 (bug in AMBER topology parser which would show up for certain numbers of input lines; thanks to htaoyu1) * fix for Issue 48 (sparse contact_matrix in distances.py was slow when written in pure python; optimized in c code using scipy.weave) * HydrogenBondingAnalysis: donor atom name CO --> O (proper backbone oxygen); without the fix one misses most of the backbone H-bonds * alignto() and rms_fit_trj(): order of mobile and reference selection was reversed when supplied as a tuple (sel1, sel2) Changes * replaced analysis.util.progress_meter() with class core.log.ProgressMeter * Issue 28: split off test data trajectories and structures from MDAnalaysis/tests/data into separate package MDAnalysisTestData, which is required to run the UnitTests from release 0.7.4 onwards. Numbering matches the earliest MDAnalysis release for which the data is needed. Any later releases of MDAnalysis will also use these test data unless a MDAnalysisTestData package with a higher release number is available. Testsuite * Split off test data trajectories and structures from MDAnalaysis/tests/data into separate package. (Issue 28) * Numbering matches the earliest MDAnalysis release for which the data is needed. Any later releases of MDAnalysis will also use these test data unless a MDAnalysisTestData package with a higher release number is available. 05/22/11 orbeckst, jandom, Benjamin Hall, Paul Rigor, dcaplan, Christian Beckstein (logo), denniej0 * 0.7.3 Removals * completely removed the old core.rms_fitting module (and thus we also do not depend on the LAPACK library anymore, which should simplify installation); use the functions accessible through MDAnalysis.analysis.align (which are faster and use QCPROT) Enhancements * PDBQT (autodock) format added (reading and writing of single frames) * new attributes universe.trajectory.frame and universe.trajectory.frame: report the current frame number and time (e.g. in ps) of the current frame of the trajectory * new attribute Timestep.volume (unit cell volume) * new special methods of AtomGroup: bond(), angle(), improper() in addition to the calculation of dihedral() * HELANAL helix analysis in MDAnalysis.analysis.helanal; Python implementation of helanal.f from http://www.ccrnp.ncifcrf.gov/users/kumarsan/HELANAL/helanal.html (Benjamin Hall, used under GPL v2+) * hydrogen bonds analysis in MDAnalysis.analysis.hbonds * MDAnalysis.analysis.distances.dist() for calculating distances between matching atoms in two groups * MDAnalysis logo by Christian Beckstein (and a reformatting of the online docs to match the logo theme) Change of behaviour * alignto() and rms_fit_trj(): changed keyword 'select' default from 'backbone' to 'all' Fixes * fixed alignto() (raised KeyError) * fixed Issue 57 (check for illegal coordinates when writing PDB and GRO) * use spaces everywhere and no TABs and tell emacs and vim to keep it that way (Issue 69) * fixed Issue 70 (problems with instant atom selections) 03/31/11 orbeckst, dcaplan, naveen.michaudagrawal * 0.7.2 * NOTE: minimum Python version required is 2.5 (since 0.6.3) Enhancements * loading from a PDB sets segid to the chain id if it exists * PrimitivePDBWriter uses first letter of segid as PDB chain id * aliased segment.name to segment.id * new method AtomGroup.bbox() that returns the orthorhombic bounding box * enhancements of the analysis.density module (build density from B-factors) * PQR radius is now an attribute of Atom; AtomGroup.radii() returns the radii as a NumPy array; internally B-factor has also become an attribute of each Atom. * recognise many more OPLS/AA and Amber residue names as "protein" * recognise more atom masses (taken from CHARMM27 and Gromacs) and atom types (from CHARMM, Amber, OPLS, GROMOS) and moved masses and types into new module topology.tables; the type recognition is still incomplete but can be easily enhanced in tables * analysis.align: convenience functions rotation_matrix() and alignto() * TrajectoryReader gained Writer() method which returns an appropriate TrajectoryWriter instance that can be used for processing this trajectory (enhancement of the Trajectory API); if no Writer is known then a NotImplementedError is raised * doc improvements Fixes * installation: removed dependency on Cython; developer should use setup_developer.py instead of setup.py (Issue 66) * Fixed a problem with the strict PDBReader: raised exception when the pdb did not contain a segid * Support for PDBs with 4 character resnames and segID output when writing (Issue 63) --- makes the (default) PrimitivePDBReader/Writer more suitable for NAMD/CHARMM but breaks strict PDB standard. If you need full PDB reading capabilities, use the strict PDB reader [i.e. use Universe(..., permissive=False)] * fixed bug in (experimental) phi and psi selections * fixed bugs in reading of unit cells (Issue 60, Issue 61, Issue 34) * universe.trajectory.delta returns the full precision dt value instead of a value rounded to 4 decimals (Issue 64) * fixed bug in DCDWriter (XTC->DCD was broken, Issue 59) 02/08/11 orbeckst, denniej0, jandom, tyler.je.reddy, Joshua Adelman * 0.7.1 release * online documentation * AMBER topology and trj capabilities (netcdf not yet available) * PQR file reading support * new analysis.contacts.ContactAnalysis1 class that supports a native contact analysis between arbitrary groups * new examples (e.g. peptide helix clustering in a membrane) * fixed Issue 58 (align.rms_fit_trj; fix reported by Joshua Adelman) * new analysis module 'density': creation and analysis of volume data * fast RMSD aligner based on Douglas Theobald's QCP method for calculating the minimum RMSD between two structures and determining the optimal least-squares rotation matrix; replaces the slower previous code (implemented by Joshua Adelman from his pyqcprot package https://github.com/synapticarbors/pyqcprot); deprecated core.rms_fitting.rms_rotation_matrix() and scheduled for removal in 0.8 * uses cython instead of pyrex 11/05/10 orbeckst, denniej0, tyler.je.reddy, danny.parton, joseph.goose * major release 0.7.0 (includes changes that can BREAK BACKWARDS COMPATIBILITY) * Removed ALL DEPRECATED code: - AtomGroup.principleAxes (Issue 33) - DCD.DCDReader.dcd_header() and DCD.DCDWriter.dcd_header() (use _dcd_header()) - Universe.dcd (and Universe.xtc, Universe.trr...) --- from now on only Universe.trajectory is supported. WILL BREAK LEGACY CODE! - removed the following packages from top-level MDAnalysis name space: - AtomGroup, Selection: import them from MDAnalysis.core if really needed (e.g. 'import MDAnalysis.core.AtomGroup') - distances, rms_fitting: 'import MDAnalysis.analysis.distances' or 'import MDAnalysis.analysis.align.rms_fitting' (the actual modules still live in MDAnalysis.core but they might get moved in the future and bundled with transformations) - 'from MDAnalysis import *' will only get ['Timeseries', 'Universe', 'asUniverse', 'Writer', 'collection'] - removed copy flag from distance_array and self_distance_array: setting it to False would always give wrong results so there was no good reason keeping it around * whitespace is no longer required around parentheses for selectAtoms strings but the old syntax with white space still works (Issue 43) * improved trajectory writing - MDAnalysis.Writer() factory function that provides an appropriate writer for the desired file format - Writer.write() accepts a Timestep, a Universe, or a arbitrary AtomGroup (e.g. from a selection); this is much more flexible than Writer.write_next_timestep() * New attributes for trajectory readers: dt (time between frames) and totaltime (length of the trajectory) * Changes to AtomGroup - Indexing is made consistent with the way lists behave: 1. indexing with integers returns a single Atom 2. slicing always returns a new AtomGroup 3. advanced slicing with a list or array returns a new AtomGroup (NEW, fixes Issue 36) - AtomGroup coordinates can be manipulated (translate(), rotate() and rotateby() methods; when appropriate, these methods can take AtomGroups or arrays to determine coordinates) - new attributes 'residues' and 'segments' for AtomGroup to give access to the list of residue/segment objects of the group - new exception 'NoDataError'; raised when creation of an empty AtomGroup is attempted (see also Issue 12) - consistent representation of the Segment > Residue > Atom hierarchy: all classes related to AtomGroup have the attributes 'atoms', 'residues', 'segments' which provide access to groups of the corresponding objects * improvements to Residue, ResidueGroup and Segment classes - documented accessing residues from Segment as Segment.r; resid is 1-based -- BREAKS OLD CODE that relied on this being 0-based - added SegmentGroup class - can write from Residue, ResidueGroup and Segment (Issue 46) - residue name attribute of a Segment now consistently returns a ResidueGroup (Issue 47) -- MIGHT BREAK OLD CODE - added documentation and examples in the doc strings - new special dihedral angle selections defined for Residue class to simplify analysis of backbone torsions (experimental) * new contact_matrix method for calculating contacts (Issue 30); for large (N > ~10000) coordinate arrays automatically switches to a method using a sparse matrix (slower) * more example scripts (e.g. for membrane analysis, trajectory writing, coordinate transformations) * CRDReader added (fixes Issue 40 ) ... it will work for both standard and extended formats: NO special flags needed. * CRDWriter will now write extended crd files: NO special flags needed. * By default, PDB files are read with the PrimitivePDBReader and not the Bio.PDB reader anymore because the latter can drop atoms when they have the same name in a residue (which happens for systems generated from MD simulations) The PrimitivePDBReader copes just fine with those cases (but does not handle esoteric PDB features such as alternative atoms and insertion codes that are not needed for handling MD simulation data). - The default behaviour of MDAnalysis can be set through the flag MDAnalysis.core.flag['permissive_pdb_reader']. The default is True. - One can always manually select the PDB reader by providing the permissive keyword to Universe; e.g. Universe(...,permissive=False) will read the input file with the Bio.PDB reader. This might be useful when processing true Protein Databank PDB files. * fixed Issue 51 (distance_array() did not properly check its input and wrong results could be returned if the input was a float64 and a float32 array) 09/19/10 orbeckst * quick-fix release 0.6.4.1 * fixed import issue with python 2.5 (Issue 41) 09/16/10 orbeckst, danny.parton * release 0.6.4 * GRO writer added * fixed XTC writer (Issue 38) * convert box representations (Issue 37) * primitive PDB parser added (slightly faster and ignores correctness of resids, atomnames etc but reads CRYST1 into unitcell) * Universe gained the 'permissive' flag to switch on the primitive PDB parser/reader * Simple 'chained reader' which enables a Universe to transparently read a list of trajectory files (Issue 39). * Additional methods for AtomGroup: numberOfResidues(), resids(), resnames() * new bilayer analysis script for membrane composition on a per-leaflet basis (examples/membrane-composition.py); also renamed examples/leaflet.py to membrane-leaflets.py 07/08/10 orbeckst, denniej0, danny.parton, philipwfowler * 0.6.3 release * minimum requirement is python 2.4 (using with_statement in the analysis module and we have not tested on 2.3 in a while) * analysis modules (MDAnalysis.analysis): - lipid bilayer leaflet detection - native contact analysis ("q1-q2") - rms-fitting based on sequence alignment * write selections for other codes from AtomGroups (VMD, pymol, CHARMM, Gromacs ndx) * gro reader (Issue 31) * better API for loading a topology and a coordinate file in Universe() * trajectory reader: DCDReader can reverse trajectory with negative step increment; XTC/TRRReader can do simple (forward) slices by doing (slow!) sequential iteration * deprecated principleAxes() and introduced principalAxes() with less confusing return values (Issue 33). * fixed wrong unitcell dimensions for XTC/TRR (Issue 34) * added basic XYZ reader with compression support (Issue 35) * PDB reader guesses masses (unknown elements are set to 0) * installation requires Biopython (www.biopython.org) 05/28/10 orbeckst, denniej0 * 0.6.2 release * removed a number of imports from the top level (such as rms_fitting); this might break some scripts that still rely on the layout that was used for 0.5.x (which is now officially declared deprecated) * defined trajectory API * deprecated DCD.dcd_header --> DCD._dcd_header * XTC and TRR compute numframes by iterating through trajectory (slow!) * introduced units: base units are ps (time) and Angstrom (length); see core.flags * XTC and TRR automatically convert between native Gromacs units (ps, nm) and base units (uses core.flags['convert_gromacs_lengths'] = True) * more test cases * *really* FIXED Issue 16 (can easy_install from tar file) * FIXED a bug in AtomGroup.principalAxes() * added dependency information to setup.py (numpy and biopython by default; nose for tests) 04/30/10 orbeckst * 0.6.1 release * can build a simple Universe from a PDB file (FIXES Issue 11) * can read Gromacs XTC and TRR files (FIXES Issue 1) but no Timeseries or Collections yet for those formats * removed Universe.load_new_dcd() and Universe.load_new_pdb() --- use the generic Universe.load_new() (MIGHT BREAK OLD CODE) * removed deprecated Universe._dcd attribute (MIGHT BREAK OLD CODE) * FIXED bug in PDB.PDBWriter and CRD.CRDWriter * use SloppyPDB in order to cope with large PDB files * core.distances.self_distance_array() is now behaving the same way as distance_array() * defined Trajectory API (see MDAnalysis/coordinates/__init__.py) * renamed _dcdtest to dcdtimeseries (will not affect old code) * unit tests added (still need more test cases) 03/31/10 orbeckst, denniej0 * 0.6.0 release * added KDTree and Neighbour searching code from Biopython for faster distance selections: used for AROUND selections; POINT is using distance matrix by default as this is faster. This can be configured with core.flags * core.flags infrastructure to tweak behaviour at run time * updated LICENSE file with Biopython License * some selections for nucleic acids * completely reorganized directory structure to make enhancements easier to incorporate * FIXED (partial): Issue 18 (Timeseries from a universe.segID selection, reported by lordnapi) * FIXED: Issue 19 (Timeseries collections were broken, reported by Jiyong) * can write single frames as pdb or crd (AtomGroup gained the write() method) * some selections for nucleic acids * completely reorganized directory structure to make enhancements easier to incorporate * FIXED: Issue 19 (Timeseries collections were broken) * improved installation - EasyInstall (setuptools) support (FIXED Issue 16) - better instructions in INSTALL - slightly better handling of the configuration of the fast linear algebra libs via the setup.cfg file 08/23/08 naveen, orbeckst * 0.5.1 release * primitive PDB writer (only works if coordinates were read from a pdb) * B-factor property (detailed implementation subject to change) * periodic flag for PointSelection * new correl series: orientation vector for 3-site molecules (to calculate the water dipole moment of SPC or TIP3P) * distance.distance_array() bug fixed (see doc string) * updated LICENSE file UIUC Open Source License 01/29/08 orbeckst * prepared 0.5.0 release. Includes previously disabled distance code, PDB reader, incomplete XTC reader (code by Benjamin Hall), and marginally updated documentation & licenses 11/12/07 naveen * prepared for release outside lab