ProDy 0.9 Series

0.9.4 (Feb 4, 2012)


  • setAtomGroup() and getAtomGroup() methods are renamed as Ensemble.setAtoms() and Ensemble.getAtoms().
  • AtomGroup class trajectory methods, i.e. AtomGroup.setTrajectory(), AtomGroup.getTrajectory(), AtomGroup.nextFrame(), AtomGroup.nextFrame(), and AtomGroup.gotoFrame() methods are deprecated. Version 1.0 will feature a better integration of AtomGroup and Trajectory classes.


0.9.3 (Feb 1, 2012)

New Features:

  • DBRef class is implemented for storing references to sequence databases parsed from PDB header records.

  • Methods for storing coordinate set labels in AtomGroup instances are implemented: getACSLabel(), and getACSLabel().

  • calcCenter() and moveAtoms() functions are implemented for dealing with coordinate translation.

  • Hierarchical view, 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 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.

  • Segment class is implemented for handling segments of atoms defined in molecular dynamics simulations setup, using 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:
  • 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 AtomGroup class. Bonds can be set using setBonds() method. All bonds must be set at once. iterBonds() or iterBonds() methods can be used to iterate over bonds in an AtomGroup or an Atom.

  • parsePSF() parses bond information and sets to the atom group.

  • Selection.update() method is implemented, which may be useful to update a distance based selection after coordinate changes.

  • buildKDTree() and iterNeighbors() methods are implemented for facilitating identification of pairs of atoms that are proximal.

  • iterAtoms() method is implemented to all atomic classes to provide uniformity for atom iterations.

  • calcAngle(), calcDihedral(), calcPhi(), calcPsi(), and calcOmega() methods are implemented.



  • Residue methods getNumber(), setNumber(), getName(), setName() methods are deprecated and will be removed in v1.0.
  • Chain methods getIdentifier() and setIdentifier() methods are deprecated and will be removed in v1.0.
  • Polymer attribute identifier is renamed as chid.
  • Chemical attribute identifier is renamed as resname.
  • getACSI() and setACSI() are renamed as getACSIndex() and setACSIndex(), respectively.
  • calcRadiusOfGyration() is deprecated and will be removed in v1.0. Use calcGyradius() instead.


  • Fixed a problem in parsePDB() that caused loosing existing coordinate sets in an AtomGroup when passed as ag argument.
  • Fixed a problem with "same ... as ..." argument of 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 AtomGroup instances.

0.9.2 (Jan 11, 2012)

New Features:

  • prody catdcd command is implemented for concatenating and/or slicing .dcd files. See prody catdcd for usage examples.
  • DCDFile can be opened in write or append mode, and coordinate sets can be added using write() method.
  • getReservedWords() can be used to get a list of words that cannot be used to label user data.
  • confProDy() function is added for configuring ProDy.
  • ProDy can optionally backup existing files with .BAK (or another) extension instead of overwriting them. This behavior can be activated using confProDy() function.


  • writeDCD() file accepts AtomGroup or other Atomic instances as trajectory argument.
  • prody align command can be used to align multiple PDB structures.
  • prody pca command allows atom selections for DCD files that are accompanied with a PDB or PSF file.


  • DCDFile instances, when closed, raise exception, similar to behavior of file objects in Python.
  • Title of AtomGroup instances resulting from copying an Atomic instances does not start with ‘Copy of’.
  • changeVerbosity() and getVerbosityLevel() are renamed as setVerbosity() and getVerbosity(), respectively. Old names will be removed in v1.0.
  • ProDy applications (commands) module is rewritten to use new argparse module. See ProDy Applications for details of changes.
  • argparse module is added to the package for Python versions 2.6 and older.


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 fetchPDB() function.
  • getPDBLocalFolder() and setPDBLocalFolder() functions are implemented for local PDB folder management.
  • parsePDBHeader() is implemented for convenient parsing of header data from .pdb files.
  • showProtein() is implemented to allow taking a quick look at protein structure.
  • Chemical and Polymer classes are implemented for storing chemical and polymer component data parsed from PDB header records.



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 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.


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 turnonDeprecationWarnings() for this purpose.


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
applyBiomolecularTransformations() buildBiomolecules()
assignSecondaryStructure() assignSecstr()
scanPerturbationResponse() calcPerturbResponse()
calcCrossCorrelations() calcCrossCorr()
calcCumulativeOverlap() calcCumulOverlap()
calcCovarianceOverlap() calcCovOverlap()
showFractOfVariances() showFractVars()
showCumFractOfVariances() showCumulFractVars()
showCrossCorrelations() showCrossCorr()
showCumulativeOverlap() showCumulOverlap()
deform() deformAtoms()
calcSumOfWeights() calcOccupancies()
showSumOfWeights() showOccupancies()
trimEnsemble() trimPDBEnsemble()
getKeywordResidueNames() getKeywordResnames()
setKeywordResidueNames() setKeywordResnames()
getPairwiseAlignmentMethod() getAlignmentMethod()
setPairwiseAlignmentMethod() setAlignmentMethod()
getPairwiseMatchScore() getMatchScore()
setPairwiseMatchScore() setMatchScore()
getPairwiseMismatchScore() getMismatchScore()
setPairwiseMismatchScore() setMismatchScore()
getPairwiseGapOpeningPenalty() getGapPenalty()
setPairwiseGapOpeningPenalty() setGapPenalty()
getPairwiseGapExtensionPenalty() getGapExtPenalty()
setPairwiseGapExtensionPenalty() setGapExtPenalty()

