Upcoming changes:
- Support for Python 3.1 and NumPy 1.5 will be dropped, meaning no Windows installers will be built for these versions of them.
Improvements:
- :class:`.HierView` can handle :class:`.Residue` instances that have same :term:`segment` name, :term:`chain` identifier, and :term:`resnum`, if PDB file contains
TER
lines to terminate these residues. If these three identifiers are shared by multiple residues, indexing :class:`.AtomGroup` instances will return a list of residues. This behavior can be used as follows. Note that in v1.5, this will be the default behavior.>>> pdb_lines = """ ... ATOM 1 O WAT A 1 4.694 -3.891 -0.592 1.00 1.00 ... ATOM 2 H1 WAT A 1 5.096 -3.068 -0.190 1.00 1.00 ... ATOM 3 H2 WAT A 1 5.420 -4.544 -0.808 1.00 1.00 ... TER ... ATOM 4 O WAT A 1 -30.035 19.116 -2.193 1.00 1.00 ... ATOM 5 H1 WAT A 1 -30.959 18.736 -2.244 1.00 1.00 ... ATOM 6 H2 WAT A 1 -29.993 19.960 -2.728 1.00 1.00 ... TER ... ATOM 7 O WAT A 1 -77.584 -21.524 -37.894 1.00 1.00 ... ATOM 8 H1 WAT A 1 -77.226 -21.966 -38.717 1.00 1.00 ... ATOM 9 H2 WAT A 1 -77.023 -20.726 -37.674 1.00 1.00 ... TER""" >>> from StringIO import StringIO >>> atoms = parsePDBStream(StringIO(pdb_lines))Current behavior:>>> print(atoms.numResidues()) 1 >>> atoms['A', 1] <Residue: WAT 1 from Chain A from Unknown (9 atoms)>To activate the new behavior (which will be the default behavior in v1.5):>>> hv = atoms.getHierView(ter=True) >>> print(hv.numResidues()) >>> hv['A', 1]
- :func:`.parsePDB` reads
TER
records in PDB files. Atoms and hetero atoms (:term:`hetatm`) that are followed by aTER
record are now flagged as :term:`pdbter`.
Bugfixes:
- Fixed memory leaks in :func:`.uniqueSequences` and :func:`.buildSeqidMatrix`.
New Features:
- New analysis functions :func:`.buildOMESMatrix` and :func:`.buildSCAMatrix` are implemented.
- New :meth:`.AtomGroup.numBytes` method returns an estimate of memory usage.
- New :func:`.countBytes` utility function is added for counting bytes used by NumPy arrays.
Improvements:
- :func:`.parsePDB` resizes data arrays to decrease memory usage.
Bugfixes:
- Fixed memory leaks in MSA :mod:`~.sequence.analysis` functions.
- Fixed potential problems with importing contributed libraries.
Improvements:
- :class:`.AtomGroup`, :class:`.Selection`, and other :class:`.Atomic` classes are picklable.
- Improved equality tests for :class:`.AtomGroup`. Two different instances are considered equal if they contain identical data and coordinate sets.
Bugfixes:
- Selection problem with using :term:`resid` is fixed (:issue:`160`)
- Fixed a memory leak in MSA parsers written in C. When dealing with large files, leak would cause a segmentation fault.
- Fixed a memory leak in MSA parsers written in C. When dealing with large files, leak would cause a segmentation fault.
- Fixed a reference counting problem in MSA parsers in C that would cause segmentation fault when reading files that uses the same label for multiple sequences.
- Updated :func:`.fetchPDBLigand` to use PDB for fetching XML files.
- Revised handling of MSA file formats to avoid exceptions for unknown extensions.
New Features:
- :func:`.parsePDBHeader` function can parse space group information from header section specified as
REMARK 290
, e.g.parsePDBHeader('1mkp', 'space_group')
orparsePDBHeader('1mkp')['space_group']
- :term:`heavy` selection flag is defined as an alias for :term:`noh`.
- :func:`.matchChains` function can match non-hydrogen atoms using
subset='heavy'
keyword argument.- Added
update_coords
keyword argument to :meth:`.PCA.builCovariance`, so that average coordinates calculated internally can be stored in ensemble or trajectory objects used as input.
Improvements:
- Unit tests can be run with Python 2.6 when unittest2 module is installed.
Bugfixes:
- Fixed problems with reading compressed PDB files using Python 3.3.
- Fixed a bug in :func:`.parseSTRIDE` function that prevented reading files.
- Improved parsing of biomolecular transformations.
- Fixed memory allocation in C code used by :func:`.parseMSA` (Python 2.6).
- Fixed a potential name error in trajectory classes.
- Fixed problems in handling compressed files when using Python 2.6 and 3.3.
- Fixed a problem with indexing :class:`.NMA` instances in Python 3 series.
Improvements:
- :func:`.writeNMD` and :func:`.parseNMD` write and read segment names. NMWiz is also improved to handle segment names. Improvements will be available in VMD v1.9.2.
Bugfixes:
- A bug in :func:`.saveAtoms` that would cause :exc:`KeyError` when bonds are set but fragments are not determined is fixed.
- Import ProDy would fail when :envvar:`HOME` is not set. Changed :class:`.PackageSettings` to handle this case graciously.
Changes:
- :func:`.getVMDpath` and :func:`.setVMDpath` functions are deprecated for removal, use :func:`.pathVMD` instead.
- Increased :func:`.blastPDB` timeout to 60 seconds.
- :func:`.extendModel` and :func:`.extendMode` functions have a new option for normalizing extended mode(s).
- :func:`.sampleModes` and :func:`.traverseMode` automatically normalizes input modes.
Bugfixes:
- A bug in :func:`.applyTransformation` is fixed. The function would interpret some external transformation matrices incorrectly.
- A bug in :func:`.fetchPDBLigand` function is fixed.
Improvements:
- :func:`.fetchPDB` and :func:`.fetchPDBfromMirror` functions can handle partial PDB mirrors. See :func:`.pathPDBMirror` for setting a mirror path.
Changes:
- MSE is included in the definition of non-standard amino acids, i.e. :term:`nonstdaa`.
Bugfixes:
- Atom selection problems related to using :term:`all` and :term:`none` in composite selections, e.g.
'calpha and all'
, is fixed by defining these keywords as :ref:`flags`.- Fasta files with sequence labels using multiple pipe characters would cause C parser (and so :func:`.parseMSA`) to fail. This issue is fixed by completely disregarding pipe characters.
- Empty chain identifiers for PDB hits would cause a problem in parsing XML results file and :func:`.blastPDB` would throw an exception. This case is handled by slicing the chain identifier string.
- A problem in :func:`.viewNMDinVMD` related to module imports is fixed.
- A problem with handling weights in :func:`.loadEnsemble` is fixed.
New Features:
- :func:`.buildSeqidMatrix` and :func:`.uniqueSequences` functions are implemented for comparing sequences in an :class:`.MSA` object.
- :func:`.showHeatmap`, :func:`.parseHeatmap`, and :func:`.writeHeatmap` functions are implemented to support VMD plugin Heat Mapper file format.
- :class:`.Sequence` is implemented to handle individual sequence records and point to sequences in :class:`.MSA` instances.
- :ref:`evol-occupancy` application is implemented for refined MSA quality checking purposes.
- :func:`.mergeMSA` function and :ref:`evol-merge` application are implemented for merging Pfam MSA to study multi-domain proteins.
Improvements:
- :func:`.refineMSA` function and :ref:`evol-refine` application can perform MSA refinements by removing similar sequences.
- :func:`.writePDB` function takes beta and occupancy arguments to be outputted in corresponding columns.
- :class:`.MSA` indexing and slicing are revised and improved.
- :func:`.parseMSA` is improved to handle indexing of sequences that have the same label in an MSA file, e.g. domains repeated in a protein.
- :ref:`prody-anm`, :ref:`prody-gnm`, and :ref:`prody-pca` applications can write heatmap files for visualization using NMWiz and Heatmapper plugins.
- Several improvements made to handling sequence labels in Pfam MSA files. Files that contain sequence parts with same protein UniProt ID are handled delicately.
Changes:
- ProDy will not emit a warning message when a wwPDB server is not set using :func:`.wwPDBServer`, and use the default US server.
- Indexing :class:`.MSA` returns :class:`.Sequence` instances.
- Iterating over :class:`.MSA` and :class:`.MSAFile` yields :class:`.Sequence` instances.
Bugfixes:
- Fixed a syntax problem that prevented running ProDy using Python 2.6.
- Fixed :class:`.NMA` indexing problem that was introduced in v1.4.
- NMWiz can visualize heatmaps linked to structural view via Heatmapper. Clicking on the heatmap will highlight atom or residue pairs.
- ProDy interface has the option to write and load cross-correlations.
- NMWiz can determined whether a model is an extended model. For extended models plotting mobility has been improved. Only a single value per residue will be plotted, and clicking on the plot will highlight all of the residue atoms.
New Features:
Python 3 Support
- ProDy has been refactored to support Python 3. Windows installers for Python 2.6, 2.7, 3.1, and 3.2 are available in :ref:`getprody`.
- Unit tests are compatible with Python 2.7 and 3.2, and running them with other versions gives errors due to unavailability of some :mod:`unittest` features.
Sequence Analysis
- New applications :ref:`evol-apps` are available.
- :func:`.searchPfam` and :func:`.fetchPfamMSA` functions are implemented for searching and retrieving Pfam data. See :ref:`msafiles` for usage examples.
- :class:`.MSAFile` class, :func:`.parseMSA` and :func:`.writeMSA` functions are implemented for reading and writing multiple sequence alignments. See :ref:`msafiles` for usage examples.
- :class:`.MSA` class has been implemented for storing and manipulating MSAs in memory.
- :func:`.calcShannonEntropy`, :func:`.buildMutinfoMatrix`, and :func:`.calcMSAOccupancy` functions are implemented implemented for MSA analysis. See :ref:`msa-analysis` for usage examples.
- :func:`.showShannonEntropy`, :func:`.showMutinfoMatrix`, and :func:`.showMSAOccupancy` functions are implemented implemented for MSA analysis. See :ref:`msa-analysis` for usage examples.
- :func:`.applyMutinfoCorr` and :func:`.applyMutinfoNorm` functions are implemented for applying normalization and corrections to mutual information matrices.
- :func:`.calcRankorder` function is implemented for identifying highly correlated/co-evolving pairs of residues.
Bugfix:
- Fixed selection issues involving use of
x
or negative numbers.