ProDy 1.0 Series
===============================================================================

.. contents::
   :local:


1.0.4 (May 2, 2012)
-------------------------------------------------------------------------------

**Bugfixes**:

  * Fixed a problem in :func:`.calcPhi` function that raised a name error.

  * Fixed a problem in :meth:`.KDTree.getDistances` method that raised  a
    name error when unitcell is provided.

  * Fixed a problem in :func:`.buildDistMatrix` and :func:`.calcDistance`
    functions causing miscalculations when unitcell is given.

  * Revised :class:`.KDTree` methods dealing with to handle special cases
    where unitcell might have some dimensions zero.

**Changes**:

  * :func:`.buildKDTree` method is removed, earlier than planned due to
    unexpected bugfix releases.


1.0.3 (May 1, 2012)
-------------------------------------------------------------------------------

**Bugfixes**:

  * Fixed :mod:`~prody.kdtree` import problem.

**New Features**:

  * :func:`.buildDistMatrix` function that can take periodic boundary
    conditions is implemented.

**Improvements**:

  * :func:`.calcDistance` function is improved to take periodic boundary
    conditions into account when provided by the users.

1.0.2 (May 1, 2012)
-------------------------------------------------------------------------------

**New Features**:

  * Methods to deal with connected subsets of atoms are implemented, see
    :meth:`.AtomGroup.iterFragments` and :meth:`.AtomGroup.numFragments`.

  * :func:`.pickCentral` method is implemented for picking the atom that
    is closest to the centroid of a group or subset of atoms.

  * ProDy configuration option *auto_secondary* is implemented to
    allow for parsing and assigning secondary structure information from PDB
    file header data automatically.  See :func:`.assignSecstr` and
    :func:`.confProDy` for usage details.

  * :program:`prody align` makes use of *select* when aligning
    multiple structures. See usage examples: :ref:`prody-align`

  * :func:`.printRMSD` function that prints minimum, maximum, and mean RMSD
    values when comparing multiple coordinate sets is implemented.

  * :func:`.findFragments` function that identifies fragments in atom subsets,
    e.g. :class:`.Selection`, is implemented.

  * A new :class:`.KDTree` interface with coherent method names and capability
    to handle periodic boundary conditions is implemented.

**Improvements**:

  * Performance improvements made in :func:`.saveAtoms` and :func:`.loadAtoms`.

  * :func:`.sliceMode`, :func:`.sliceModel`, :func:`.sliceVector`, and
    :func:`.reduceModel` functions accept :class:`.Selection` instances as
    well as selection strings.  In repeated use of this function, if selections
    are already made out of the function, considerable speed-ups are achieved
    when selection is passed instead of selection string.

  * Fragment iteration (:meth:`.AtomGroup.iterFragments`) is improved to yield
    items faster.

**Changes**:

  * There is a change in the behavior of addition operation on instances of
    :class:`.AtomGroup`.  When operands do not have same number of coordinate
    sets, the result will have one coordinate set that is concatenation of the
    *active coordinate sets* of operands.

  * :func:`.buildKDTree` function is deprecated for removal, use the new
    :class:`.KDTree` class instead.

**Bugfixes**:

  * A problem in building hierarchical views when making selections using
    *resindex*, *chindex*, and *segindex* keywords is fixed.

  * A problem in :class:`.Chain` and :class:`.Residue` selection strings
    that would emerge when a :class:`.HierView` is build using a selection
    is fixed.

  * A problem with copying :class:`.AtomGroup` instances whose coordinates
    are not set is fixed.

  * :class:`.AtomGroup` fragment detection algorithm is rewritten to avoid
    the problem of reaching maximum recursion depth for large molecules
    with the old recursive algorithm.

  * A problem with picking central atom of :class:`.AtomGroup` instances
    in :func:`.pickCentral` function is fixed.

  * A problem in :class:`.Select` class that caused exceptions when evaluating
    complex macro definitions is fixed.

  * Fixed a problem in handling multiple trajectory files.  The problem would
    emerge when a file was added (:meth:`~.Trajectory.addFile`) to a
    :class:`.Trajectory` after atoms were set (:meth:`~.Trajectory.setAtoms`).
    Newly added file would not be associated with the atoms and coordinates
    parsed from this file would not be set for the :class:`.AtomGroup`
    instance.


1.0.1 (Apr 6, 2012)
-------------------------------------------------------------------------------

**New Features**:

  * ProDy can be configured to automatically check for updates on a regular
    basis, see :func:`.checkUpdates` and :func:`.confProDy` functions for
    details.

  * :func:`.alignPDBEnsemble` function is implemented to align PDB files using
    transformations calculated in ensemble analysis.  See usage example in
    :ref:`pca-blast` example.

  * :meth:`.PDBConformation.getTransformation` is implemented to return
    the transformation that was used to superpose conformation onto reference
    coordinates. This transformation can be used to superpose the original
    PDB file onto the reference PDB file.

  * Amino acid sequences with regular expressions can be used to make atom
    selections, e.g. ``'sequence "C..C"'``.  See :ref:`selections` for usage
    details.

  * :func:`.calcCrossProjection` function is implemented.

