1# -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8 -*- 2====================== 3 MDAnalysis CHANGELOG 4====================== 5 6The rules for this file: 7 * entries are sorted newest-first. 8 * summarize sets of changes - don't reproduce every git log comment here. 9 * don't ever delete anything. 10 * keep the format consistent (79 char width, M/D/Y date format) and do not 11 use tabs but use spaces for formatting 12 * accompany each entry with github issue/PR number (Issue #xyz) 13 * release numbers follow "Semantic Versioning" http://semver.org 14 15------------------------------------------------------------------------------ 1611/06/18 richardjgowers 17 * 0.19.2 18 19Changes 20 * Added Windows support 21 2211/05/18 orbeckst, PicoCentauri, richardjgowers, zemanj 23 * 0.19.1 24 25Fixes 26 * limit output of Chainreader __repr__ (#2109) 27 * added missing docs for lib.pkdtree (#2104) 28 * Added sphinx markup for FrameIterator (#2106) 29 * fixed error for residues and segments containing 0 atoms (#1999) 30 * fixed numpy deprecation warnings (#2122, #2123) 31 * Fixed reading PDB files with DOS line ending (#2128) 32 33Deprecations 34 * Default ``filename`` directory of align.AlignTraj is deprecated and 35 will change in 1.0 to the current directory. 36 3710/09/18 tylerjereddy, richardjgowers, palnabarun, orbeckst, kain88-de, zemanj, 38 VOD555, davidercruz, jbarnoud, ayushsuhane, hfmull, micaela-matta, 39 sebastien.buchoux, arm61, p-j-smith, IAlibay 40 41 * 0.19.0 42 43Enhancements 44 * Added bond/angle/dihedral reading in PARM7 TOPParser (PR #2052) 45 * Replaced multiple apply (_apply_distmat, _apply_kdtree) 46 methods in distance based selections with 47 lib.distances.capped_distance for automatic selection of 48 distance evaluation method. (PR #2035) 49 * Modified analysis.rdf.InterRDF to use lib.distances.capped_distance 50 to handle rdf calculations for large systems. (PR #2013) 51 * Added return_distances argument in lib.distances.capped_distances 52 to evaluate and return distances only when required. Modified 53 the optimization rules in lib.distances._determine_method for 54 faster computations. (PR #2041) 55 * Added method search_tree in lib.pkdtree to find all the pairs between 56 two kdtrees. (PR #2041) 57 * Added a wrapper of lib.nsgrid in lib.distances.self_capped_distance 58 and lib.distances.capped_distanceto automatically chose the fastest 59 method for distance based calculations. (PR #2008) 60 * Added Grid search functionality in lib.nsgrid for faster distance based 61 calculations. (PR #2008) 62 * Modified around selections to work with KDTree and periodic boundary 63 conditions. Should reduce memory usage (#974 PR #2022) 64 * Modified topology.guessers.guess_bonds to automatically select the 65 fastest method for guessing bonds using 66 lib.distance.self_capped_distance (PR # 2006) 67 * Added lib.distances.self_capped_distance to internally select the 68 optimized method for distance evaluations of coordinates with itself. (PR # 2006) 69 * Added augment functionality to create relevant images of particles 70 in the vicinity of central cell to handle periodic boundary 71 conditions (PR #1977) 72 * Added lib.distances.capped_distance function to quickly calculate all distances 73 up to a given maximum distance (PR #1941) 74 * Added a rotation coordinate transformation (PR #1937) 75 * Added a box centering trajectory transformation (PR #1946) 76 * Added a on-the-fly trajectory transformations API and a coordinate translation 77 function (Issue #786) 78 * Added various duecredit stubs 79 * Import time reduced by a factor two (PR #1881) 80 * Added compound kwarg to center, centroid, center_of_geometry, center_of_mass (PR #1903) 81 * Added rdf.InterRDF_s to calculate site-specific pair distribution 82 functions (PR #1815) 83 * Increased performance of (repeated) calls to AtomGroup.pack_into_box() 84 (PR #1922) 85 * Added boolean property *Group.isunique (PR #1922) 86 * Added *Group.copy() methods returning an identical copy of the respective 87 group (PR #1922) 88 * Use a faster function to deduplicate indices (PR #1951) 89 * Calculations in *Group.center() are performed in double precision (#PR1936) 90 * Functions in lib.distances accept coordinate arrays of arbitrary dtype 91 (PR #1936) 92 * Added pbc kwarg to Bond/Angle/Dihedral/Improper object value method, 93 default True. (Issue #1938) 94 * ChainReader can correctly handle continuous trajectories split into multiple files, 95 generated with gromacs -noappend (PR #1728) 96 * MDAnalysis.lib.mdamath now supports triclinic boxes and rewrote in Cython (PR #1965) 97 * AtomGroup.write can write a trajectory of selected frames (Issue #1037) 98 * Added dihedrals.py with Dihedral, Ramachandran, and Janin classes to 99 analysis module (PR #1997, PR #2033) 100 * Added the analysis.data module for reference data used in analysis (PR #2033) 101 * Added analysis.dihedrals with Ramachandran class to analysis module (PR #1997) 102 * Added augment functionality to create relevant images of particles 103 * Most functions in `MDanalysis.lib.distances` previously only accepting 104 arrays of coordinates now also accept single coordinates as input (PR #2048, 105 Issues #1262 #1938) 106 * Performance improvements to make_whole (PR #1965) 107 * Performance improvements to fragment finding (PR #2028) 108 * Added user-defined boxes in density code (PR #2005) 109 * MemoryReader now can accept velocities and forces (PR #2080) 110 * Universe.transfer_to_memory now copies dimensions, velocities and forces 111 (where possible) (Issue #1041 PR #2080) 112 113Fixes 114 * Rewind in the SingleFrameReader now reads the frame from the file (Issue #1929) 115 * Fixed order of indices in Angle/Dihedral/Improper repr 116 * coordinates.memory.MemoryReader now takes np.ndarray only (Issue #1685) 117 * Silenced warning when duecredit is not installed (Issue #1872) 118 * Fixed HBondAnalysis not considering PBC for distances (Issue #1878) 119 * Adding new TopologyAttrs with values defined always coerces this into 120 a numpy array (Issue #1876) 121 * Groups passed to select_atoms() are now type checked (Issue #1852) 122 * Fixed inconsistent handling of groups with/without duplicates in 123 pack_into_box() (Issue #1911) 124 * Fixed format of MODEL number in PDB file writing (Issue #1950) 125 * PDBWriter now properly sets start value 126 * Introduced compatibility for pbd files hybrid36 format encoding (Issue #1897) 127 * Zero length TopologyGroup now return proper shape array via to_indices 128 (Issue #1974) 129 * Added periodic boundary box support to the Tinker file reader (Issue #2001) 130 * Modifying coordinates by assignation is consistently persistent when using 131 the memory reader (Issue #2018) 132 * Allow import of WaterBridgeAnalysis from analysis.hbonds (#2064) 133 * Fixed SphericalLayer and SphericalZone selections with pbc=True. Previously 134 these shifted all atoms to inside the primary unit cell when calculating the 135 center of the reference group (Issue #1795) 136 * PCA analysis now uses start frame as reference frame rather than 0th frame 137 (PR #2055) 138 * Fixed trajectory iteration from a MDAnalysis.Universe.empty (#2076) 139 * Fixed copies MemoryReader not linking to the underlying coordinate array 140 on initial Timestep (Issue #2081 PR #2080) 141 142Changes 143 * TopologyAttrs are now statically typed (Issue #1876) 144 * updated meta data for new PyPi (#1837) 145 * AtomGroup.atoms, ResidueGroup.residues, and SegmentGroup.segments now return 146 themselves instead of a new object to increase performance (PR #1922) 147 * *Group.unique now returns a new object only if the respective group contains 148 duplicates. Otherwise, the group itself is returned. Repeated access of 149 *Group.unique will always return the same object unless the group is 150 updated or modified. (PR #1922) 151 * SurvivalProbability does not dilute SP anymore when the reference frame (t0) 152 cannot find any molecules in the first place. (PR #1995) 153 * The TPR parser reads SETTLE constraints as bonds. (Issue #1949) 154 * Indexing a trajectory with a slice or an array now returns an iterable 155 (Issue #1894) 156 * Removed unused function MDAnalysis.lb.mdamath.one_to_many_pointers() 157 (issue #2010) 158 * Box input for functions in `MDAnalysis.lib.distances` is now consistently 159 enforced to be of the form ``[lx, ly, lz, alpha, beta, gamma]`` as required 160 by the docs (Issue #2046, PR #2048) 161 * Added periodic keyword to select_atoms (#759) 162 * PCA.transform now requires that PCA.run() has already been called 163 otherwise a ValueError is raised (PR #2055) 164 * The quiet keyword has been removed and replaced with verbose (Issue #1975 165 PR #2055) 166 * MDAnalysis.Universe.empty now creates a MemoryReader trajectory (#2076 #2077) 167 168Deprecations 169 * start/stop/step are deprecated in the initialization of Analysis classes. 170 These parameters should instead be given to the run() method of the class. 171 (Issue #1463 #1979 PR #2055) 172 * Almost all "save()", "save_results()", "save_table()" methods in 173 analysis classes were deprecated and will be removed in 1.0 (Issue 174 #1972 and #1745) 175 * Deprecated use of core.flags. For use_pbc, the pbc keyword should 176 be used, use_KDTree_routines is obsolete as all distance calculations 177 select the fastest method, all other uses of flags are deprecated. 178 (#782) 179 180Testsuite 181 * skip tests for duecredit when duecredit is not installed (#1906) 182 * updated meta data for PyPi and updated README and INSTALL 183 18404/15/18 tylerjereddy, richardjgowers, palnabarun, bieniekmateusz, kain88-de, 185 orbeckst, xiki-tempula, navyakhare, zemanj, ayushsuhane, davidercruz, 186 jbarnoud 187 188 * 0.18.0 189 190Enhancements 191 * Added flatten_dict function that flattens nested dicts into shallow 192 dicts with tuples as keys. 193 * Can now pass multiple attributes as a list to groupby function. 194 Eg ag.groupby(["masses","charges"]) 195 (Issue #1839) 196 * Added reading of record types (ATOM/HETATM) for PDB, PDBQT and PQR formats 197 (Issue #1753) 198 * Added Universe.copy to allow creation of an independent copy of a Universe 199 (Issue #1029) 200 * Added copy method to various core classes including Reader, TransTable, 201 Topology, TopologyAttr (Issue #1029) 202 * Added `reindex` option to GROWriter to preserve original atom ids when set to 203 False (Issue #1777) 204 * Can now pass 'atom_style' keyword argument when parsing Lammps Data files 205 to specify what is on each line. Eg atom_style = 'id type charge x y z' 206 (Issue #1791) 207 * Added periodic boundary condition option to HydrogenBondAnalysis (Issue #1188) 208 * Added duecredit to prepare a summary of the citations, when a user 209 uses MDAnalysis (Issue #412) 210 * Added AtomGroup, ResidueGroup and SegmentGroup to the top module namespace 211 212Fixes 213 * Fixed MPI fork() warning when importing MDAnalysis in an Infiniband-enabled 214 MPI environment (PR #1794) 215 * Fixed waterdynamics SurvivalProbability ignoring the t0 start time 216 (Issue #1759) 217 * AtomGroup.dimensions now strictly returns a copy (Issue #1582) 218 * lib.distances.transform_StoR now checks input type (Issue #1699) 219 * libdcd now writes correct length of remark section (Issue #1701) 220 * DCDReader now reports the correct time based on istart information (PR #1767) 221 * added requirement scipy >= 1.0.0 (absolutely needed: >= 0.19) (Issue #1775) 222 * Universe.empty now warns about empty Residues and Segmnets (Issue #1771) 223 * AMBER netcdf reader now defaults to mmap=None as described in the docs 224 (meaning mmap=True for files and NOT in memory), thus avoiding 225 memory problems on big trajectories (Issue #1807) 226 * analysis.align: fixed output and catch more cases with 227 SelectionError when selections are incompatible (Issue #1809) 228 * fix cython 0.28 compiler error 229 * DCD istart was wrongly interpreted as frames (only in 0.17.0) instead of 230 integrator timesteps, which lead to large time-offsets when reading and 231 writing DCD files; now istart is correctly interpreted when reading and 232 when writing, istart=None will set it to the CHARMM default nsavc but the 233 default is istart=0, which will make the DCD start at frame 0 (Issue #1819) 234 * Can now parse PDB files without resids (Issue #1854) 235 * Fixed periodic KDTree, now requires Biopython version 1.71 onwards (Issue #1857) 236 * fixed a bug in visualization.streamlines (Issue #1617) 237 * Updated TPR parser for GROMACS 2018 (Issue #1796) 238 * Fixed reading of PQR files generated by Gromacs (Issue #1804) 239 240Changes 241 * scipy >= 1.0.0 is now required (issue #1775 because of PR #1758) 242 243Deprecations 244 * undeprecated creating Groups from list of Components (Issue #1847) 245 246Testsuite 247 * Unit tests for unwanted side effects when importing MDAnalysis 248 * MDAnalysis.visualization is now tested 249 25001/24/18 richardjgowers, rathann, orbeckst, tylerjereddy, mtiberti, kain88-de, 251 jbarnoud, nestorwendt, mmattaNU, jmborr, sobuelow, sseyler, rcortini, 252 xiki-tempula, manuel.nuno.melo 253 254 * 0.17.0 255 256Enhancements 257 * added support for GSD format topology/trajectory parser (PR #1693) 258 * spherical selections tokens can use the periodic KDTree (PR #1733) 259 * added Amber residue names to 'protein' atom selection (PR #1704) 260 * KDTree for neighbor search on periodic systems (PR #1660, #1692) 261 * Python versions 3.4 and upwards are now supported (Issue #260) 262 * added Universe.empty to allow Universes of custom size to be constructed 263 without any files (PR #1533) 264 * add minimal topology reader that is able to load coordinate/trajectory 265 files on their own without requiring a topology file (Issue #1371) 266 * added "parse_n_atoms" to Reader API and implemented this for DCD, INPCRD, 267 NCDF, TRR and XTC formats (PR #1533) 268 * added 'all_coordinates' keyword to Universe to also load the topology file 269 as a frame of the reader together with the trajectory files (PR #1533) 270 * add low level lib.formats.libdcd module for reading/writing DCD (PR #1372) 271 * replace old DCD reader with a Python 3 ready DCD reader (Issue #659) 272 * about 20% speed improvements for GNM analysis. (PR #1579) 273 * added support for Tinker TXYZ and ARC files 274 * libmdaxdr and libdcd classes can now be pickled (PR #1680) 275 * speed up atomgroup.rotate when point = (0, 0, 0) (Issue #1707) 276 * introduce the water bridge analysis module (PR #1722) 277 * Universe.add_TopologyAttr now accepts strings to add a given attribute 278 to the Universe (Issue #1092, PR #1186) 279 * The TPR parser populate the `moltypes` and `molnums` topology attributes; 280 the `moltype` and `molnum` selection keyword are added 281 (Issue #1555, PR #1578) 282 * use gridDataFormats >= 0.4.0 for new 'type' kwarg in 283 analysis.density.Density.export() to enable writing DX files 284 compatible with (buggy) PyMOL (#1725) 285 286Deprecations 287 * HydrogenBondAnalysis detect_hydrogens=heuristic is marked for deprecation in 1.0 288 * timeseries keyword format is replaced by order. The format keyword is marked for deprecation in 1.0 289 290Fixes 291 * Fixed analysis.psa.dist_mat_to_vec not returning int values (Issue #1507) 292 * Fixed triclinic PBC transform for a- and b- axes (Issue #1697) 293 * Fixed nuclinfo.tors() not converting delta (Issue #1572) 294 * Changed _calc_dihedral and Dihedral.value() to match IUPAC convention 295 (Issue #1565) 296 * Fixed _calc_dihedral returning negative angles as positive (Issue #1554) 297 * correctly read little-endian TRZ files on big-endian architectures (issue 298 #1424) 299 * Fixed type matching and inclusion compilation warnings for the 300 ENCORE analysis package (issue #1390) 301 * Fix extra deprecation warnings for instant segment and residue selectors 302 (Issue #1476) 303 * Accessing segments from a universe with an instant selector now issues a 304 deprecation warning as expected (Issue #1478) 305 * Fixed Angle.angle method return NaN values when angle was very close 306 to 180 degrees (Issue #1556) 307 * Fixed analysis.rms.RMSD failure with select != "all" (Issue #1487) 308 * Fixed analysis.rms.RMSD: group RMSD calculation does not 309 superimpose groupselections anymore (issue #720) 310 * XDR files now avoid offset recalculation on a rewind (PR #1667) 311 * Universe creation doesn't Matryoshka NamedStream anymore (PR #1669) 312 * Fixed triclinic unit cell distances for box edges (Issue #1475) 313 * Fixed analysis.rms.RMSD: selections are now applied to atomgroup, not to 314 atomgroup.universe 315 * Default filename argument for AlignTraj works again (Issue #1713) 316 * Fixed analysis.rms.RMSD failed when selection is unicode (PR #1710) 317 * Fixed analysis.align.AlignTraj failed when step > 1 (Issue #1714) 318 319Changes 320 * generate pairwise distance matrix, analysis.psa.PSAnalysis.D, by default 321 when analysis.psa.PSAnalysis.run_pairs_analysis is run (Issue #1507) 322 * remove deprecated TimeSeriesCollection 323 * remove deprecated analysis.align.rms_fit_trj 324 * remove deprecated analysis.contacts.ContactAnalysis 325 * remove deprecated analysis.contacts.ContactAnalysis1 326 * remove deprecated analysis.hbonds.hbond_analysis 1-indexing 327 * remove deprecated analysis.rms `target` keyword from functions 328 * remove deprecated analysis.rms.RMSD `mass_weighted` keyword 329 * remove deprecated analysis.align `mass_weighted` keyword from classes 330 * remove deprecated analysis.psa `mass_weighted` keyword from classes 331 * use fast scipy.io.netcdf pure python implementation for reading of Amber 332 netcdf3 trajctories instead of netCDF4 but use netCDF4 for fast 333 writing (if available) or fall back to netcdf (see also Issue #506) 334 * libmdaxdr classes now accept more argument types for a write (PR #1442) 335 * libmdaxdr classes now raise EOFError when accessing another frame after 336 the end of the file. Used to raise IOError. 337 * Universe.load_new() now returns the universe itself instead of 338 tuple (filename_or_array, trajectory_type) (Issue #1613) 339 * docs: URLs to (www|docs).mdanalysis.org now link to SSL-encrypted site 340 (see issue MDAnalysis/MDAnalysis.github.io#61) 341 * attributes can not be assigned to AtomGroups (and similar objects) unless 342 they are part of the Universe topology (Issue #1092 PR #1186) 343 344 34506/29/17 richardjgowers, rathann, jbarnoud, orbeckst, utkbansal 346 347 * 0.16.2 348 349Deprecations 350 * deprecated core.Timeseries module for 0.17.0 (Issue #1383) 351 * deprecated instant selectors for 1.0 (Issue #1377) 352 * deprecated the core.flag registry for 1.0 (Issue #782) 353 354Fixes 355 * fixed GROWriter truncating long resids from the wrong end (Issue #1395) 356 * Fixed dtype of numpy arrays to accomodate 32 bit architectures (Issue #1362) 357 * Groups are hashable on python 3 (Issue #1397) 358 359Changes 360 * scipy and matplotlib are now required dependencies (Issue #1159) 361 362 363Changes 364 * scipy and matplotlib are now required dependencies (Issue #1159) 365 366Testsuite 367 * Port to pytest - removed nose as a dependency (Issue #884) 368 369 37006/03/17 utkbansal, kain88-de, xiki-tempula, kaplajon, wouterboomsma, 371 richardjgowers, Shtkddud123, QuantumEntangledAndy, orbeckst, 372 kaceyreidy 373 374 * 0.16.1 375 376Enhancements 377 * Universe now works with StringIO objects for topologies and trajectories. 378 * Residues with the same residue ids are not merged by default now 379 (apply to PDB, GRO) (Issue #1306) 380 * Improved print to screen format in waterdynamics module (using 381 ProgressMeter). 382 * PQRParser now treats insertion codes properly (Issue #1317) 383 * made online docs responsive with the Alabaster Sphinx theme (#378) 384 385Fixes 386 * In Universe.transfer_to_memory(): dt is now adjusted with step (Issue #1310) 387 * Various documentation sphinx errors (PR #1312) 388 * Bugfix in confdistmatrix.get_distance_matrix; now works on all trajectory types. 389 (issue #1324) 390 * Fixed bug "no molecules in water selection" in waterdynamics analysis 391 module. 392 * Fix hbond_analysis cannot deal with Universe where no two atoms are with 3A. 393 (PR #1325) 394 * Fix PDBParser docs for conect (issue #1246) 395 * Fixed bug where amber topology files would fail to load if number of atoms was 396 exactly divisible by number of atoms per line (issue #1331) 397 * Fixed incorrect handling of residue names with trailing numbers in 398 HydrogenBondAnalysis (issue #801) 399 * Fixed AnalysisBase class provides numerical start,stop,step values (PR #1340) 400 * Fixed PSFParser not creating multiple residues for identical resids in 401 different segments. (Issue #1347, PR #1348) 402 * Add the OC1 and OC2 from amber99sb-ildn to hydrogen bond acceptors (issue #1342) 403 * Fix RMSF run return value (PR #1354) 404 * Fixed documentation in pca (Issue #1378 PR #1379) 405 406Changes 407 * Enable various pylint warnings to increase python 3 compatibility 408 * Change Mathjax cdn (Issue #1313) 409 * Change mass_weight to weights for PSA analysis 410 * Move mass_weights deprecation to version 0.18 411 * Docs moved to http://docs.mdanalysis.org (Issue #1315) 412 and made responsive (Alabaster theme with readable-sphinx CSS) 413 (Issue #378) 414 * speed improvements parsing PDB / PDBQT / PQR / XYZ coordinate reader (Issue #1308) 415 416 41704/10/17 kain88-de, fiona-naughton, richardjgowers, tyler.je.reddy, jdetle 418 euhruska, orbeckst, rbrtdlg, jbarnoud, wouterboomsma, shanmbic, 419 dotsdl, manuel.nuno.melo, utkbansal, vedantrathore, shobhitagarwal1612, 420 xiki-tempula, kash1102, vedantrathore 421 422 * 0.16.0 423 424Enhancements 425 * Added 'filename' attribute to 'MemoryReader' 426 * GRO reader conforms to the reader API standard(#1196) 427 * Improved __str__ and __repr__ of 'GroupBase' class in 428 MDAnalysis.core.groups (addresses Issue #1223) 429 * Added dynamic selections (addresses Issues #175 and #1074). 430 * Added 'MemoryReader' class to allow manipulation of trajectory data 431 in-memory, which can provide substantial speed-ups to certain 432 calculations. 433 * Universe creation now takes an 'in_memory' option, which will 434 transfer the corresponding trajectory to memory. Likewise a new 435 'Universe.transfer_to_memory()' method makes it possible to make 436 this transfer after construction of the universe 437 * Added 'in_memory' option to 'rms_fit_trj', which makes it possible 438 to do in-place (in-memory) alignment of trajectories. 439 * All classes derived from 'AnalysisBase' now display a ProgressMeter 440 with 'quiet=False' 441 * The 'run' method from all 'AnalysisBase' derived classes return the 442 class itself. 443 * Added boolean flag at lib.distances.USED_OPENMP to reveal if 444 OpenMP was used in compilation (Issue #883) 445 * Added Principal Component Analysis module for linear dimensionality 446 reduction. 447 * Added Auxiliary module for reading additional timeseries data alongside 448 trajectories (Issue #785) 449 * Added AnalysisFromFunction & analysis_class, see (Issue #946 and PR #950) 450 * Established the MDAnalysis.analysis.legacy module for unmaintained 451 analysis code (Issue #743) 452 * Added ProgressMeter to 'transfer_to_memory' function, to show progress 453 of loading trajectory to memory (Issue #1028 and PR #1055). 454 * Selecting atoms by resid now respects icodes if they were present. Ie 455 select_atoms('resid 163A') works! (Issue #839 PR #1066) 456 * Added ability to read MMTF format files (#907 PR #1069) 457 * Added MDAnalysis.fetch_mmtf function to download from PDB and create 458 Universe (#810 PR #1082) 459 * Added coordinates.null.NullWriter, which behaves like a Writer but 460 ignores all input; useful for suppressing output. 461 * Added random access support to GMSReader and TRJReader (#1081) 462 * Added atomgroup.center(weights, pbc) method to calculate the center 463 of a group given weights 464 * Universe anchors (for unpickling) now use a uuid (rather than filename) 465 to distinguish themselves by default. Can still use anchor_name kwarg to 466 control the anchor name manually. (PR #1125) 467 * Added groupby method to Group objects. (PR #1112) 468 * Added `singleframe` attribute to Writer API to exclude from known Writers 469 for a single frame (Issue #1199 PR #1201) 470 * Correct the display error of HydrogenBondAnalysis when start is not 0 or 471 step is not one. 472 * Groups (atomgroup, residuegroup, and segmentgroup) have more operators, 473 included set operators (Issue #726) 474 * Universes built with Merge now use the MemoryReader (Issue #1251) 475 * speed improvement for analysis.gnm.closeContactGNMAnalysis(..., 476 weights="size") by about 5x (partially Issue #1191) 477 478Fixes 479 * Trajectory slicing made completely Pythonic (Issue #918 PR #1195) 480 * Argument validation of dist_mat_to_vec is fixed (#597 PR #1183) 481 * Give correct error when the topology file format is not recognized (Issue #982) 482 * Give correct error when file doesn't exist/ has bad permissions (Issue #981) 483 * Improvement of analysis/waterdynamics module (Issue #935) 484 * Removed MDAnalysis.analysis.PDBToBinaryTraj (Issue #1035) 485 * MDAnalysis.analysis.distances.between() is no longer broken 486 * GROWriter resids now truncated properly (Issue #886) 487 * reading/writing lambda value in trr files (Issue #859) 488 * fix __iter__/next redundancy (Issue #869) 489 * SingleFrameReader now raises StopIteration instead of IOError on calling 490 next (Issue #869) 491 * Display of Deprecation warnings doesn't affect other modules anymore (Issue #754) 492 * Changed nframes to n_frames in analysis modules for consistency (Issue #890) 493 * fixed incompatibility with newer matplotlib in analysis.hole 494 * Fixed modules that improperly documented and/or used frame slicing 495 defaults (#914) 496 * Fixed same interRDF can be run twice (Issue #924) 497 * Support for TPR files produced by Gromacs-2016 (Issue #932) 498 * Fixed parsing PDB files with CONECT records to TER entries (Issue #936) 499 * Fixed parsing PDB files with single entry in CONECT record (Issue #937) 500 * Progress meters are now displayed as expected on jupyter notebooks 501 (Issue #927) 502 * Reset trajectory to 0 after sliced iteration (Issue #1031) 503 * Fixed rotaxis returning NaN if a=b (Issue #1045) 504 * Fixed align_principal_axis onto a principal axes (Issue #1045) 505 * Fixed NCDFWriter wrote velocities instead of forces if 506 convert_units=False was set: now correctly writes forces (PR #1113) 507 * Fixed warn about missing cython package in dev builds 508 * Fix align.rotation_matrix checks array shape equality (Issue #1152) 509 * Fixed strange error when writing a PDB with 0 atoms (Issue #1083 PR #1103) 510 * Fixed selections using operators backwards ('prop 10 > mass') and sensitivity 511 about whitespace around these (PR #1156 Issue #1011 #1009) 512 * Fixed PSA analysis is now using AlignTraj 513 * Fixed Principal Axes to order from highest to lowest eigenval (Issue #1162) 514 * Fixed analysis.density with soluteselection and notwithin_coordinates_factory 515 when using KDTree (Issue #1211) 516 * GRO files with greater than 99,999 residues now read correctly (Issue #728) 517 518Changes 519 * Started unifying the API of analysis classes (named internally 520 "Bauhaus" style; see Issue #719) 521 * Added protected variable _frame_index to to keep track of frame iteration 522 number in AnalysisBase 523 * Added new AlignTraj class for alignment. (Issue #845) 524 * Added new diffusionmap module for dimension reduction (Issue #857) 525 * Added new PCA module for dimension reduction (PR #896) 526 * Qcprot now takes N x 3 arrays instead of 3 x N arrays. This gives about a 527 40% speed up. (PR #930) 528 * The ProgressMeter class now has a `dynamic` keyword argument. It is now 529 recommended to provide format strings using the new python format syntax, 530 the old %-based syntax is still available but will be deprecated. 531 (PR #944) 532 * Analysis.rms.RMSD now confirms to standard analysis API (Issue #893) 533 * Fragments in Universe.fragment are now sorted by the index of their first 534 atom. (Issue 1007) 535 * atoms.tranform/translate/rotate/rotateby return original atomgroup 536 (Issue #1010) 537 * atoms.translate/rotateby don't accept AtomGroup tuples as 538 parameters anymore (Issue #1025) 539 * atoms.rotate can be given center of rotation (Issue #1022) 540 * XTCFile and TRRFile only raise IOError now on error. 541 * Deprecate usage of MDAnalysis.core.AtomGroup 542 * get_writer_for() returns NullWriter when filename=None instead of 543 raising TypeError and filename is now a required arg instead of kwarg 544 * moved coordinates.base.ChainReader to coordinates.chain.ChainReader 545 * renamed private method ChainReader.get_flname() to ChainReader._get_filename() 546 * totaltime now considers the first frame to be at time 0 (Issue #1137) 547 * analysis.rms.RMSF now conforms to standard analysis API (PR #1136) 548 * analysis.rms/align function keyword `mass_weighted` is replaced 549 by generic `weights='mass'`. This new keyword allows to pass it an 550 arbitrary weights array as well. (PR #1136) 551 * Renamed various base classes for clarity. Iobase -> IOBase, 552 Reader -> ReaderBase, SingleFrameReader -> SingleFrameReaderBase, 553 Writer -> WriterBase, TopologyReader -> TopologyReaderBase, 554 SelectionWriter -> SelectionWriterBase (Issue #921) 555 * Selection writers do not have a 'wa' mode anymore, but they have a 'close' 556 method (Issue #1244) 557 * Remove deprecated PrimitivePDB* classes 558 * Remove deprecated `delta` keyword for ChainReader 559 * Remove deprecated permissive_pdb_reader flag 560 * Removed superfluous and confusing keywords `start` and `end` for resid 561 selection in analysis.helanal.helanal_main() and 562 analysis.helanal.helanal_trajectory() 563 * weights="size" parameter in analysis.gnm.closeContactGNMAnalysis to 564 replace MassWeight=True 565 * bump minimum numpy version to 1.10.4 566 567Deprecations (Issue #599) 568 * Use of rms_fit_trj deprecated in favor of AlignTraj class (Issue #845) 569 * Moved analysis.x3dna to the analysis.legacy module (Issue #906) 570 * The keyword argument *quiet* is deprecated in favor of *verbose* 571 throughout the library (Issue #903) 572 * MassWeight=True parameter in analysis.gnm.closeContactGNMAnalysis 573 deprecated in favor of weights="size". 574 575Testsuite 576 * Make knownfailure work even without parentheses. 577 * Added a plugin to list the non-closed file handle (Issue #853, PR #874). 578 The plugin can be disabled with --no-open-files. 579 * The test_failure test can be made fail by setting the MDA_FAILURE_TEST 580 environment variable (PR #874) 581 * replaced XTC_HOLE test trajectory with more meaningful one MULTIPDB_HOLE 582 * install external packages on Travis (SETUP == full: HOLE, clustalw) 583 to test additional analysis code (Issue #898) 584 * removed usage of random numbers from tests (Issue #958) 585 * test_imports now always uses the correct source directory (Issue #939). 586 587 58805/15/16 jandom, abhinavgupta94, orbeckst, kain88-de, hainm, jbarnoud, 589 dotsdl, richardjgowers, BartBruininks, jdetle, pedrishi, 590 fiona-naughton, jdetle 591 592 * 0.15.0 593 594Metadata 595 596 * link download_url to GitHub releases so that Depsy recognizes 597 contributors (issue #749) 598 * a __version__ variable is now exposed; it is built by setup.py from the 599 AUTHORS file (Issue #784) 600 601API Changes 602 603 * rmsd doesn't superimpose by default anymore. The superposition 604 is controlled by the 'superposition' keyword now. (see issue #562, #822) 605 606Enhancements 607 608 * Add conda build scripts (Issue #608) 609 * Added read-only property giving Universe init kwargs (Issue #292) 610 * Added 'crdbox' as AMBER Trj format extension (Issue #846) 611 * Iteration and seeking in PDB files made faster (Issue #848) 612 613Fixes 614 * Fixed TypeError in PSAnalysis heatmap-dendrogram plotting (Issue #1018) 615 * ENT file format added to PDB Readers/Writers/Parsers (Issue #834) 616 * rmsd now returns proper value when given array of weights (Issue #814) 617 * change_release now finds number and dev (Issue #776) 618 * units.py now correctly prints errors for unknown units. 619 * test_shear_from_matrix doesn't fail for MKL builds anymore (Issue #757) 620 * HEADER and TITLE now appear just once in the PDB. (Issue #741) (PR #761) 621 * MOL2 files without substructure section can now be read (Issue #816) 622 * MOL2 files can be written without substructure section (Issue #816) 623 * GRO files with an incomplete set of velocities can now be read (Issue #820) 624 * Fixed Atom.position/velocity/force returning a view onto Timestep array 625 (Issue #755) 626 * PDB files can now read a CRYST entry if it happens before model headers 627 (Issue #849) 628 * Fixed HistoryReader returning 1 based frame indices (Issue #851) 629 630Changes 631 * Added zero_based indices for HBondsAnalysis. (Issue #807) 632 * Generalized contact analysis class `Contacts` added. (Issue #702) 633 * Removed Bio.PDBParser and sloppy structure builder and all of 634 MDAnalysis.coordinates.pdb (Issue #777) 635 * PDB parsers/readers/writers replaced by "permissive"/"primitive" 636 counterparts (formerly known as PrimitivePDBReader); the 637 'permissive' keyword for Universe is now ignored and only the 638 native MDAnalysis PDBReader is being used (Issue #777) 639 * PDBReader only opens a single file handle in its lifetime, 640 previously opened & closed handle each frame (Issue #850) 641 642Deprecations (Issue #599) 643 * Use of PrimitivePDBReader/Writer/Parser deprecated in favor of PDBReader/ 644 Writer/Parser (Issue #777) 645 * Deprecated all `get_*` and `set_*` methods of Groups. 646 * Deprecation warnings for accessing atom attributes from Residue, 647 ResidueGroup, Segment, SegmentGroup. Will not be present or will 648 give per-level results. 649 * Deprecation warnings for accessing plural residue attributes from 650 Residue or Segment (will disappear), or from SegmentGroup (will give 651 per-Segment results). 652 * Deprecation warnings for accessing plural segment attributes from Segment 653 (will disappear). 654 * Deprecated Atom number, pos, centroid, universe setter 655 * Deprecated AtomGroup serials, write_selection 656 * Deprecated Residue name, id 657 * Deprecated Segment id, name 658 * Deprecated as_Universe function; not needed 659 * Deprecated ContactAnalysis and ContactAnalysis1 classes 660 661Testsuite 662 * metadata update: link download_url to GitHub releases so that 663 Depsy recognizes contributors (issue #749) and added 664 @richardjgowers as maintainer 665 * a __version__ variable is now exposed; it is built by setup.py from the 666 AUTHORS file (Issue #784) 667 * Removed all bare assert (Issue #724) 668 * added tempdir module 669 670 67102/28/16 tyler.je.reddy, kain88-de, jbarnoud, richardjgowers, orbeckst 672 manuel.nuno.melo, Balasubra, Saxenauts, mattihappy 673 674 * 0.14.0 675 676API Changes 677 678 * Offsets files for Gromacs trajectory formats have been changed to a numpy 679 style format '.npz'. Offsets files will be regenerated when you load a 680 xtc/trr trajectory again. (Issue #441) 681 * rotation_matrix now accepts array-likes as input 682 683Enhancement 684 685 * XDR file seeking errors now report system errno. (PR #678) 686 * Offsets reading for xtc/trr files has been sped up. (Issue #441) 687 * select_atoms now implicitly ORs multiple values after a keyword for 688 many types of selections (Issue #345) 689 * Performance improvements for the PDBReader of about 10% 690 * LinearDensity analysis module added, which allows to compute linear mass 691 and charge density profiles along the three cartesian axes of the cell. 692 Works for orthorombic, fixed volume cells only. (Issue #670) 693 * Trajectories can now be sliced using a boolean array (Issue #725) 694 695Changes 696 697 * xdrlib was rebranded libmdaxdr. (Issue #679) 698 * xdrlib has been ported to cython. (Issue #441) 699 * util.NamedStream no longer inherits from basestring (Issue #649) 700 * Short TRZ titles are striped from trailing spaces. A friendlier error 701 message is raised when the TRZ writer is asked to write a title longer 702 than 80 characters. (Issue #689) 703 * PDB doesn't save charge information anymore 704 * coordinates.core.get_writer_for uses the user defined format if provided 705 before trying to deduce the format from file extension. (Issue #712) 706 707Fixes 708 709 * Syntax error corrected in psa.py (Issue #738) 710 * XDR file seeking and telling working again for large files (Issue #677). 711 * ContactAnalysis1 run method now starts at frame index 0 by default (Issue #624) 712 * Fixed PrimitivePDBWriter alignment of the atom name. (Issue #639 and #647) 713 * The 'atom' selection keyword returns an empty selection rather than an 714 error when no atoms are are found. (Issue #644) 715 * nucleic selection will now detect nucleic residue names suffixed with 3 or 5 716 (Issue #461) 717 * Fixed Reader returning all frames with stop in slice was 0 (Issue #672) 718 * Fixed NCDFReader not reading dt (Issue #676) 719 * Fixed PDB-Topology read bonds for atom ids larger then 10000 (Issue #693) 720 * Fixed Type Error in qcprot.pyx when no rotation can be fond (Issue #705) 721 * Fixed cyzone selection failing in orthogonal systems (Issue #710) 722 * Fixed Error in calculation of average grid density (Issue #716) 723 * Fixed indexing an AtomGroup using a list of bools now working (Issue #729) 724 725Testsuite 726 * Added the cleanup plugin (--with-mda_cleanup) to delete offset files 727 after tests have run (Issue 669) 728 * Made memleak testing python 3 compliant (Issue 662). It may be a moot 729 point since python 3.4 now cleverly deals with leaks. 730 731 73201/16/16 tyler.je.reddy, kain88-de, richardjgowers, manuel.nuno.melo, 733 orbeckst, Balasubra 734 735 * 0.13.0 736 737API Changes 738 739 * ChainReader `delta` keyword deprecated in favor of `dt`. (Issue #522) 740 * XYZWriter can now be used as a container format for different protein models 741 as well as a normal trajectory. If `n_atoms` is None (default) MDAnalysis 742 assumes that it is used as a container and won't give a warning if the 743 number of atoms differs between frames. 744 * GROWriter.fmt strings updated to use format style (Issue #494) 745 * removed MDAnalysis.lib.parallel.distances; use the new backend="OpenMP" 746 keyword for the functions in MDAnalysis.lib.distances (Issue #530) 747 748Enhancement 749 750 * ChainReader now reports times properly summed over sub-readers (Issue #522) 751 * GRO file reading approximately 50% faster for large files (Issue #212) 752 * GRO file writing now will write velocities where possible (Issue #494) 753 * Added bonded selection (Issue #362) 754 * Spherical layer and spherical zone selections now much faster (Issue #362) 755 * new keyword "backend" for accelerated functions in MDAnalysis.lib.distances 756 to select "serial" or "OpenMP"-enabled versions of the code; the default 757 is "serial" so old code will behave as before (see Issue #530) 758 * Lammps data file parsing improved greatly. Should now support all files, 759 and triclinic geometry. (Issue #139) 760 * Added analysis.polymer, currently with PersistenceLength tool (Issue #460) 761 * Added analysis.rdf, with InterRDF tool. (Issue #460) 762 * Made Reader.check_slice_indices a public method (Issue #604) 763 * analysis.helanal.helanal_main() now returns results as dict 764 * Added keyword to update selection every frame in density calculation (Issue #584) 765 * New keywords start, stop, step for density.density_from_Universe() 766 to slice a trajectory. 767 * MOL2Reader now reads molecule and substructure into ts.data 768 * All subclasses of ProtoReader, Writer and TopologyReader are automatically 769 added to the MDAnalysis directory of I/O (Issue #431) 770 771Changes 772 773 * built html doc files are no longer version controlled (Issue #491) 774 * The lib._distances and lib_distances_openmp libraries now have a 775 OPENMP_ENABLED boolean flag which indicates if openmp was used in 776 compilation. (Issue #530) 777 * analysis.helanal.helanal_trajectory() and helanal_main() now use a 778 logger at level INFO to output all their computed values instead 779 of printing to stdout 780 * default offset for ProgressMeter was changed from 0 to 1 (to match 781 the change from 1- to 0-based ts.frame counting) 782 * removed superfluous analysis.density.density_from_trajectory(); 783 use density_from_Universe(TOPOL, TRAJ) instead. 784 * MOL2Writer.write now only writes a single frame (Issue #521) 785 786Fixes 787 788 * Fixed select_atoms requiring a trajectory be loaded (Issue #270) 789 * AtomGroup timesteps no longer cached (Issue #606) 790 * GROWriter now truncates atom numbers over 99999 (Issue #550) 791 * AMBER netcdf writer now correctly uses float32 precision (Issue #518) 792 * Fixed a numpy incompatibility in `analysis.leaflet.LeafletFinder`. 793 (Issue #533) 794 * Cleaned up `MDAnalysis.Writer` docs regarding `dt` usage. (Issue #522) 795 * Fixed setup-time dependency on numpy that broke pip installs. (Issue #479) 796 * Fixed unpickling errors due to lingering dead universes. (Issue #487) 797 * Fixed analysis.density modules requiring the defunct `skip` attribute 798 on trajectories. (Issue #489) 799 * ten2eleven camelcase fixer now deals with centerOfMass (Issue #470) 800 * ten2eleven will now convert numatoms to n_atoms argument 801 for writer() functions (Issue #470) 802 * Fixed non-compliant Amber NCDFWriter (Issue #488) 803 * Fixed many Timestep methods failing when positions weren't present 804 (Issue #512) 805 * Fixed PointSelection using KDTree (Issue #362) 806 * Fixed GROParser getting tripped up by some file (Issue #548) 807 * Fixed writing dx files from analysis.density.density_from_Universe() 808 (Issue #544 and #410) 809 * Fixed base.Reader._check_slice_indices not liking numpy ints 810 (Issue #604) 811 * Fixed broken analysis.helanal.helanal_trajectory() and 812 helanal_main() 813 * Fixed lib.util.greedy_splitext() (now returns full path) 814 * Fixed MOL2Reader not reading molecule and substructure on init 815 (Issue #521) 816 * Fixed MOL2Writer rereading frames when writing them (Issue #521) 817 * Fixed PDBWriter not writing occupancies from atoms (Issue #620) 818 819Testsuite 820 * removed ez_setup.py 821 822 82310/08/15 824 825 * 0.12.1 kain88-de, orbeckst, richardjgowers 826 827API Changes 828 829Enhancements 830 831Changes 832 833Fixes 834 * Fixed OpenMP detection on Linux/OSX #459 835 * Fixed reading of LAMMPS trajectory times: default unit ought 836 to be fs and not ps 837 * Fixed setting of dt for DCDReader (and LAMMPS DCDReader) with 838 keyword argument Universe(..., dt=<dt>) 839 * Fixed a bug in topology.core.guess_atom_element where a 840 single digit atom name would raise an IndexError (#476) 841 * Fixed numpy -> np in LeafletFinder 842 84310/04/15 kain88-de, richardjgowers, dotsdl, sseyler, orbeckst, jbarnoud 844 845 * 0.12.0 846 847API Changes 848 849 * PrimitivePDBReader now imports occupancies into the `TimeStep` object. 850 (Issue #396) 851 * Atoms without a Universe now return NoDataError instead of 852 AttributeError 853 * AtomGroups of zero length or containing Atoms with no Universe raise 854 a NoDataError when trying to access Universe 855 * Atoms now keep a strong reference to Universe, meaning they 856 do not become orphaned when the Universe goes out of scope (Issue #297) 857 858Enhancements 859 860 * `Atom` and `AtomGroup` now expose occupancy value as `occupancy` and 861 `occupancies` properties (Issue #396) 862 * XYZReader now supports frame indexing (Issue #428) 863 * Reader objects can now be sliced using lists and arrays of indices 864 (Issue #437) 865 * `PSAnalysis` now includes Hausdorff pairs analysis and associated nearest 866 neighbor plotting method (Issue #438) 867 * New class `PSAPair` added to MDAnalysis.analysis.psa for handling 868 Hausdorff pairs analysis (Issue #438) 869 * `PSAnalysis` can now generate annotated heat maps (Issue #438) 870 * Added three new distance functions to MDAnalysis.analysis.psa (Issue #438) 871 * Additional getters added to `Path` and `PSAnalysis` (Issue #438) 872 * MSD matrix function now globally available in MDAnalysis.analysis.psa 873 (Issue #438) 874 * Function for obtaining coordinate axes from numpy trajectories now 875 globally available in MDAnalysis.analysis.psa (Issue #438) 876 * TPR parser updated for Gromacs 5.0.x and 5.1 (Issue #456) 877 * Setup.py now looks for some configuration values in a config file. Each 878 config option can also be changed via environment variables if they are 879 prefixed with 'MDA_'. Current options are 'use_cython', 'ues_openmp', 'debug_cflags' 880 881Changes 882 * An AtomGroup with 0 atoms now yields an `IndexError` on call to 883 `AtomGroup.write` (Issue #434) 884 * `PSA` changed to `PSAnalysis` to reduce namespace clutter (Issue #438) 885 * To build with debug-symbols use 'MDA_DEBUG_CFLAGS' instead of 'MDA_DEBUG_CFLAGS' 886 887Fixes 888 * Fixed minor issue in lib.mdamath.make_whole where if all bonds 889 were correctly sized, it wouldn't notice that multiple fragments 890 had been given. (Issue #445) 891 * Fixed issue with PDB Topology parsing where if serials went 892 over 100k, they wrapped to '***', breaking the parser (Issue #446) 893 * Fixed AtomGroup.sequence() (Issue #451) 894 * Fixed PrimitivePDBParser not detecting when resids had looped over 895 10,000. The original resid is stored as Atom.resnum (Issue #454) 896 * Fixed TPR topology parser to treat all bonded interactions available in 897 Gromacs 5.1 (Issue #222 and #352, pull request #463). 898 89909/07/15 tyler.je.reddy, richardjgowers, alejob, orbeckst, dotsdl, 900 manuel.nuno.melo, cyanezstange, khuston, ivirshup, kain88-de, 901 gormanstock 902 903 * 0.11.0 904 905 This release brings large changes to many parts of the API and might 906 break many existing scripts. For a full guide on the API changes, 907 please see: 908 909 https://github.com/MDAnalysis/mdanalysis/wiki/MDAnalysis-0.11-unifying-release-user-guide 910 911 Migrating old scripts has been made easier with the introduction of 912 the ten2eleven tool which is part of the package. 913 Details on how to use this are available at: 914 915 https://github.com/MDAnalysis/mdanalysis/wiki/Migrating-MDAnalysis-code-with-ten2eleven.py 916 917 API Changes 918 919 * Changed AtomGroup counting methods to properties with different 920 names: numberOfAtoms() to n_atoms, numberOfResidues() to 921 n_residues, numberOfSegments() --> n_segments (Issue #376) 922 * Changed trajectory reader numframes to n_frames (Issue #376) 923 * Changed Timestep.numatoms to n_atoms (Issue #376) 924 * Deprecated the use of the 'fullgroup' selection keyword (Issue #268) 925 * Changed atom.number attribute to atom.index (Issue #372) 926 * Changed many AtomGroup methods to properties. These are: indices, 927 masses, charges, names, types, radii, resids, resnames, resnums, 928 segids (Issue #372) 929 * Timestep can now only init using an integer argument (which 930 represents the number of atoms) (Issue #250) 931 * Added from_timestep and from_coordinates construction methods 932 to base.Timestep (Issue #250) 933 * Removed KDTree and CoordinateNeighbor from MDAnalaysis. If you 934 want to search in cartesian coordinates directly for nighboring 935 points use the BioPython KDTree or scikit-learn Neighbors module. 936 The AtomNeighborSearch class has been ported to use the BioPython 937 KDTree and is now located in MDAnalaysis.lib.NeighborSearch. 938 MDAnalaysis.KDTree still exists in this version so load the 939 NeighborSearch module but is deprecated and will be removed in 940 1.0. (Issue #383) 941 * Moved MDAnalysis.core.transformations to 942 MDAnalysis.lib.transformations (Issue #287) 943 * Moved MDAnalysis.core.util to MDAnalysis.lib.util (Issue #287) 944 * Moved MDAnalysis.core.log to MDAnalysis.lib.log (Issue #287) 945 * Moved MDAnalysis.core.units to MDAnalysis.units (Issue #287) 946 * Moved MDAnalysis.core.distances to MDAnalysis.lib.distances 947 (Issue #287) 948 * Moved MDAnalysis.core.parallel to MDAnalysis.lib.parallel 949 (Issue #287) 950 * Moved norm, normal, angle, stp and dihedral from lib.util to 951 lib.mdamath (Issue #287) 952 * AtomGroup.bond .angle .dihedral and .improper now return the 953 corresponding TopologyObject rather than performing the calculation 954 (Issue #373) 955 * All TopologyObjects now have a "value" method to evaluate them 956 (Issue #373) 957 * TopologyGroup now has a "values" methods to evaluate all contained 958 bonds (Issue #373) 959 * MDAnalysis.lib.distances.calc_torsions renamed to calc_dihedrals 960 (Issue #373) 961 * TopologyGroup.selectBonds renamed to select_bonds (Issue #389) 962 * deprecated camelCase AtomGroup methods in favour of underscore_style 963 (Issue #389) 964 * deprecate lib.distances.applyPBC in favour of apply_PBC (Issue #389) 965 * AtomGroup.res[names,ids,nums] and AtomGroup.segids now give arrays 966 of equal size to AtomGroup (Issue #385) 967 * ResidueGroup.segids now gives arrays of equal size to ResidueGroup 968 (Issue #385) 969 * AtomGroup setters `set_<property>` now plural for consistency with 970 property names (Issue #385) 971 * DCDReader no longer supports the "skip" keyword. Use slicing 972 on reader iteration to achieve same affect. (Issue #350) 973 * All Readers have a default "dt" of 1.0 ps. This applies also to 974 single frame readers, these would previously raise an error on 975 accessing dt. (Issue #350) 976 * NCDF Reader no longer has a default skip_timestep of 1 (Issue #350) 977 978 Enhancements 979 980 * Added the 'global' selection keyword (Issue #268) 981 * Added Jmol selection writer (Issue #356) 982 * Added reading of Hoomd XML files (Issue #333) 983 These can only act as topology information for now 984 * Tests can now detect memleaks on a per-test basis (Issue #323) 985 * AtomGroups can now be pickled/unpickled (Issue #293) 986 * Universes can have a __del__ method (not actually added) without 987 leaking (Issue #297) 988 * Added reading of DL_Poly format CONFIG and HISTORY files, these can 989 both act as both Topology and Coordinate information (Issue #298) 990 * Timestep objects now have __eq__ method (Issue #294) 991 * coordinates.base.Timestep now can handle velocities and forces 992 (Issue #294) 993 * Waterdynamics analysis module added, including five analysis 994 classes: Hydrogen Bond Lifetimes, Water Orientational Relaxation, 995 Angular Distribution, Mean Square Displacement and Survival 996 Probability. Documentation and test are included. (Issue #300) 997 * RMSF class added to rms analysis module 998 * ProgressMeter now outputs every *interval* number of ``update`` 999 calls (Issue #313) 1000 * Created lib.mdamath for common mathematical functions. (Issue #287) 1001 * All Timesteps have the has_positions has_velocities and has_forces 1002 boolean flags (Issue #213) 1003 * Timesteps can now allocate velocities and forces if they weren't 1004 originally created with these through the use of the has_ flags. 1005 (Issue #213) 1006 * Timesteps now store 'dt' and 'time_offset' if passed to them by 1007 Reader to calculate time attribute (Issues #306 and #307) 1008 * MDAnalysis.selection: can also be written to a NamedStream 1009 * Added function lib.mdamath.make_whole to "unbreak" molecules 1010 over periodic boundaries. (Issue #355) 1011 * Added triclinic_dimensions to Timestep, returns representation of 1012 unit cell as triclinic vectors (Issue #276) 1013 * Added setter to bfactors property (Issue #372) 1014 * Added AtomGroup altLocs and serials properties with setters. 1015 (Issue #372) 1016 * MDAnalysis.core.AtomGroup.Merge now copies across bonding 1017 information (Issue #249) 1018 1019 Changes 1020 1021 * numpy >= 1.5 required 1022 * A ProtoReader class intermediate between IObase and Reader was added 1023 so specific Readers can be subclassed without __del__ (the 1024 ChainReader and SingleFrameReader), thus preventing memleaks 1025 (Issue #312). 1026 * Atoms (and all container classes thereof) are now bound to Universes 1027 only via weakrefs. If Universes are not explicitly kept in scope 1028 Atoms will become orphaned. (Issue #297) 1029 * Removed FormatError, now replaced by ValueError (Issue #294) 1030 * base.Reader now defines __iter__ and __iter__ removed from many 1031 Readers (now use base.Reader implementation) (Issue #350) 1032 * Timestep._x _y and _z are now read only (Issue #213) 1033 * moved MDAnalysis.selections.base.get_writer() to 1034 MDAnalysis.selections.get_writer() to break a circular import. This 1035 should not affect any code because 1036 MDAnalysis.selections.get_writer() already existed. 1037 * distances.contact_matrix now treats the particle distance with 1038 itself as a contact for sparse matrices and numpy arrays. The 1039 progress reporting for sparse calculations has been removed. 1040 (Issue #375) 1041 * TopologyObjects and TopologyGroup moved to core.topologyobjects 1042 module (Issue #373) 1043 * Consolidated coordinates.guess_format and topology.guess_format to 1044 lib.util.guess_format (Issue #336) 1045 1046 Fixes 1047 1048 * All Writers now refer to time between written Timesteps as "dt", 1049 was previously "delta" in some Writers. (Issue #206) 1050 * Topology files can now be compressed (Issue #336) 1051 * Fixed PDB Parser and Reader requiring occupancy field (Issue #396) 1052 * Amber TRJ and NCDF Reader & Writers now use 'dt' instead of 'delta' 1053 to refer to time elapsed between timesteps. (Issue #350 and #206) 1054 * Fixed TPRParser considering LJ 1..4 exclusions as bonds (Issue #351) 1055 * ChainReaders no longer cause memory leak (Issue #312) 1056 * analysis.hbonds.HydrogenBondAnalysis performs a sanity check for 1057 static selections (Issue #296) 1058 * Fixed TRZWriter failing when passed a non TRZTimestep (Issue #302) 1059 * relative imports are now banned in unit testing modules 1060 (Issue #189) 1061 * Fixed bug and added DivisionByZero exception in 1062 analysis/waterdynamics.py in SurvivalProbability. (Issue #327) 1063 * Fixed parsing of PDB header data for PrimitivePDBReader (Issue #332) 1064 * Fixed contact_matrix handles periodic boundary conditions correctly 1065 for sparse matrices. (Issue #375) 1066 * Fixed analysis.hole not using CPOINT (Issue #384) 1067 * Fixed XTC/TRR .dt rewinding the trajectory (Issue #407) 1068 * Fixed TopologyGroup.from_indices not guessing topology object class 1069 (Issue #409) 1070 * Fixed TopologyGroup.__contains__ failing if different instance of 1071 same bond was queried. (Issue #409) 1072 1073Testsuite 1074 * Overhaul of the test subsystem. 1075 * Tests now implement nose plugins, as a submodule. (Issue 331) 1076 Available plugins are: memleak testing, stderr capturing (for quieter 1077 test runs), and proper knownfailure implementation (Issue 338). 1078 1079 108006/01/15 richardjgowers, caio s. souza, manuel.nuno.melo, orbeckst, 1081 sseyler 1082 * 0.10.0 1083 1084 Enhancements 1085 1086 * Improved performance of PDB Reading. Up to 3x faster. (Issue #212) 1087 * Added the 'same ... as' selection keyword (Issue #217) 1088 * Added guess_bonds keyword argument to Universe creation. This will attempt to 1089 guess all topology information on Universe creation. (Issue #245) 1090 * Added guess_bonds method to AtomGroup. (Issue #245) 1091 * All TopologyObjects (Bond, Angle etc) now have is_guessed attribute 1092 * TopologyGroup now has alternate constructor method, .from_indices() 1093 * Added TopologyObject.indices property 1094 * Amber netCDF4 Reader will now read Forces (Issue #257) 1095 * Amber netCDF4 Writer will now write Velocities and Forces 1096 * Added Amber coordinate/restart file reader (Issue #262) 1097 * Structural superpositions (MDAnalysis.analysis.align) can work 1098 with partial matches of atoms. 1099 * new path similarity analysis module MDAnalysis.analysis.psa 1100 * AtomGroup and TopologyGroup can now be indexed by numpy boolean arrays 1101 works identically to numpy masks. (Issue #282) 1102 1103 Changes 1104 1105 * TopologyGroup can now have zero length, and will evaluate to False 1106 when empty. 1107 * Renamed TopologyGroup.dump_contents to "to_indices" 1108 * Deprecated 'bonds' keyword from Universe and replaced with 'guess_bonds' 1109 * PrimitivePDBReader now requires the numatoms keyword 1110 * Structural superpositions (MDAnalysis.analysis.align) use partial 1111 matches of atoms by default (use strict=True for old behavior) 1112 * Function rmsd() was removed from MDAnalysis.analysis.align name 1113 space and should be accessed as MDAnalysis.analysis.rms.rmsd() 1114 1115 Fixes 1116 1117 * bynum selections now work from AtomGroup instances (Issue #275) 1118 * Cylinder selections now work from AtomGroup instances and honor 1119 PBC (Issue #274) 1120 * NetCDFWriter previously always wrote velocities/forces if found 1121 in timestep, rather than following how the Writer was created. 1122 1123 112404/20/15 tyler.je.reddy, richardjgowers, orbeckst 1125 * 0.9.2 1126 1127 Enhancements 1128 1129 * Can now set velocity from Atom object. (Issue 221) 1130 * Atom object now has force attribute for getting/setting forces (requires a 1131 trajectory with forces) (Issue 221) 1132 * Added wrap method. Wrap allows the centers of groups of atoms to be 1133 moved within the primary unit cell without breaking up the group. (Issue 190) 1134 1135 Changes 1136 1137 * The MDAnalysis project moved from Google Code to GitHub: the new 1138 website is http://www.mdanalysis.org and the new source code 1139 repository is at https://github.com/MDAnalysis/mdanalysis 1140 * "applications" were removed from the mdanalysis source code 1141 repository and now exist as independent repositories under 1142 https://github.com/MDAnalysis/ 1143 * Using a non-existent atom name as an instant selector now raises 1144 AttributeError instead of SelectionError (Issue 220) 1145 1146 Fixes 1147 1148 * trajectory objects are now properly closed in unit tests (Issue 256) 1149 1150 115103/27/15 manuel.nuno.melo, richardjgowers, comconadin 1152 * 0.9.1 1153 1154 Enhancements 1155 1156 * XYZ file format can be used without an associated topology file. 1157 * GAMESS output files can be read as trajectories for calculations of 1158 type ``SURFACE'' and ``OPTIMIZE'' (work wit both GAMESS-US and Firefly) 1159 1160 Changes 1161 1162 * removed undocumented MDAnalysis.builder module 1163 1164 Fixes 1165 1166 * TRR coordinate access via _y and _z now works properly (Issue 224) 1167 116803/15/15 richardjgowers, tyler.je.reddy, orbeckst, e.jjordan12, zhuyi.xue, 1169 bala.biophysics, dotsdl, sebastien.buchoux 1170 * 0.9.0 1171 1172 Enhancements 1173 1174 * offsets for XTC and TRR trajectories now stored and retrieved 1175 automatically; improves init times for large trajectories (Issue 208) 1176 * docs now use secure mathjax CDN (Issue 182) 1177 * minor improvements to helanal docstring 1178 * Support for reading altloc records in PDB files 1179 * Cap proteins with ACE and NMA terminal caps 1180 * MOL2 read and write support 1181 * 2D streamplot code no longer uses deprecated matplotlib.nxutils module 1182 * core.distances.calc_angles and calc_torsions now accept an optional box 1183 argument to consider periodic boundary conditions in their calculation 1184 (Issue 172) 1185 * TopologyGroup angles and torsions methods both have a pbc flag, (default 1186 False) to toggle consideration of periodic boundaries 1187 * XYZWriter (write simple XYZ trajectories) 1188 * TRZReader upgrades, seeking and numframes faster 1189 * PQRWriter (write PQR files) 1190 * HydrogenBond analysis: new keyword distance_type to alternatively 1191 look at the distance between heavy atoms (Issue 185) 1192 * TopologyGroup/TopologyDict system overhauled. (Issue 194) 1193 * TopologyObject class created, Bonds/Angles/etc nicer to work with. 1194 * Topology information is now loaded lazily into Universe, can be forced to 1195 load all with u.load_topology(). All topology information is now stored in 1196 .bonds .angles .torsions and .impropers attributes. 1197 * Added support for improper torsions. 1198 * AtomGroup now has .bonds .angles .torsions and .impropers attributes which 1199 retrieve relevant TopologyGroups 1200 * Increased performance of topology.core.guess_bonds greatly 1201 * Added topology.core.guess_angles guess_torsions and guess_improper_torsions 1202 which given accurate bond information can calculate the rest of the 1203 topology info. 1204 * Universe topology information is now settable after initialisation using lists of indices 1205 such as those provided by the guess_* functions. 1206 * Added LAMMPS data parser for topology files with the .data suffix. Can also 1207 read single frame coordinate & velocity information from these files. 1208 (Issue 139) 1209 * Added Fragments. Fragments are continuously bonded groups of atoms. 1210 These are lazily built, and accessible via the Atom.fragment and AtomGroup.fragments 1211 attributes. 1212 (Issue 190) 1213 * Added ability to remove items from Universe cache with _clear_caches. 1214 * Added ability to define dimensions from AtomGroup, Universe and Timestep for most 1215 formats. 1216 (Issue 203) 1217 * streamIO: many readers can directly use gzip- or bzip2 compressed 1218 files or a stream (such as cStringIO.StringIO) wrapped in 1219 util.NamedStream; currently supported: PDB, PSF, CRD, PQR, PDBQT, 1220 GRO, MOL2, XYZ 1221 * Added hydrogen bonding time autocorrelation analysis module 1222 (analysis.hbonds.HydrogenBondAutoCorrel) 1223 * Added energy units to core.units (Issue 214) 1224 * New AtomGroup.split() method to produce a list of AtomGroups for each atom, 1225 residue, or segment 1226 * New AtomGroup.sequence() method to extract a protein sequence. 1227 * Can pass subclasses of Reader and Topology reader to Universe init to allow 1228 custom readers to be defined. (Issue 198) 1229 * Added Atom.bonded_atoms property. This returns an AtomGroup of the Atoms 1230 that are bonded to a given Atom. (Issue 219) 1231 * Added atom selections to ContactAnalysis (Issue 169) 1232 1233 1234 Changes 1235 1236 * DCD unitcell format changed: MDAnalysis will now read it as [A, 1237 gamma, B, beta, alpha, C] instead of [A, alpha, B, beta, gamma, 1238 C]. The new CHARMM box vector unitcell format is heuristically guessed. 1239 (see Issue 187 for a full discussion and implications). 1240 * __getstate__() and __setstate__() raise an NotImplementedError for 1241 Universe and AtomGroup; before they were silently accepted on 1242 pickling and a cryptic "TypeError: AtomGroup is not callable" was 1243 raised (see also Issue 173 for detailed explanation) 1244 * XTC/TRR reader raise IOError with errorcode EIO (instead of 1245 ENODATA) when the last frame is reached and EBADF (instead of 1246 EFAULT) for any other issues (partially addresses Issue 150, 1247 Windows compatibility) 1248 * Universe.bonds now returns a TopologyGroup not a list. TopologyGroup can be 1249 iterated over; list(universe.bonds) should provide a fix to legacy code. 1250 * PQR reader will now set segid to a chainID if found in the PQR 1251 file (previously, the segid would always be set to 'SYSTEM'). 1252 * util.anyopen() only returns the stream and not the tuple (stream, 1253 filename) anymore; it tries to set stream.name instead 1254 * topology reading now done via classes (similar to trajectory reading) 1255 rather than functions. 1256 (Issue 210) 1257 1258 1259 Fixes 1260 1261 * fixed DCD triclinic unit cell reading and writing (although the new CHARMM 1262 format with the box matrix is not supported for writing) (Issue 187) 1263 ATTENTION: Support for triclinic boxes from DCDs was BROKEN prior to this fix! 1264 * fixed creation of residues and segments in Merge() 1265 * resolves Issue 188 regarding Helanal Finish Argument 1266 * fixed Issue 184 (TPR files with double precision) 1267 * fixed Issue 199 (FutureWarning in pyqcprot) 1268 1269 127004/01/14 orbeckst, jandom, zhuyi.xue, xdeupi, tyler.je.reddy, 1271 manuel.nuno.melo, danny.parton, sebastien.buchoux, denniej0, 1272 rmcgibbo, richardjgowers, lennardvanderfeltz, bernardin.alejandro 1273 matthieu.chavent 1274 1275 * 0.8.1 1276 1277 (Note: 0.8.0 contains a subset of these changes; 0.8.0 is deprecated) 1278 1279 Enhancements 1280 1281 * Named selections can now be passed to selectAtoms (Issue 174) 1282 * (experimental) MDAnalysis.visualization namespace added along with 1283 2D/3D streamplot modules & documentation for them 1284 * TRR file handling is now fully aware of missing coordinate/velocity/force 1285 information when reading and writing frames. 1286 * MDAnalysis.analysis.contacts.ContactAnalysis1 run() method 1287 now allows trajectory slicing (Issue 161) 1288 * Merge AtomGroups into a new Universe (Issue 157) 1289 * TPR parser (currently limited to versions 58, 73 and 83 of the 1290 Gromacs TPR format (Gromacs 4.0 to 4.6.1), see Issue 2) 1291 * fast XTC seeking (Issue 127) 1292 * changing resid (set_resid()) or segid (set_segid()) changes the 1293 topology and lists of resids/segids can be assigned to 1294 groups of objects (AtomGroup, ResidueGroup) 1295 * helanal: additional output of local bend and unit twist angles 1296 (Issue 133) 1297 * added support for reading DMS files (DESRES molecular structure) 1298 * bond connectivity information can be guessed from a PDB file if 1299 the bond=True keyword is set in Universe (Issue 23) 1300 * MDAnalysis.analysis.rms.RMSD: calculation of additional RMSDs 1301 * Plugin to generate nucleic acid helicoidal parameters using X3DNA; 1302 (must install working version 2.1 of X3DNA independently) 1303 * can use advanced slicing (with arbitrary lists or arrays) at all 1304 levels of the hierarchy (Issue 148) 1305 * coordinate readers and writers can be used as context managers 1306 with the 'with' statement 1307 * Can load multiple trajectories as Universe(topology, traj2, traj2, 1308 ...) in addition to providing all trajectories as a list, 1309 i.e. Universe(topology, [traj1, traj2, ...]) 1310 * added support for YASP and IBIsCO formats (.trz) (Issue 152) 1311 * new methods for AtomGroup: packIntoBox([inplace=True]) 1312 * added non-standard "extended" PDB format (XPDB) that reads 1313 five-digit residue numbers 1314 * util.convert_aa_code() recognizes non-standard residue names such 1315 as HSE, GLUH, GLH, ... 1316 * added new geometrics selections: sphlayer, sphzone, cylayer, cyzone 1317 * added TopologyDict and TopologyGroup classes for bond analysis 1318 * added calc_bonds, calc_angles and calc_torsions cython functions to 1319 core.distances for quickly calculating bond information 1320 * added applyPBC(coords, box) function to core.distances to move 1321 coordinates to within the primary unit cell 1322 * many AtomGroup methods now support 'pbc' flag to move atoms to within 1323 primary unitcell before calculation. This behaviour can also be 1324 toggled using the core.flags['use_pbc'] flag (Issue 156) 1325 * MDAnalysis.analysis.rms.rmsd(): new center keyword so that one can 1326 immediately calculate the minimum rmsd of two rigid-body superimposed 1327 structures 1328 1329 Changes 1330 1331 * libxdrfile2 is now used instead of libxdrfile. libxdrfile2 is distributed 1332 under GPLv2 1333 * dropped support for Python 2.5; minimum requirement is Python 2.6 1334 (Issue 130) 1335 * almost all methods of AtomGroup return NumPy arrays 1336 * slicing and indexing of AtomGroup, Residue, ResidueGroup, Segment, 1337 SegmentGroup will now always return an appropriate object and 1338 never a simple list 1339 * removed Timeseries.principleAxis (probably was never working) 1340 * dependent on Biopython >= 1.59 (Issue 147) 1341 * Hydrogen bond analysis defaults to updating selection 1 and 2 for 1342 every timestep in order to avoid unexpected behavior (Issue 138) 1343 * AtomGroup.velocities is now a (managed) attribute and not a method 1344 anymore: replace 'ag.velocities()' with 'ag.velocities' 1345 * changed the name of the flag 'convert_gromacs_lengths' to 'convert_lengths' 1346 1347 Fixes 1348 1349 * asUniverse now also accepts any instance that inherits from 1350 MDAnalysis.Universe (Issue 176) 1351 * fixed XDR writer incorrect use of delta parameter (Issue 154) 1352 * fixed incorrect computation of distances in serial and parallel 1353 distance_array() with PBC (Issue 151) 1354 * fixed Issue 129 (hole.py module pipe/file closure) 1355 * fixed array comparison bug in MDAnalysis.analysis.helanal 1356 and various enhancements to the helanal module 1357 * fixed MDAnalysis.analysis.rms.RMSD.run(): gave incorrect results 1358 if ref_frame != 0 1359 * alignto() now checks that the two selections describe the same 1360 atoms (fixes Issue 143) 1361 * slicing of ResidueGroup will now produce a ResidueGroup, and 1362 slicing of a SegmentGroup will produce a SegmentGroup, not a list 1363 as before (fixes Issue 135) 1364 * detect OpenMP-capable compiler during setup (Issue 145), which should allow 1365 users of Mac OS X 10.7 and 10.8 to build MDAnalysis using Apple's 1366 C-compiler (clang) (Issue 142) although they will not get a parallel 1367 version of distance_array. 1368 * PDB with blank lines gave IndexError (Issue 158) 1369 * fixed AtomGroup.ts Timestep instance not containing all available 1370 information (Issue 163) 1371 * fixed Timestep copy method returning a base Timestep rather than 1372 appropriate format (Issue 164) 1373 137412/24/12 danny.parton, jandom, orbeckst, jjlights03, jphillips, naveen.michaudagrawal, andy.somogyi, sebastien.buchoux 1375 1376 * 0.7.7 1377 1378 Enhancements 1379 1380 * multithreaded distance_array() (Issue 80, experimental); see the 1381 new core.parallel.distance module 1382 * MDAnalysis.analysis.rms for simple RMSD analysis 1383 * format of input coordinates can be set as (filename, format) 1384 tuples (Issue 76) 1385 * new AtomGroup.asphericity() and AtomGroup.shapeParameter() 1386 methods to compute shape descriptors. 1387 * access to forces (AtomGroup.forces with get_forces() and set_forces(); 1388 the default unit for force is kJ/(mol*A) and it is automatically 1389 converted from/to native). Currently, only the TRR Reader/Writer 1390 support forces. 1391 * all element masses 1392 * logger reports current version when starting 1393 1394 Fixes 1395 1396 * fixed Issue 115 (GROReader now uses fixed-column width format to read GRO files) 1397 * fixed Issue 116 (Failed to write AMBER netcdf trajectory from AtomGroup) 1398 * fixed Issue 117 (could not write Gromacs XTC/TRR from AMBER netcdf) 1399 * fixed Issue 120 (DCDWriter: wrote wrong unitcell information) 1400 * fixed Issue 121 (PSFParser would fail with IndexError for files without SEGID) 1401 * Issue 122 (made installation of netCDF4 library optional, which 1402 means that users of the AMBER netcdf Reader/Writer will have to 1403 manually install the library and its dependencies netcdf and HDF5, 1404 see https://code.google.com/p/mdanalysis/wiki/netcdf) 1405 140606/30/12 orbeckst, joshua.adelman, andy.somogyi, tyler.je.reddy, lukas.grossar, denniej0, danny.parton 1407 1408 * 0.7.6 1409 1410 Enhancements 1411 1412 * GRO file velocities may be accessed as AtomGroup.velocities() 1413 or Atom.velocity (Issue 102) 1414 * PrimitivePDBReader can be sliced 1415 * AMBER NetCDF (binary trajectory) reader and writer, supporting 1416 coordinates and velocities; requires netcdf4-python (Issue 109) 1417 * additional attributes and methods for AtomGroup to consolidate 1418 the interface to the Timestep: attribute 'positions' and 1419 'get_positions()' can be used instead of the 'coordinates()' 1420 method. get/set methods for both positions and velocities. 1421 * almost all Readers now support some form of slicing; unsupported 1422 slicing operations will raise a TypeError 1423 * additional analysis for Nucleic Acid order parameters 1424 (MDAnalysis.analysis.nuclinfo) 1425 * AMBER TOPParser now able to do both amber10 and amber12 formats 1426 (Issue 100) 1427 1428 Changes 1429 1430 * selectAtoms: updated *nucleic* and *nucleicxstal* selection definition 1431 *nucleic* includes the two-letter NA code that follows gromacs topolgy 1432 format and *nucleicxstal* allows for the one-letter NA code that follows 1433 the PDB Database code. 1434 * HydrogenBondAnalysis: multiple enhancements and changes (Issue 103) 1435 - many new analysis functions (see docs) 1436 - run() does not return the results anymore; results are simply 1437 stored as attribute timeseries (similar to other analysis tools) 1438 - only write per-frame debugging messages to the logfile when the 1439 new verbose keyword is set to True 1440 - more reliable detection of hydrogens bonded to heavy atoms 1441 - remove duplicate hydrogen bonds from the output 1442 * removed CHO and EAM (formyl and ethanol termini of gA in CHARMM) 1443 from the set of residues recognized as protein (collision with 1444 commonly used CHO for cholesterol) 1445 * PrimitivePDBWriter: special segid SYSTEM is translated to empty 1446 chainID 1447 * In order to write multi frame PDB files, the multiframe=True 1448 keyword must be supplied or use the MultiPDBWriter 1449 * empty AtomGroup can be constructed or can result from a selection 1450 without matches; it does *not* raise NoDataError anymore (Issue 12) 1451 * all single frame readers denote the first (and only) frame as 1452 frame number 1 (i.e. ts.frame == 1); it used to be 0 but 1 is 1453 consistent with the way this is is handled with real trajectories 1454 * requires Biopython >= 1.51 (fixes for Issue 112 and Issue 113) 1455 * Atom.type is always stored as a string. 1456 1457 Fixes 1458 1459 * HydrogenBondAnalysis: NH1 and NH2 were not recognized 1460 * GROWriter: enforce maximum resname and atomname length of 5 chars 1461 * Universe.load_new() raised a NameError (thanks to JiyongPark.77) 1462 * fixed Issue 105 (trajectory snapshots could not be written to PDB) 1463 * fixed Issue 107 (NAMD/VMD space delimited PSF files can be 1464 autodetected and read); important when using CGENFF atom types 1465 (thanks to JiyongPark.77 for initial patch) 1466 * fixed Issue 101 (could not write single frame to trr file) 1467 * fixed: permissive=True flag was ignored in Universe and hence the 1468 PrimitivePDBReader was always selected even if the Biopython one 1469 was desired 1470 * fixed Issue 112 (used removed Biopython constructs in 1471 MDAnalysis.analysis.align.fasta2select; thanks to francesco.oteri 1472 for a test case and fix) 1473 * fixed failing 'type' selection for topology formats that read an 1474 atom type as an integer (such as the AMBER parser) 1475 * fixed Issue 111 (NAN in pycpqrot and RMSD calculation) 1476 * fixed Issue 113 (replaced outdated Biopython to call ClustalW) 1477 1478 147902/16/12 sebastien.buchoux, orbeckst 1480 1481 * 0.7.5.1 1482 1483Fixes 1484 * added: missing files (Issue 95) 1485 * removed: unused delaunay-related files 1486 1487Testsuite 1488 * test package is now called 'MDAnalysisTests' 1489 * tests AND data are now bundled together in MDAnalysisTests 1490 * MDAnalysis and MDAnalysisTests packages MUST have the same 1491 release number (they need to stay in sync); MDAnalysisTests 1492 will NOT run if a release mismatch is detected 1493 * see Issue #87 and 1494 https://github.com/MDAnalysis/mdanalysis/wiki/UnitTests 1495 1496 149702/11/12 orbeckst, sebastien.buchoux, jandom, hallben, lukasgrossar 1498 1499 * 0.7.5 1500 1501 MDAnalysis can now be found on PyPI, allowing simple installation 1502 from the internet. Metadata was added to setup to facilitate PyPI 1503 upload and pages on the wiki describe how to do this. 1504 In addition, Debian/Ubuntu packages are also available. 1505 1506 Note that in order to run UnitTests one needs the separate package 1507 MDAnalysisTests (also release 0.7.5). 1508 1509 Enhancements 1510 1511 * new method OtherWriter() for trajectory readers to generate a 1512 writer for any format that has been initialised for the common 1513 basic values 1514 * new simple Residue.chi1_selection() selection 1515 * new distances.between() function (EXPERIMENTAL) 1516 * support LAMMPS non-standard DCD files (Issue 84; EXPERIMENTAL) 1517 * read and write multi-frame PDB files (Issue 77; EXPERIMENTAL) 1518 * extend the PDB parsing, support CONECT and REMARK entries 1519 * new GNM-based trajectory analysis module (Issue 90) 1520 * Read/Write velocities with TRR, new attribute Atom.velocity 1521 and AtomGroup.velocities() (Issue 91) 1522 * hydrogen bond analysis detects a range of GLYCAM atom types 1523 and utils.convert_aa_code will also accept GLYCAM-style residue 1524 names (Issue 92) 1525 * XYZ reader: can set timestep (Issue 92) 1526 1527 Changes 1528 1529 * The UnitTests are now integrated with the separate test data in a 1530 separate Python package named MDAnalysisTests; to run the tests 1531 for 0.7.5 one will need MDAnalysisTests-0.7.5 (Issue 87). 1532 * install a range of analysis dependencies right away: networkx, 1533 biopython, GridDataFormats (usually all painless); leave scipy and 1534 matplotlib to the user and the local package manager 1535 * When writing a trajectory and converting units, effectively a copy 1536 of the timestep is made and the in-memory timestep is not 1537 altered. In this way, analysis after writing a frame will still 1538 see the coordinates in MDAnalysis units and not converted units. 1539 1540 Fixes 1541 1542 * analysis.align.rms_fit_traj(): can output fitted trajectory to any 1543 supported format not just the input format 1544 * fixed ProgressMeter: default format string was broken 1545 * fixed: ResidueGroup and SegmentGroup indexing (did not work with 1546 numpy.int64 etc) and now raise TypeError if it does not fit 1547 * fixed HydrogenBondingAnalysis backbone donor list: had C but 1548 should have been O (this was supposed to be fixed with r849 in 1549 0.7.4 but a typo crept in). NOTE: analysis might have produced 1550 partially wrong results. 1551 * fixed: dihedral() and other methods using core.util.angle() sometimes 1552 returned nan instead of +pi or -pi 1553 * fixed: writing a trajectory from chained CRD files gave garbage 1554 coordinates (Issue 81) 1555 * fixed: support files for docs are now in included in the source 1556 distribution (thanks to Sebastien Buchoux; Issue 82) 1557 * fixed: core.util.iterable() would wrongly detect unicode strings 1558 as "iterable"; this lead the Reader autodections and then the 1559 ChainReader fail with "Runtime Error: Maximum recursion depth 1560 exceeded" for single filenames provided as a unicode string. 1561 * fixed: HBond analysis pickling of tables (Issue 92) 1562 1563 156407/09/11 orbeckst, dcaplan, jandom 1565 1566 * 0.7.4 1567 1568 Enhancements 1569 1570 * Universe() got new keywords topology_format and format to allow 1571 the user to specify the file formats instead of deriving it from the 1572 extensions (does not work with "chained" files at the moment); thanks to 1573 Michael Lerner for the suggestion 1574 * Chain trajectory reader allows frame indexing. 1575 * Issue 75: additional donors and acceptors keywords for H-bond analysis 1576 * structural alignment functions alignto() and rms_fit_traj() can also take a 1577 list of selection strings in order to define atom groups with fixed atom 1578 order and alignto() preserves the order of supplied AtomGroups for the 1579 special select values "all" and None. 1580 * new set_* methods for AtomGroup allows changing of Atom attributes 1581 for all members of the group (such as the segid) (EXPERIMENTAL) 1582 * new Atom and Residue attribute resnum that can be used to store 1583 the canonical PDB residue number (EXPERIMENTAL) 1584 1585 Fixes 1586 1587 * fixed Issue 74 (bug in AMBER topology parser which would show up for 1588 certain numbers of input lines; thanks to htaoyu1) 1589 * fix for Issue 48 (sparse contact_matrix in distances.py was slow when 1590 written in pure python; optimized in c code using scipy.weave) 1591 * HydrogenBondingAnalysis: donor atom name CO --> O (proper backbone 1592 oxygen); without the fix one misses most of the backbone H-bonds 1593 * alignto() and rms_fit_trj(): order of mobile and reference 1594 selection was reversed when supplied as a tuple (sel1, sel2) 1595 1596 Changes 1597 1598 * replaced analysis.util.progress_meter() with class core.log.ProgressMeter 1599 1600 * Issue 28: split off test data trajectories and structures from 1601 MDAnalaysis/tests/data into separate package MDAnalysisTestData, which is 1602 required to run the UnitTests from release 0.7.4 onwards. Numbering matches 1603 the earliest MDAnalysis release for which the data is needed. Any later 1604 releases of MDAnalysis will also use these test data unless a 1605 MDAnalysisTestData package with a higher release number is available. 1606 1607 Testsuite 1608 1609 * Split off test data trajectories and structures from 1610 MDAnalaysis/tests/data into separate package. (Issue 28) 1611 * Numbering matches the earliest MDAnalysis release for which the data is 1612 needed. Any later releases of MDAnalysis will also use these test data 1613 unless a MDAnalysisTestData package with a higher release number is 1614 available. 1615 1616 161705/22/11 orbeckst, jandom, Benjamin Hall, Paul Rigor, dcaplan, 1618 Christian Beckstein (logo), denniej0 1619 1620 * 0.7.3 1621 1622 Removals 1623 1624 * completely removed the old core.rms_fitting module (and thus we also do not 1625 depend on the LAPACK library anymore, which should simplify installation); 1626 use the functions accessible through MDAnalysis.analysis.align (which are 1627 faster and use QCPROT) 1628 1629 Enhancements 1630 1631 * PDBQT (autodock) format added (reading and writing of single frames) 1632 * new attributes universe.trajectory.frame and universe.trajectory.frame: 1633 report the current frame number and time (e.g. in ps) of the current frame 1634 of the trajectory 1635 * new attribute Timestep.volume (unit cell volume) 1636 * new special methods of AtomGroup: bond(), angle(), improper() in 1637 addition to the calculation of dihedral() 1638 * HELANAL helix analysis in MDAnalysis.analysis.helanal; Python 1639 implementation of helanal.f from 1640 http://www.ccrnp.ncifcrf.gov/users/kumarsan/HELANAL/helanal.html (Benjamin 1641 Hall, used under GPL v2+) 1642 * hydrogen bonds analysis in MDAnalysis.analysis.hbonds 1643 * MDAnalysis.analysis.distances.dist() for calculating distances between 1644 matching atoms in two groups 1645 * MDAnalysis logo by Christian Beckstein (and a reformatting of the 1646 online docs to match the logo theme) 1647 1648 Change of behaviour 1649 1650 * alignto() and rms_fit_trj(): changed keyword 'select' default from 1651 'backbone' to 'all' 1652 1653 Fixes 1654 1655 * fixed alignto() (raised KeyError) 1656 * fixed Issue 57 (check for illegal coordinates when writing PDB and GRO) 1657 * use spaces everywhere and no TABs and tell emacs and vim to keep it that 1658 way (Issue 69) 1659 * fixed Issue 70 (problems with instant atom selections) 1660 1661 166203/31/11 orbeckst, dcaplan, naveen.michaudagrawal 1663 * 0.7.2 1664 * NOTE: minimum Python version required is 2.5 (since 0.6.3) 1665 1666 Enhancements 1667 1668 * loading from a PDB sets segid to the chain id if it exists 1669 * PrimitivePDBWriter uses first letter of segid as PDB chain id 1670 * aliased segment.name to segment.id 1671 * new method AtomGroup.bbox() that returns the orthorhombic bounding box 1672 * enhancements of the analysis.density module (build density 1673 from B-factors) 1674 * PQR radius is now an attribute of Atom; AtomGroup.radii() returns the 1675 radii as a NumPy array; internally B-factor has also become an 1676 attribute of each Atom. 1677 * recognise many more OPLS/AA and Amber residue names as "protein" 1678 * recognise more atom masses (taken from CHARMM27 and Gromacs) and 1679 atom types (from CHARMM, Amber, OPLS, GROMOS) and moved 1680 masses and types into new module topology.tables; the type recognition 1681 is still incomplete but can be easily enhanced in tables 1682 * analysis.align: convenience functions rotation_matrix() and alignto() 1683 * TrajectoryReader gained Writer() method which returns an appropriate 1684 TrajectoryWriter instance that can be used for processing this 1685 trajectory (enhancement of the Trajectory API); if no Writer is known 1686 then a NotImplementedError is raised 1687 * doc improvements 1688 1689 Fixes 1690 1691 * installation: removed dependency on Cython; developer should 1692 use setup_developer.py instead of setup.py (Issue 66) 1693 * Fixed a problem with the strict PDBReader: raised exception when the 1694 pdb did not contain a segid 1695 * Support for PDBs with 4 character resnames and segID output when 1696 writing (Issue 63) --- makes the (default) PrimitivePDBReader/Writer 1697 more suitable for NAMD/CHARMM but breaks strict PDB standard. If 1698 you need full PDB reading capabilities, use the strict PDB reader 1699 [i.e. use Universe(..., permissive=False)] 1700 * fixed bug in (experimental) phi and psi selections 1701 * fixed bugs in reading of unit cells (Issue 60, Issue 61, Issue 34) 1702 * universe.trajectory.delta returns the full precision dt value 1703 instead of a value rounded to 4 decimals (Issue 64) 1704 * fixed bug in DCDWriter (XTC->DCD was broken, Issue 59) 1705 170602/08/11 orbeckst, denniej0, jandom, tyler.je.reddy, Joshua Adelman 1707 * 0.7.1 release 1708 * online documentation 1709 * AMBER topology and trj capabilities (netcdf not yet available) 1710 * PQR file reading support 1711 * new analysis.contacts.ContactAnalysis1 class that supports a 1712 native contact analysis between arbitrary groups 1713 * new examples (e.g. peptide helix clustering in a membrane) 1714 * fixed Issue 58 (align.rms_fit_trj; fix reported by Joshua Adelman) 1715 * new analysis module 'density': creation and analysis of volume data 1716 * fast RMSD aligner based on Douglas Theobald's QCP method for 1717 calculating the minimum RMSD between two structures and 1718 determining the optimal least-squares rotation matrix; 1719 replaces the slower previous code (implemented by Joshua Adelman from 1720 his pyqcprot package https://github.com/synapticarbors/pyqcprot); 1721 deprecated core.rms_fitting.rms_rotation_matrix() and scheduled for 1722 removal in 0.8 1723 * uses cython instead of pyrex 1724 172511/05/10 orbeckst, denniej0, tyler.je.reddy, danny.parton, joseph.goose 1726 * major release 0.7.0 1727 (includes changes that can BREAK BACKWARDS COMPATIBILITY) 1728 * Removed ALL DEPRECATED code: 1729 - AtomGroup.principleAxes (Issue 33) 1730 - DCD.DCDReader.dcd_header() and DCD.DCDWriter.dcd_header() 1731 (use _dcd_header()) 1732 - Universe.dcd (and Universe.xtc, Universe.trr...) --- from 1733 now on only Universe.trajectory is supported. 1734 WILL BREAK LEGACY CODE! 1735 - removed the following packages from top-level MDAnalysis 1736 name space: 1737 - AtomGroup, Selection: import them from MDAnalysis.core if 1738 really needed (e.g. 'import MDAnalysis.core.AtomGroup') 1739 - distances, rms_fitting: 'import MDAnalysis.analysis.distances' 1740 or 'import MDAnalysis.analysis.align.rms_fitting' (the 1741 actual modules still live in MDAnalysis.core but they 1742 might get moved in the future and bundled with 1743 transformations) 1744 - 'from MDAnalysis import *' will only get ['Timeseries', 1745 'Universe', 'asUniverse', 'Writer', 'collection'] 1746 - removed copy flag from distance_array and self_distance_array: 1747 setting it to False would always give wrong results so there was 1748 no good reason keeping it around 1749 * whitespace is no longer required around parentheses for 1750 selectAtoms strings but the old syntax with white space 1751 still works (Issue 43) 1752 * improved trajectory writing 1753 - MDAnalysis.Writer() factory function that provides an 1754 appropriate writer for the desired file format 1755 - Writer.write() accepts a Timestep, a Universe, or a 1756 arbitrary AtomGroup (e.g. from a selection); this is much 1757 more flexible than Writer.write_next_timestep() 1758 * New attributes for trajectory readers: dt (time between 1759 frames) and totaltime (length of the trajectory) 1760 * Changes to AtomGroup 1761 - Indexing is made consistent with the way lists behave: 1762 1. indexing with integers returns a single Atom 1763 2. slicing always returns a new AtomGroup 1764 3. advanced slicing with a list or array returns a new 1765 AtomGroup (NEW, fixes Issue 36) 1766 - AtomGroup coordinates can be manipulated (translate(), 1767 rotate() and rotateby() methods; when appropriate, these methods 1768 can take AtomGroups or arrays to determine coordinates) 1769 - new attributes 'residues' and 'segments' for AtomGroup to give 1770 access to the list of residue/segment objects of the group 1771 - new exception 'NoDataError'; raised when creation of an empty 1772 AtomGroup is attempted (see also Issue 12) 1773 - consistent representation of the Segment > Residue > Atom 1774 hierarchy: all classes related to AtomGroup have the 1775 attributes 'atoms', 'residues', 'segments' which provide 1776 access to groups of the corresponding objects 1777 * improvements to Residue, ResidueGroup and Segment classes 1778 - documented accessing residues from Segment as 1779 Segment.r<resid>; resid is 1-based -- BREAKS OLD CODE 1780 that relied on this being 0-based 1781 - added SegmentGroup class 1782 - can write from Residue, ResidueGroup and Segment (Issue 46) 1783 - residue name attribute of a Segment now consistently 1784 returns a ResidueGroup (Issue 47) -- MIGHT BREAK OLD CODE 1785 - added documentation and examples in the doc strings 1786 - new special dihedral angle selections defined for Residue 1787 class to simplify analysis of backbone torsions (experimental) 1788 * new contact_matrix method for calculating contacts 1789 (Issue 30); for large (N > ~10000) coordinate arrays 1790 automatically switches to a method using a sparse matrix (slower) 1791 * more example scripts (e.g. for membrane analysis, trajectory writing, 1792 coordinate transformations) 1793 * CRDReader added (fixes Issue 40 ) ... it will work for both 1794 standard and extended formats: NO special flags needed. 1795 * CRDWriter will now write extended crd files: NO special flags needed. 1796 * By default, PDB files are read with the PrimitivePDBReader and not 1797 the Bio.PDB reader anymore because the latter can drop atoms when 1798 they have the same name in a residue (which happens for systems 1799 generated from MD simulations) The PrimitivePDBReader copes just fine 1800 with those cases (but does not handle esoteric PDB features such as 1801 alternative atoms and insertion codes that are not needed for 1802 handling MD simulation data). 1803 - The default behaviour of MDAnalysis can be set through the flag 1804 MDAnalysis.core.flag['permissive_pdb_reader']. The default is True. 1805 - One can always manually select the PDB reader by providing the 1806 permissive keyword to Universe; e.g. Universe(...,permissive=False) 1807 will read the input file with the Bio.PDB reader. This might be 1808 useful when processing true Protein Databank PDB files. 1809 * fixed Issue 51 (distance_array() did not properly check its 1810 input and wrong results could be returned if the input was a 1811 float64 and a float32 array) 1812 181309/19/10 orbeckst 1814 * quick-fix release 0.6.4.1 1815 * fixed import issue with python 2.5 (Issue 41) 1816 181709/16/10 orbeckst, danny.parton 1818 * release 0.6.4 1819 * GRO writer added 1820 * fixed XTC writer (Issue 38) 1821 * convert box representations (Issue 37) 1822 * primitive PDB parser added (slightly faster and ignores 1823 correctness of resids, atomnames etc but reads CRYST1 into unitcell) 1824 * Universe gained the 'permissive' flag to switch on the 1825 primitive PDB parser/reader 1826 * Simple 'chained reader' which enables a Universe to 1827 transparently read a list of trajectory files (Issue 39). 1828 * Additional methods for AtomGroup: numberOfResidues(), resids(), resnames() 1829 * new bilayer analysis script for membrane composition on a 1830 per-leaflet basis (examples/membrane-composition.py); also 1831 renamed examples/leaflet.py to membrane-leaflets.py 1832 183307/08/10 orbeckst, denniej0, danny.parton, philipwfowler 1834 * 0.6.3 release 1835 * minimum requirement is python 2.4 (using with_statement in the 1836 analysis module and we have not tested on 2.3 in a while) 1837 * analysis modules (MDAnalysis.analysis): 1838 - lipid bilayer leaflet detection 1839 - native contact analysis ("q1-q2") 1840 - rms-fitting based on sequence alignment 1841 * write selections for other codes from AtomGroups (VMD, pymol, CHARMM, 1842 Gromacs ndx) 1843 * gro reader (Issue 31) 1844 * better API for loading a topology and a coordinate file in Universe() 1845 * trajectory reader: DCDReader can reverse trajectory with negative 1846 step increment; XTC/TRRReader can do simple (forward) slices by doing 1847 (slow!) sequential iteration 1848 * deprecated principleAxes() and introduced principalAxes() with less 1849 confusing return values (Issue 33). 1850 * fixed wrong unitcell dimensions for XTC/TRR (Issue 34) 1851 * added basic XYZ reader with compression support (Issue 35) 1852 * PDB reader guesses masses (unknown elements are set to 0) 1853 * installation requires Biopython (www.biopython.org) 1854 185505/28/10 orbeckst, denniej0 1856 * 0.6.2 release 1857 * removed a number of imports from the top level (such as rms_fitting); 1858 this might break some scripts that still rely on the layout that was 1859 used for 0.5.x (which is now officially declared deprecated) 1860 * defined trajectory API 1861 * deprecated DCD.dcd_header --> DCD._dcd_header 1862 * XTC and TRR compute numframes by iterating through trajectory (slow!) 1863 * introduced units: base units are ps (time) and Angstrom (length); see core.flags 1864 * XTC and TRR automatically convert between native Gromacs units (ps, nm) and 1865 base units (uses core.flags['convert_gromacs_lengths'] = True) 1866 * more test cases 1867 * *really* FIXED Issue 16 (can easy_install from tar file) 1868 * FIXED a bug in AtomGroup.principalAxes() 1869 * added dependency information to setup.py (numpy and 1870 biopython by default; nose for tests) 1871 187204/30/10 orbeckst 1873 1874 * 0.6.1 release 1875 * can build a simple Universe from a PDB file (FIXES Issue 11) 1876 * can read Gromacs XTC and TRR files (FIXES Issue 1) but no 1877 Timeseries or Collections yet for those formats 1878 * removed Universe.load_new_dcd() and Universe.load_new_pdb() 1879 --- use the generic Universe.load_new() (MIGHT BREAK OLD CODE) 1880 * removed deprecated Universe._dcd attribute (MIGHT BREAK OLD CODE) 1881 * FIXED bug in PDB.PDBWriter and CRD.CRDWriter 1882 * use SloppyPDB in order to cope with large PDB files 1883 * core.distances.self_distance_array() is now behaving the 1884 same way as distance_array() 1885 * defined Trajectory API (see MDAnalysis/coordinates/__init__.py) 1886 * renamed _dcdtest to dcdtimeseries (will not affect old code) 1887 * unit tests added (still need more test cases) 1888 188903/31/10 orbeckst, denniej0 1890 * 0.6.0 release 1891 * added KDTree and Neighbour searching code from Biopython for 1892 faster distance selections: used for AROUND selections; 1893 POINT is using distance matrix by default as this is 1894 faster. This can be configured with core.flags 1895 * core.flags infrastructure to tweak behaviour at run time 1896 * updated LICENSE file with Biopython License 1897 * some selections for nucleic acids 1898 * completely reorganized directory structure to make 1899 enhancements easier to incorporate 1900 * FIXED (partial): Issue 18 (Timeseries from a universe.segID 1901 selection, reported by lordnapi) 1902 * FIXED: Issue 19 (Timeseries collections were broken, 1903 reported by Jiyong) 1904 * can write single frames as pdb or crd (AtomGroup gained the 1905 write() method) 1906 * some selections for nucleic acids 1907 * completely reorganized directory structure to make 1908 enhancements easier to incorporate 1909 * FIXED: Issue 19 (Timeseries collections were broken) 1910 * improved installation 1911 - EasyInstall (setuptools) support (FIXED Issue 16) 1912 - better instructions in INSTALL 1913 - slightly better handling of the configuration of the fast 1914 linear algebra libs via the setup.cfg file 1915 191608/23/08 naveen, orbeckst 1917 * 0.5.1 release 1918 * primitive PDB writer (only works if coordinates were read from a pdb) 1919 * B-factor property (detailed implementation subject to change) 1920 * periodic flag for PointSelection 1921 * new correl series: orientation vector for 3-site molecules 1922 (to calculate the water dipole moment of SPC or TIP3P) 1923 * distance.distance_array() bug fixed (see doc string) 1924 * updated LICENSE file UIUC Open Source License 1925 192601/29/08 orbeckst 1927 * prepared 0.5.0 release. Includes previously disabled 1928 distance code, PDB reader, incomplete XTC reader (code by 1929 Benjamin Hall), and marginally updated documentation & 1930 licenses 1931 193211/12/07 naveen 1933 * prepared for release outside lab 1934