ProDy 0.9 Series
===============================================================================
.. contents::
:local:
0.9.4 (Feb 4, 2012)
-------------------------------------------------------------------------------
**Changes**:
* :meth:`setAtomGroup` and :meth:`getAtomGroup` methods are renamed as
:meth:`.Ensemble.setAtoms` and :meth:`.Ensemble.getAtoms`.
* :class:`.AtomGroup` class trajectory methods, i.e.
:meth:`AtomGroup.setTrajectory`,
:meth:`AtomGroup.getTrajectory`,
:meth:`AtomGroup.nextFrame`,
:meth:`AtomGroup.nextFrame`, and
:meth:`AtomGroup.gotoFrame`
methods are deprecated. Version 1.0 will feature a better integration
of :class:`.AtomGroup` and :class:`.Trajectory` classes.
**Bugfixes**:
* Bugfixes in :meth:`.Bond.setACSIndex`, :func:`.saveAtoms`,
and :meth:`.HierView.getSegment`.
* Bugfixes in :class:`.GammaVariableCutoff` and :class:`.GammaStructureBased`
classes.
* Bugfix in :func:`.calcCrossCorr` function.
* Bugfixes in :meth:`.Ensemble.getWeights`, :func:`.showOccupancies`,
:meth:`.DCDFile.flush`.
* Bugfixes in ProDy commands :ref:`prody-blast`, :ref:`prody-fetch`, and
:ref:`prody-pca`.
* Bugfix in :func:`.calcCenter` function.
0.9.3 (Feb 1, 2012)
-------------------------------------------------------------------------------
**New Features**:
* :class:`.DBRef` class is implemented for storing references
to sequence databases parsed from PDB header records.
* Methods for storing coordinate set labels in :class:`.AtomGroup`
instances are implemented: :meth:`~.AtomGroup.getACSLabel`, and
:meth:`~.AtomGroup.getACSLabel`.
* :func:`.calcCenter` and :func:`.moveAtoms` functions
are implemented for dealing with coordinate translation.
* Hierarchical view, :class:`.HierView`, is completely redesigned.
PDB files that contain non-empty segment name column (or when such
information is parsed from a PSF file), new design delicately handles this
information to identify distinct chains and residues. This prevents
merging distinct chains in different segments but with same identifiers
and residues in those with same numbers. New design is also using ordered
dictionaries :class:`collections.OrderedDict` and lists so that chain and
residue iterations yield them in the order they are parsed from file.
These improvements also bring modest improvements in speed.
* :class:`.Segment` class is implemented for handling segments
of atoms defined in molecular dynamics simulations setup, using
:program:`psfgen` for example.
* Context manager methods are added to trajectory classes. A trajectory
file can be opened as follows::
with Trajectory('mdm2.dcd') as traj:
for frame in traj:
calcGyradius(frame)
* :class:`.Chain` slicing is implemented::
p38 = parsePDB('1p38')
chA = p38['A']
res_4to10 = chA[4:11]
res_100toLAST = chA[100:]
* Some support for bonds is implemented to :class:`.AtomGroup` class.
Bonds can be set using :meth:`~.AtomGroup.setBonds` method. All
bonds must be set at once. :meth:`~.AtomGroup.iterBonds` or
:meth:`~.Atom.iterBonds` methods can be used to iterate over bonds
in an AtomGroup or an Atom.
* :func:`.parsePSF` parses bond information and sets to the
atom group.
* :meth:`.Selection.update` method is implemented, which may be useful to
update a distance based selection after coordinate changes.
* :func:`.buildKDTree` and :func:`.iterNeighbors` methods
are implemented for facilitating identification of pairs of atoms that
are proximal.
* :meth:`~.AtomGroup.iterAtoms` method is implemented to all
:mod:`~prody.atomic` classes to provide uniformity for atom iterations.
* :func:`.calcAngle`, :func:`.calcDihedral`, :func:`.calcPhi`,
:func:`.calcPsi`, and :func:`.calcOmega` methods are implemented.
**Improvements**:
* :meth:`.Chain.getSelstr` and :meth:`.Residue.getSelstr` methods are
improved to include the selection string of a :class:`.Selection` when
they are built using one.
**Changes**:
* :class:`.Residue` methods :meth:`~.Residue.getNumber`,
:meth:`~.Residue.setNumber`, :meth:`~.Residue.getName`,
:meth:`~.Residue.setName` methods are deprecated and will be
removed in v1.0.
* :class:`.Chain` methods :meth:`~.Chain.getIdentifier` and
:meth:`~.Chain.setIdentifier` methods are deprecated and will be
removed in v1.0.
* :class:`.Polymer` attribute :attr:`~.Polymer.identifier`
is renamed as :attr:`~.Polymer.chid`.
* :class:`.Chemical` attribute :attr:`~.Chemical.identifier`
is renamed as :attr:`~.Chemical.resname`.
* :meth:`getACSI` and :meth:`setACSI` are renamed as
:meth:`~.AtomGroup.getACSIndex` and
:meth:`~.AtomGroup.setACSIndex`, respectively.
* :func:`calcRadiusOfGyration` is deprecated and will be removed
in v1.0. Use :func:`.calcGyradius` instead.
**Bugfixes**:
* Fixed a problem in :func:`.parsePDB` that caused loosing existing
coordinate sets in an :class:`.AtomGroup` when passed as *ag*
argument.
* Fixed a problem with ``"same ... as ..."`` argument of :class:`.Select`
that selected atoms when followed by an incorrect atom selection.
* Fixed another problem with ``"same ... as ..."`` which result in selecting
multiple chains when same chain identifier is found in multiple segments
or multiple residues when same residue number is found in multiple
segments.
* Improved handling of negative integers in indexing :class:`.AtomGroup`
instances.
0.9.2 (Jan 11, 2012)
-------------------------------------------------------------------------------
**New Features**:
* :program:`prody catdcd` command is implemented for concatenating and/or
slicing :file:`.dcd` files. See :ref:`prody-catdcd` for usage examples.
* :class:`.DCDFile` can be opened in write or append mode, and
coordinate sets can be added using :meth:`~.DCDFile.write` method.
* :func:`.getReservedWords` can be used to get a list of words
that cannot be used to label user data.
* :func:`.confProDy` function is added for configuring ProDy.
* ProDy can optionally backup existing files with :file:`.BAK` (or another)
extension instead of overwriting them. This behavior can be activated
using :func:`.confProDy` function.
**Improvements**:
* :func:`.writeDCD` file accepts :class:`.AtomGroup` or other
:class:`.Atomic` instances as *trajectory* argument.
* :program:`prody align` command can be used to align multiple PDB structures.
* :program:`prody pca` command allows atom selections for DCD files that are
accompanied with a PDB or PSF file.
**Changes**:
* :class:`.DCDFile` instances, when closed, raise exception, similar
to behavior of :class:`file` objects in Python.
* Title of :class:`.AtomGroup` instances resulting from copying an
:class:`.Atomic` instances does not start with 'Copy of'.
* :func:`changeVerbosity` and :func:`getVerbosityLevel` are renamed as
:func:`.setVerbosity` and :func:`.getVerbosity`, respectively.
Old names will be removed in v1.0.
* ProDy applications (commands) module is rewritten to use new
:mod:`argparse` module. See :ref:`prody-apps` for details of changes.
* :mod:`argparse` module is added to the package for Python versions 2.6
and older.
**Bugfixes**:
* Fixed problems in :func:`.loadAtoms` and :func:`.saveAtoms` functions.
* Bugfixes in :func:`.parseDCD` and :func:`.writeDCD` functions for Windows
compatability.
0.9.1 (Nov 9, 2011)
-------------------------------------------------------------------------------
**Bug Fixes**:
* Fixed problems with reading and writing configuration files.
* Fixed problem with importing nose for testing.
0.9 (Nov 8, 2011)
-------------------------------------------------------------------------------
**New Features**:
* `PDBML `_ and `mmCIF `_ files
can be retrieved using :func:`.fetchPDB` function.
* :func:`.getPDBLocalFolder` and :func:`.setPDBLocalFolder` functions are
implemented for local PDB folder management.
* :func:`.parsePDBHeader` is implemented for convenient parsing of
header data from :file:`.pdb` files.
* :func:`.showProtein` is implemented to allow taking a quick look
at protein structure.
* :class:`.Chemical` and :class:`.Polymer` classes are implemented for
storing chemical and polymer component data parsed from PDB header records.
**Changes**:
.. warning:: This release introduces numerous changes in method and function
names all aiming to improve the interactive usage experience. All changes
are listed below. Currently these functions and methods are present in
both old and new names, so code using ProDy must not be affected. Old
function names will be removed from version 1.0, which is expected to
happen late in the first quarter of 2012.
Old function names are marked as deprecated, but ProDy will not issue any
warnings until the end of 2011. In 2012, ProDy will automatically start
issuing :class:`DeprecationWarning` upon calls using old names to remind
the user of the name change.
For deprecated methods that are present in multiple classes, only the
affected modules are listed for brevity.
.. note:: When modifying code using ProDy to adjust the name changes,
turning on deprecation warnings may help locating all use cases of the
deprecated names. See :meth:`.turnonDeprecationWarnings` for this
purpose.
**Functions**:
The following function name changes are mainly to reduce the length of the
name in order to make them more suitable for interactive sessions:
======================================== =====================================
Old name New name
======================================== =====================================
:func:`applyBiomolecularTransformations` :func:`.buildBiomolecules`
:func:`assignSecondaryStructure` :func:`.assignSecstr`
:func:`scanPerturbationResponse` :func:`.calcPerturbResponse`
:func:`calcCrossCorrelations` :func:`.calcCrossCorr`
:func:`calcCumulativeOverlap` :func:`.calcCumulOverlap`
:func:`calcCovarianceOverlap` :func:`.calcCovOverlap`
:func:`showFractOfVariances` :func:`.showFractVars`
:func:`showCumFractOfVariances` :func:`.showCumulFractVars`
:func:`showCrossCorrelations` :func:`.showCrossCorr`
:func:`showCumulativeOverlap` :func:`.showCumulOverlap`
:func:`deform` :func:`.deformAtoms`
:func:`calcSumOfWeights` :func:`.calcOccupancies`
:func:`showSumOfWeights` :func:`.showOccupancies`
:func:`trimEnsemble` :func:`.trimPDBEnsemble`
:func:`getKeywordResidueNames` :func:`.getKeywordResnames`
:func:`setKeywordResidueNames` :func:`.setKeywordResnames`
:func:`getPairwiseAlignmentMethod` :func:`.getAlignmentMethod`
:func:`setPairwiseAlignmentMethod` :func:`.setAlignmentMethod`
:func:`getPairwiseMatchScore` :func:`.getMatchScore`
:func:`setPairwiseMatchScore` :func:`.setMatchScore`
:func:`getPairwiseMismatchScore` :func:`.getMismatchScore`
:func:`setPairwiseMismatchScore` :func:`.setMismatchScore`
:func:`getPairwiseGapOpeningPenalty` :func:`.getGapPenalty`
:func:`setPairwiseGapOpeningPenalty` :func:`.setGapPenalty`
:func:`getPairwiseGapExtensionPenalty` :func:`.getGapExtPenalty`
:func:`setPairwiseGapExtensionPenalty` :func:`.setGapExtPenalty`
======================================== =====================================
**Coordinate methods**:
All :meth:`getCoordinates` and :meth:`setCoordinates` methods in
:mod:`~prody.atomic` and :mod:`~prody.ensemble` classes are renamed as
:meth:`getCoords` and :meth:`setCoords`, respectively.
``getNumOf`` **methods**:
All method names starting with ``getNumOf`` now start with ``num``. This
change brings two advantages: method names (i) are considerably shorter,
and (ii) do not suggest that there might also be corresponding ``set``
methods.
============================ ==================== =========================
Old name New name Affected modules
============================ ==================== =========================
:meth:`getNumOfAtoms` :meth:`numAtoms` :mod:`~prody.atomic`,
:mod:`~prody.ensemble`,
:mod:`.dynamics`
:meth:`getNumOfChains` :meth:`numChains` :mod:`~prody.atomic`
:meth:`getNumOfConfs` :meth:`numConfs` :mod:`~prody.ensemble`
:meth:`getNumOfCoordsets` :meth:`numCoordsets` :mod:`~prody.atomic`,
:mod:`~prody.ensemble`
:meth:`getNumOfDegOfFreedom` :meth:`numDOF` :mod:`.dynamics`
:meth:`getNumOfFixed` :meth:`numFixed` :mod:`~prody.ensemble`
:meth:`getNumOfFrames` :meth:`numFrames` :mod:`~prody.ensemble`
:meth:`getNumOfResidues` :meth:`numResidues` :mod:`~prody.atomic`
:meth:`getNumOfMapped` :meth:`numMapped` :mod:`~prody.atomic`
:meth:`getNumOfModes` :meth:`numModes` :mod:`.dynamics`
:meth:`getNumOfSelected` :meth:`numSelected` :mod:`~prody.ensemble`
:meth:`getNumOfUnmapped` :meth:`numUnmapped` :mod:`~prody.atomic`
============================ ==================== =========================
``getName`` **method**:
:meth:`getName` methods are renamed as :meth:`getTitle` to avoid confusions
that might arise from changes in :mod:`~prody.atomic` method names listed
below. All classes in :mod:`~prody.atomic`, :mod:`~prody.ensemble`, and
:mod:`~prody.dynamics` are affected from this change.
In line with this change, :func:`.parsePDB` and
:func:`.parsePQR` *name* arguments are changed to *title*, but
*name* argument will also work until release 1.0.
This name change conflicted with :meth:`.DCDFile.getTitle` method.
The conflict is resolved in favor of the general :meth:`getTitle` method.
An alternative method will be implemented to handle title strings in
:file:`DCD` files.
``get/set`` **methods of atomic classes**:
Names of ``get`` and ``set`` methods allowing access to atomic data are all
shortened as follows:
=========================== =======================
Old name New name
=========================== =======================
:meth:`getAtomNames` :meth:`getNames`
:meth:`getAtomTypes` :meth:`getTypes`
:meth:`getAltLocIndicators` :meth:`getAltlocs`
:meth:`getAnisoTempFactors` :meth:`getAnisos`
:meth:`getAnisoStdDevs` :meth:`getAnistds`
:meth:`getChainIdentifiers` :meth:`getChains`
:meth:`getElementSymbols` :meth:`getElements`
:meth:`getHeteroFlags` :meth:`getHeteros`
:meth:`getInsertionCodes` :meth:`getIcodes`
:meth:`getResidueNames` :meth:`getResnames`
:meth:`getResidueNumbers` :meth:`getResnums`
:meth:`getSecondaryStrs` :meth:`getSecstrs`
:meth:`getSegmentNames` :meth:`getSegnames`
:meth:`getSerialNumbers` :meth:`getSerials`
:meth:`getTempFactors` :meth:`getBetas`
=========================== =======================
This change affects all :mod:`~prody.atomic` classes,
:class:`.AtomGroup`, :class:`.Atom`, :class:`.Chain`,
:class:`.Residue`, :class:`.Selection` and
:class:`.AtomMap`.
**Other changes in atomic methods**:
* :meth:`getSelectionString` renamed as :meth:`getSelstr`
Methods handling user data (which was previously called attribute) are
renamed as follows:
==================== =======================
Old name New name
==================== =======================
:meth:`getAttribute` :meth:`getData`
:meth:`getAttrNames` :meth:`getDataLabels`
:meth:`getAttrType` :meth:`getDataType`
:meth:`delAttribute` :meth:`delData`
:meth:`isAttribute` :meth:`isData`
:meth:`setAttribute` :meth:`setData`
==================== =======================
**To be removed**:
Finally, the following methods will be removed, but other suitable methods
are overloaded to perform their action:
* removed :meth:`AtomGroup.getBySerialRange`, overloaded
:meth:`.AtomGroup.getBySerial`
* removed :func:`.getProteinResidueNames`, overloaded
:func:`.getKeywordResnames`
* removed :func:`.setProteinResidueNames`, overloaded
:func:`.setKeywordResnames`
**Scripts**:
The way ProDy scripts work has changed. See :ref:`prody-apps` for details.
Using older scripts will start issuing deprecation warnings in 2012.
**Bug Fixes**:
* Bugs in :func:`.execDSSP` and :func:`.execSTRIDE` functions that caused
exceptions when compressed files were passed is fixed.
* A problem in scripts for PCA of DCD files is fixed.
Normal Mode Wizard
^^^^^^^^^^^^^^^^^^
Development of NMWiz is finalized and it will not be distributed in the ProDy
installation package anymore. See :ref:`nmwiz` pages for instructions on
installing it.