Coordinate methods:

All getCoordinates() and setCoordinates() methods in atomic and ensemble classes are renamed as getCoords() and 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
getNumOfAtoms() numAtoms() atomic, ensemble, dynamics
getNumOfChains() numChains() atomic
getNumOfConfs() numConfs() ensemble
getNumOfCoordsets() numCoordsets() atomic, ensemble
getNumOfDegOfFreedom() numDOF() dynamics
getNumOfFixed() numFixed() ensemble
getNumOfFrames() numFrames() ensemble
getNumOfResidues() numResidues() atomic
getNumOfMapped() numMapped() atomic
getNumOfModes() numModes() dynamics
getNumOfSelected() numSelected() ensemble
getNumOfUnmapped() numUnmapped() atomic

getName method:

getName() methods are renamed as getTitle() to avoid confusions that might arise from changes in atomic method names listed below. All classes in atomic, ensemble, and dynamics are affected from this change.

In line with this change, parsePDB() and parsePQR() name arguments are changed to title, but name argument will also work until release 1.0.

This name change conflicted with DCDFile.getTitle() method. The conflict is resolved in favor of the general getTitle() method. An alternative method will be implemented to handle title strings in 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
getAtomNames() getNames()
getAtomTypes() getTypes()
getAltLocIndicators() getAltlocs()
getAnisoTempFactors() getAnisos()
getAnisoStdDevs() getAnistds()
getChainIdentifiers() getChains()
getElementSymbols() getElements()
getHeteroFlags() getHeteros()
getInsertionCodes() getIcodes()
getResidueNames() getResnames()
getResidueNumbers() getResnums()
getSecondaryStrs() getSecstrs()
getSegmentNames() getSegnames()
getSerialNumbers() getSerials()
getTempFactors() getBetas()

This change affects all atomic classes, AtomGroup, Atom, Chain, Residue, Selection and AtomMap.

Other changes in atomic methods:

  • getSelectionString() renamed as getSelstr()

Methods handling user data (which was previously called attribute) are renamed as follows:

Old name New name
getAttribute() getData()
getAttrNames() getDataLabels()
getAttrType() getDataType()
delAttribute() delData()
isAttribute() isData()
setAttribute() setData()

To be removed:

Finally, the following methods will be removed, but other suitable methods are overloaded to perform their action:

  • removed AtomGroup.getBySerialRange(), overloaded AtomGroup.getBySerial()
  • removed getProteinResidueNames(), overloaded getKeywordResnames()
  • removed setProteinResidueNames(), overloaded setKeywordResnames()


The way ProDy scripts work has changed. See ProDy Applications for details. Using older scripts will start issuing deprecation warnings in 2012.

Bug Fixes:

  • Bugs in execDSSP() and 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 Normal Mode Wizard pages for instructions on installing it.