**Improvements**:

  * :class:`.Select` class raises a :class:`.SelectionError` when
    potential typos are detected in a selection string, e.g. ``'chain AB'``
    is a grammatically correct selection string that will return **None**
    since no atoms have chain identifier ``'AB'``.  In such cases, an exception
    noting that values exceed maximum number of characters is raised.

  * :program:`prody align` command accepts percent sequence identity and
    overlap parameters used when matching chains from given multiple
    structures.

  * When using :program:`prody align` command to align multiple structure,
    all models in NMR structures are aligned onto the reference structure.

  * :program:`prody catdcd` command accepts ``--align SELSTR`` argument
    that can be used to align frames when concatenating files.

  * :func:`.showProjection` and :func:`.showCrossProjection` functions are
    improved to evaluate list of markers, color, labels, and texts.  See
    usage example in :ref:`pca-xray-plotting`.

  * :class:`.Trajectory` instances can be used for calculating and plotting
    projections using :func:`.calcProjection`, :func:`.showProjection`,
    :func:`.calcCrossProjection`, and :func:`.showCrossProjection` functions.


**Changes**:

  * Phosphorylated amino acids, phosphothreonine (*TPO*), O-phosphotyrosine
    (*PTR*), and phosphoserine (*SEP*), are recognized as acidic protein
    residues.  This prevents having breaks in protein chains which contains
    phosphorylated residues.  See :ref:`selections` for definitions of
    *protein* and *acidic* keywords.

  * Hit dictionaries from :class:`.PDBBlastRecord` will use *percent_overlap*
    instead of *percent_coverage*.  Older key will be removed in v1.1.

  * :meth:`.Transformation.get4x4Matrix` method is deprecated for removal in
    v1.1, use :meth:`.Transformation.getMatrix` method instead.


**Bugfixes**:

  * A bug in some :ref:`prody-apps` is fixed. The bug would emerge when invalid
    arguments were passed to effected commands and throw an unrelated exception
    hiding the error message related to the arguments.

  * A bug in ``'bonded to ...'`` is fixed that emerged when ``'...'``
    selected nothing.

  * A bug in ``'not'`` selections using ``.`` operator is fixed.

1.0 (Mar 7, 2012)
-------------------------------------------------------------------------------

**Improvements**:

  * :meth:`.ANM.buildHessian` method is not using a KDTree by default, since
    with some code optimization the version not using KDTree is running faster.
    Same optimization has gone into :meth:`.GNM.buildKirchhoff` too, but for
    Kirchoff matrix, version using KDTree is faster and is the default.  Both
    methods have *kdtree* argument to choose whether to use it or not.

  * :program:`prody` script is updated.  Importing Prody and Numpy libraries
    are avoided. Script responses to help queries faster.
    See :ref:`prody-apps` for script usage details.

  * Added ``bonded to ...`` selection method that expands a selection to
    immediately bound atoms.  See :ref:`selections` for its description.

  * :func:`.fetchPDBLigand` parses bond data from the XML file.

  * :func:`.fetchPDBLigand` can optionally save compressed XML files into
    ProDy package folder so that frequent access to same files will be more
    rapid. See :func:`.confProDy` function for setting this option.

  * :class:`.Select` class is revised. All exceptions are handled delicately
    to increase the stability of the class.

  * Distance based atom selection is 10 to 15% faster for atom groups with
    more than 5K atoms.

  * Added uncompressed file saving option to :ref:`prody-blast` command.

**Changes**:

  * All deprecated method and functions scheduled for removal are removed.

  * :meth:`~.Mode.getEigenvector` and :meth:`~.Mode.getEigenvalue` methods are
    deprecated for removal in v1.1, use :meth:`.Mode.getEigvec` and
    :meth:`.Mode.getEigval` instead.

  * :meth:`~.NMA.getEigenvectors` and :meth:`~.NMA.getEigenvalues` methods are
    deprecated for removal in v1.1, use :meth:`.NMA.getEigvecs` and
    :meth:`.NMA.getEigvals` instead.

  * :meth:`.Mode.getCovariance` and :meth:`.ModeSet.getCovariance` methods
    are deprecated for removal in v1.1, use :func:`.calcCovariance` method
    instead.

  * :meth:`Mode.getCollectivity` method is removed, use
    :func:`.calcCollectivity` function instead.

  * :meth:`Mode.getFractOfVariance` method is removed, use the new
    :func:`.calcFractVariance` function instead.

  * :meth:`Mode.getSqFlucts` method is removed, use :func:`.calcSqFlucts`
    function instead.

  * Renamed :func:`showFractOfVar` function as :func:`.showFractVars`
    function instead.

  * Removed :func:`calcCumOverlapArray`, use :func:`.calcCumulOverlap`
    with ``array=True`` argument instead.

  * Renamed :func:`extrapolateModel` as :func:`.extendModel`.

  * The relation between :class:`.AtomGroup`, :class:`.Trajectory`, and
    :class:`.Frame` instances have changed. See :ref:`trajectory2` and
    :ref:`outputtraj`, and :ref:`frame` usage examples.

  * :class:`.AtomGroup` cannot be deformed by direct addition with a vector
    instance.

  * Unmapped atoms in :class:`.AtomMap` instances are called dummies.
    :meth:`.AtomMap.numUnmapped` method, for example, is renamed as
    :meth:`.AtomMap.numDummies`.

  * :func:`.fetchPDBLigand` accepts only *filename* (instead of *save* and
    *folder*) argument to save an XML file.

**Bugfixes**:

  * A problem in distance based atom selection which would could cause problems
    when a distance based selection is made from a selection is fixed.

  * Changed :ref:`prody-blast` so that when a path for downloading files
    are given files are not save to local PDB folder.