- Atom selection problems related to using all and none in composite selections, e.g. 'calpha and all', is fixed by defining these keywords as Atom flags.
- Fasta files with sequence labels using multiple pipe characters would cause C parser (and so 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 blastPDB() would throw an exception. This case is handled by slicing the chain identifier string.
- A problem in viewNMDinVMD() related to module imports is fixed.
- A problem with handling weights in loadEnsemble() is fixed.
- buildSeqidMatrix() and uniqueSequences() functions are implemented for comparing sequences in an MSA object.
- showHeatmap(), parseHeatmap(), and writeHeatmap() functions are implemented to support VMD plugin Heat Mapper file format.
- Sequence is implemented to handle individual sequence records and point to sequences in MSA instances.
- evol occupancy application is implemented for refined MSA quality checking purposes.
- mergeMSA() function and evol merge application are implemented for merging Pfam MSA to study multi-domain proteins.
- refineMSA() function and evol refine application can perform MSA refinements by removing similar sequences.
- writePDB() function takes beta and occupancy arguments to be outputted in corresponding columns.
- MSA indexing and slicing are revised and improved.
- parseMSA() is improved to handle indexing of sequences that have the same label in an MSA file, e.g. domains repeated in a protein.
- prody anm, prody gnm, and 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.
- Fixed a syntax problem that prevented running ProDy using Python 2.6.
- Fixed 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.
Python 3 Support
- New applications Evol Applications are available.
- searchPfam() and fetchPfamMSA() functions are implemented for searching and retrieving Pfam data. See Pfam Database and MSA Files for usage examples.
- MSAFile class, parseMSA() and writeMSA() functions are implemented for reading and writing multiple sequence alignments. See Pfam Database and MSA Files for usage examples.
- MSA class has been implemented for storing and manipulating MSAs in memory.
- calcShannonEntropy(), buildMutinfoMatrix(), and calcMSAOccupancy() functions are implemented implemented for MSA analysis. See Conservation and Co-evolution Analysis for usage examples.
- showShannonEntropy(), showMutinfoMatrix(), and showMSAOccupancy() functions are implemented implemented for MSA analysis. See Conservation and Co-evolution Analysis for usage examples.
- applyMutinfoCorr() and applyMutinfoNorm() functions are implemented for applying normalization and corrections to mutual information matrices.
- calcRankorder() function is implemented for identifying highly correlated/co-evolving pairs of residues.
- Improved gunzip() function to handle .gz extensions and string buffers.
- getWWPDBFTPServer() and setWWPDBFTPServer() are deprecated for removal in v1.4, use wwPDBServer() instead.
- getPDBLocalFolder() and setPDBLocalFolder() are deprecated for removal in v1.4, use pathPDBFolder() instead.
- getPDBMirrorPath() and setPDBMirrorPath() are deprecated for removal in v1.4, use pathPDBMirror() instead.
- getPDBCluster() is deprecated for removal in v1.4, use listPDBCluster() instead.
- getReservedWords() is deprecated for removal in v1.4, use listReservedWords() instead.
- getNonstdProperties() is deprecated for removal in v1.4, use listNonstdAAProps() instead.
- Fixed a bug in HierView that would cause wrong assignment of residue/chain indices to atoms when residue or chain atoms are separated by atoms of other entities. This would also caused problems when making keyword selections, such as protein.
- Added dummy atom check in Ensemble.setAtoms() and Trajectory.setAtoms() methods to avoid indexing problems.
- select module and its documentation are completely rewritten. Select class uses simplest possible parser to evaluate selection strings and achieves more than 25% speed-up on average.
- Atom Selections become more forgiving of small typos, but will issue warning messages when they are detected via SelectionWarning. These messages can be turned of using confProDy()
- Functions used in ProDy Applications have been refactored to allow for using them directly. See apps for their documentation.
If you are upgrading from ProDy v1.1, see also the below changes introduced in v1.2.
- The way that prody fetch command handles files containing PDB identifiers has changed.
Package folder prody is moved into lib folder to prevent exceptions related to importing compiled packages from the installation folder.
Some changes in Trajectory and Ensemble methods related to linking, setting, and selecting atoms were made to make the interface more intuitive. These changes, which may break your code, are as follows:
- AtomGroup instances can be linked to a Trajectory using Trajectory.link() method and linking status of an instance can be checked using Trajectory.isLinked() medhod.
- Trajectory.setAtoms() method accepts AtomGroup and Selection instances and should be used to select a subset of atoms. This method will not link AtomGroup instance to the trajectory and also will not update the reference coordinates of the instance.
- Trajectory.select() and Ensemble.select() methods are removed and their functions are overloaded to Trajectory.setAtoms() and Ensemble.setAtoms() methods, respectively.
- Trajectory.getSelection() and Ensemble.getSelection() methods are removed, use Trajectory.getAtoms() and Ensemble.getAtoms() instead.
- Trajectory reference coordinates must be changed using Trajectory.setCoords() method.
- Atom flags, that are used in Atom Selections, is implemented. See its documentation for handy usage examples.
- sortAtoms() function is implemented.
- pickCentralConf() function is implemented to pick the conformation or the active coordinate set that is closest to the average of coordinate sets.
- writePSF(), a simple PSF file writer, is implemented.
- glob() utility function is implemented.
- iterPDBFilenames() function is implemented, which can be used to iterate over all PDB files stored in a local mirror of Protein Data Bank.
- findPDBFiles() function is implemented, which can be used to access PDB files in a path.
- HierView instances are built more efficiently. Two times speed-up is achieved by delaying instantiation of Chain and Residue instances until they are needed.
- Multiple Atom flags can be used in Atom Selections without using 'and' operator, e.g. 'sidechain carbon' is the same as 'sidechain and carbon'.
- writePDB() accepts Ensemble, Conformation, and Frame instances as atoms argument.
- writePDB() function is around 25% faster.
- pickCentral() is extended to accept Atomic and Ensemble instances. Old function is now pickCentralAtom().
- prody align command and prody_align() function can handle non-protein atom selections (see examples for prody align).
- parsePDB() and writePDB() supports 100K and more atoms.
- showOverlapTable() displays first set of modes along x axis of the plot.
- AtomGroup.setData() does not accept arrays with boolean data type, use AtomGroup.setFlags() instead.
- writePDB() function argument model is changed to csets that indicates the coordinate set index of atoms argument.
- PackageLogger.timing() does not return elapsed time, only logs this information.
- PackageLogger.startLogfile() is deprecated for removal in v1.3, use PackageLogger.start() instead.
- PackageLogger.closeLogfile() is deprecated for removal in v1.3, use PackageLogger.close() instead.
- from prody.utilities import * will not work anymore due to potential name conflicts with Python standard library functions. Import required functions explicitly.
- writePDB() appends .pdb extension to filename when it is not present
- prody select command positional argument order is changed to allow for handling multiple PDBs at a time. Old older will be supported until v1.4, but a warning message will be issued.
- select argument in alignCoordsets() is removed, make selection outside of the function instead.
- AtomGroup.getHeteros() method has been deprecated for removal in v1.3, use getFlags('hetatm') instead.
- AtomMap.getMappedFlags() and AtomMap.getDummyFlags() methods have been deprecated for removal in v1.3, use getFlags('mapped') and getFlags('dummy') instead.
- getVerbosity() and setVerbosity() are deprecated for removal in v1.3, use confProDy() instead which save changes permanently.
- NMA.getModes() and ModeSet.getModes() methods are deprecated for removal in v1.3, use list(), e.g. list(model), instead.
- Fixed a bug in prody contacts command that arose problems when when selecting a subset of the target atoms.
- ProDy Interface shows the size of the trajectory output file for PCA calculations.
- Mode Graphics Options allows for copying arrows settings from one mode to another.
- Color scale method and midpoint for protein coloring based on mobility and bfactors can be adjusted from Protein Graphics Options panel.
- moveAtoms() function is improved to move atoms to a specified location.
- DCDFile and parseDCD() take astype keyword argument for automatic type recasting for coordinate arrays. This option can be used to convert 32-bit coordinate arrays to 64-bit automatically for higher precision calculations.
- Commands prody anm, prody gnm, and prody pca can extend a coarse grained model to backbone or all atoms of the residues. See their documentation pages.
- Color scale used by showOverlapTable() is normalized by default.
- tools module is depracated for removal, use utilities instead.
- array argument in moveAtoms() is replaced with by keyword argument.
- which argument in AtomGroup.copy() method is deprecated for removal in version 1.2.
- DCDFile does not log information for most common type of DCD file, i.e. 32-bit CHARMM format.
- Trajectory.getNextIndex() method is deprecated for removal in v1.2, use nextIndex() instead.
- Fixed several problems in iterNeighbors() function and Contacts class that were introduced after transition to new KDTree interface.
- Fixed a problem in setting selection strings of fragments identified using findFragments().
- Fixed a problem in calcCenter() related to weighted center calculation.
- Fixed a problem of in copying AtomMap instances, which would emerge when bond information was present in unusual mappings, such as when atom orders are changed or an atom is present multiple times in the mapping.
- Fixed a problem in calcPhi() function that raised a name error.
- Fixed a problem in KDTree.getDistances() method that raised a name error when unitcell is provided.
- Fixed a problem in buildDistMatrix() and calcDistance() functions causing miscalculations when unitcell is given.
- Revised KDTree methods dealing with to handle special cases where unitcell might have some dimensions zero.
- buildKDTree() method is removed, earlier than planned due to unexpected bugfix releases.
- Fixed kdtree import problem.
- buildDistMatrix() function that can take periodic boundary conditions is implemented.
- calcDistance() function is improved to take periodic boundary conditions into account when provided by the users.
- Methods to deal with connected subsets of atoms are implemented, see AtomGroup.iterFragments() and AtomGroup.numFragments().
- 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 assignSecstr() and confProDy() for usage details.
- prody align makes use of --select when aligning multiple structures. See usage examples: prody align
- printRMSD() function that prints minimum, maximum, and mean RMSD values when comparing multiple coordinate sets is implemented.
- findFragments() function that identifies fragments in atom subsets, e.g. Selection, is implemented.
- A new KDTree interface with coherent method names and capability to handle periodic boundary conditions is implemented.
- Performance improvements made in saveAtoms() and loadAtoms().
- sliceMode(), sliceModel(), sliceVector(), and reduceModel() functions accept 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 (AtomGroup.iterFragments()) is improved to yield items faster.
- There is a change in the behavior of addition operation on instances of 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.
- buildKDTree() function is deprecated for removal, use the new KDTree class instead.
- A problem in building hierarchical views when making selections using resindex, chindex, and segindex keywords is fixed.
- A problem in Chain and Residue selection strings that would emerge when a HierView is build using a selection is fixed.
- A problem with copying AtomGroup instances whose coordinates are not set is fixed.
- 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 AtomGroup instances in pickCentral() function is fixed.
- A problem in 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 (addFile()) to a Trajectory after atoms were set (setAtoms()). Newly added file would not be associated with the atoms and coordinates parsed from this file would not be set for the AtomGroup instance.
- ProDy can be configured to automatically check for updates on a regular basis, see checkUpdates() and confProDy() functions for details.
- alignPDBEnsemble() function is implemented to align PDB files using transformations calculated in ensemble analysis. See usage example in PCA from a Blast search example.
- 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 Atom Selections for usage details.
- calcCrossProjection() function is implemented.
- Select class raises a 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.
- prody align command accepts percent sequence identity and overlap parameters used when matching chains from given multiple structures.
- When using prody align command to align multiple structure, all models in NMR structures are aligned onto the reference structure.
- prody catdcd command accepts --align SELSTR argument that can be used to align frames when concatenating files.
- showProjection() and showCrossProjection() functions are improved to evaluate list of markers, color, labels, and texts. See usage example in PCA of X-ray structures: Plotting.
- Trajectory instances can be used for calculating and plotting projections using calcProjection(), showProjection(), calcCrossProjection(), and showCrossProjection() functions.
- 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 Atom Selections for definitions of protein and acidic keywords.
- Hit dictionaries from PDBBlastRecord will use percent_overlap instead of percent_coverage. Older key will be removed in v1.1.
- Transformation.get4x4Matrix() method is deprecated for removal in v1.1, use Transformation.getMatrix() method instead.
- A bug in some ProDy Applications 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.
- 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 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.
- prody script is updated. Importing Prody and Numpy libraries are avoided. Script responses to help queries faster. See ProDy Applications for script usage details.
- Added bonded to ... selection method that expands a selection to immediately bound atoms. See Atom Selections for its description.
- fetchPDBLigand() parses bond data from the XML file.
- fetchPDBLigand() can optionally save compressed XML files into ProDy package folder so that frequent access to same files will be more rapid. See confProDy() function for setting this option.
- 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 prody blast command.
- All deprecated method and functions scheduled for removal are removed.
- getEigenvector() and getEigenvalue() methods are deprecated for removal in v1.1, use Mode.getEigvec() and Mode.getEigval() instead.
- getEigenvectors() and getEigenvalues() methods are deprecated for removal in v1.1, use NMA.getEigvecs() and NMA.getEigvals() instead.
- Mode.getCovariance() and ModeSet.getCovariance() methods are deprecated for removal in v1.1, use calcCovariance() method instead.
- Mode.getCollectivity() method is removed, use calcCollectivity() function instead.
- Mode.getFractOfVariance() method is removed, use the new calcFractVariance() function instead.
- Mode.getSqFlucts() method is removed, use calcSqFlucts() function instead.
- Renamed showFractOfVar() function as showFractVars() function instead.
- Removed calcCumOverlapArray(), use calcCumulOverlap() with array=True argument instead.
- Renamed extrapolateModel() as extendModel().
- The relation between AtomGroup, Trajectory, and Frame instances have changed. See Trajectory analysis II and Trajectory output, and Atoms and Frames usage examples.
- AtomGroup cannot be deformed by direct addition with a vector instance.
- Unmapped atoms in AtomMap instances are called dummies. AtomMap.numUnmapped() method, for example, is renamed as AtomMap.numDummies().
- fetchPDBLigand() accepts only filename (instead of save and folder) argument to save an XML file.
- 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 prody blast so that when a path for downloading files are given files are not save to local PDB folder.
- 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.
- Bugfixes in Bond.setACSIndex(), saveAtoms(), and HierView.getSegment().
- Bugfixes in GammaVariableCutoff and GammaStructureBased classes.
- Bugfix in calcCrossCorr() function.
- Bugfixes in Ensemble.getWeights(), showOccupancies(), DCDFile.flush().
- Bugfixes in ProDy commands prody blast, prody fetch, and prody pca.
- Bugfix in calcCenter() function.
DBRef class is implemented for storing references to sequence databases parsed from PDB header records.
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: calcGyradius(frame)
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.
- 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.
- 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.
- 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.
- Fixed problems with reading and writing configuration files.
- Fixed problem with importing nose for testing.
- 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 turnonDepracationWarnings() 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()
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() 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.
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()
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.
- Functions to read and write PQR files: parsePQR() and writePQR().
- Added PDBEnsemble.getIdentifiers() method that returns identifiers of all conformations in the ensemble.
- ProDy tests are incorporated to the package installer. If you are using Python version 2.7, you can run the tests by calling prody.test().
- blastPDB() function and PDBBlastRecord class are rewritten to use faster and more compact code.
- New PackageLogger function is implemented to unify logging and reporting task progression.
- Improvements in PDB ensemble support functions, e.g. trimPDBEnsemble(), are made.
- Improvements in ensemble concatenations are made.
- Bugfixes in PDBEnsemble() slicing operation. This may have affected users when slicing a PDB ensemble for plotting projections in color for different forms of the protein.
- fetchPDBClusters(), loadPDBClusters(), and getPDBCluster() functions are implemented for handling PDB sequence cluster data. These functions can be used instead of blastPDB() function for fast access to structures of the same protein (at 95% sequence identity level) or similar proteins.
- Perturbation response scanning method described in [CA09] is implemented as scanPerturbationResponse() based on the code provided by Ying Liu.
- fetchPDBLigand() returns the URL of the XML file in the ligand data dictionary.
- Name of the ProDy configuration file in user home directory is renamed as .prodyrc (used to be .prody).
- applyBiomolecularTransformations() and assignSecondaryStructure() functions raise ValueError when the function fails to perform its action due to missing data in header dictionary.
- fetchPDB() decompresses PDB files found in the working directory when user asks for decompressed files.
- parsePDB() appends chain and subset arguments to AtomGroup() name.
- chain argument is added to PDBBlastRecord.getHits().
- Bugfixes in parseDSSP(): one emerged problems in lines indicating chain breaks, another did not parse bridge-partners correctly. Both fixes are contributed by Kian Ho.
- Bugfix in parsePDB() function. When only header is desired (header=True, model=0), would return a tuple containing an empty atom group and the header.
- Unit tests for proteins and select modules are developed.
- fetchLigandData() is implemented for fetching ligand data from Ligand Expo.
- parsePSF() function is implemented for parsing X-PLOR format PSF files.
- A bug in AtomGroup.copy() method is fixed. When AtomGroup instance itself is copied, deep copies of data arrays were not made.
- A bug in Select class raising exceptions when negative residue number values are present is fixed.
- Another bug in Select class misinterpreting same residue as ... statement when specific chains are involved is fixed.
- A bug in AtomGroup.addCoordset() method duplicating coordinates when no coordinate sets are present in the instance is fixed.
After installing v0.8, you may need to make a small change in your existing scripts. If you are using Ensemble class for analyzing PDB structures, rename it as PDBEnsemble. See the other changes that may affect your work below and the class documentation for more information.
- DCDFile is implemented for handling DCD files.
- Trajectory is implemented for handling multiple trajectory files.
- writeDCD() is implemented for writing DCD files.
- Trajectory analysis example to illustrate usage of new classes for handling DCD files. EDA of MD Trajectories example is updated to use new ProDy classes.
- PCA supports Trajectory and DCDFile instances.
- Ensemble and PDBEnsemble classes can be associated with AtomGroup instances. This allows selecting and evaluating coordinates of subset of atoms. See setAtomGroup(), select(), getAtomGroup(), and getSelection() methods.
- execDSSP(), parseDSSP(), and performDSSP() functions are implemented for executing and parsing DSSP calculations.
- execSTRIDE(), parseSTRIDE(), and performSTRIDE() functions are implemented for executing and parsing DSSP calculations.
- parsePDB() function parses atom serial numbers. Atoms can be retrieved from an AtomGroup instance by their serial numbers using getBySerial() and getBySerialRange() methods.
- calcADPs() function can be used to calculate anisotropic displacement parameters for atoms with anisotropic temperature factor data.
- getRMSFs() is implemented for calculating root mean square fluctuations.
- AtomGroup and Mode or Vector additions are supported. This adds a new coordinate set to the AtomGroup instance.
- getAttrNames() is implemented for listing user set attribute names.
- calcProjection(), showProjection(), and showCrossProjection() functions can optionally calculate/display RMSD along the normal mode.
- ANM, GNM, and PCA applications can optionally write compressed ProDy data files.
- fetchPDB() function can optionally write decompressed files and force copying a file from local mirror to target folder.
- PCA.buildCovariance() and PCA.performSVD() methods accept Numpy arrays as coordinate sets.
- Performance of PCA.buildCovariance() method is optimized for evaluation of PDB ensembles.
- calcRMSD() and superpose() functions are optimized for speed and memory usage.
- Ensemble.getMSFs() is optimized for speed and memory usage.
- Improvements in memory operations in atomic, ensemble, and dynamics modules for faster data (PDB/NMD) output.
- Optimizations in Select and Contacts classes.
- Ensemble does not store conformation names. Instead, newly implemented PDBEnsemble class stores identifiers for individual conformations (PDB IDs). This class should be used in cases where source of individual conformations is important.
- calcProjection(), showProjection(), and showCrossProjection() function calculate/display root mean square deviations, by default.
- Oxidized cysteine residue abbreviation CSO is added to the definition of protein keyword.
- getMSF() method is renamed as getMSFs().
- parseDCD() function returns Ensemble instances.
- A bug in select module causing exceptions when regular expressions are used is fixed.
- Another bug in select module raising exception when “(not ..,” is passed is fixed.
- Various bugfixes in ensemble module.
- Problem in prody fetch that occurred when a file is found in a local mirror is fixed.
- Bugfix in AtomPointer.copy() method.
- NMWiz can be used to compare two structures by calculating and depicting structural changes.
- Arrow graphics is scaled based on a user specified RMSD value.
- NMWiz writes DCD format trajectories for PCA using ProDy. This provides significant speed up in cases where IO rate is the bottleneck.
- Help is provided in a text window to provide a cleaner GUI.
- parseDCD() is implemented for parsing coordinate sets from DCD files.
- parsePDB() parses SEQRES records in header sections.
- Major classes can be instantiated without passing a name argument.
- Default selection in NMWiz ProDy interface is changed to ensure selection only protein Cα atoms.
- Atomic __getattribute__() is overloaded to interpret atomic selections following the dot operator. For example, atoms.calpha is interpreted as atoms.select('calpha'). See :ref:`` for more details.
- AtomGroup class is integrated with HierView class. Atom group instances now can be indexed to get chains or residues and number of chains/residues can be retrieved. A hierarchical view is generated and updated when needed. See :ref:`` for more details.
- matchAlign() is implemented for quick alignment of protein structures. See Extract ligands usage example.
- setAttribute(), getAttribute(), delAttribute(), and isAttribute() functions are implemented for AtomGroup class to facilitate storing user provided atomic data. See Storing data in AtomGroup example.
- saveAtoms() and loadAtoms() functions are implemented to allow for saving atomic data and loading it This saves custom atomic attributes and much faster than parsing data from PDB files.
- calcCollectivity() function is implemented to allow for calculating collectivity of deformation vectors.
- Changes were made in calcADPAxes() function to follow the conventions in analysis ADPs. See its documentation.
- Regular expressions can be used in atom selections. See select module for details.
- User can define selection macros using defSelectionMacro() function. Macros are saved in ProDy configuration and loaded in later sessions. See select module for other related functions.
- parseSparseMatrix() function is implemented for parsing matrices in sparse format. See the usage example in Using an External Matrices.
- deform() function is implemented for deforming coordinate sets along a normal mode or linear combination of multiple modes.
- sliceModel() function is implemented for slicing normal mode data to be used with functions calculating atomic properties using normal modes.
- Atom selections using bare keyword arguments is optimized. New keyword definitions are added. See select module for the complete list.
- A new keyword argument for calcADPAxes() allows for comparing largest axis to the second largest one.
- There are changes in function used to alter definitions of selection keywords. See select for details.
- assignSecondaryStructure() function assigns SS identifiers to all atoms in a residue. Residues with no SS information specified is assigned coil conformation.
- When Ensemble and NMA classes are instantiated with an empty string, instances are called “Unnamed”.
- sliceMode(), sliceVector() and reduceModel() functions return the atom selection in addition to the sliced vector/mode/model instance.
- Default selection for calcGNM() function is set to “calpha”.
- NMWiz supports GNM data and can use ProDy for GNM calculations.
- NMWiz can gather normal mode data from molecules loaded into VMD. This allows NMWiz to support all formats supported by VMD.
- User can write data loaded into NMWiz in NMD format.
- An Arrow Graphics option allows the user to draw arrows in both directions.
- User can select Licorice representation for the protein if model is an all atom mode.
- User can select Custom as the representation of the protein to prevent NMWiz from chancing a user set representation.
- Trace is added as a protein backbone representation option.
- NMWiz remembers all adjustments on arrow graphics for all modes.
- Plotting Clear button clears only atom labels that are associated with the dataset.
- Removing a dataset removes all associated molecule objects.
- Selected atom representations are turned on based on atom index.
- Padding around interface button has been standardized to provide a uniform experience between different platforms.
- performSVD() function is implemented for faster and more memory efficient principal compoment analysis.
- extrapolateModel() function is implemented for extrapolating a coarse-grained model to an all atom model. See the usage example Extend a coarse-grained model.
- plog() is implemented for enabling users to make log entries.
- compare functions are improved to handle insertion codes.
- HierView allows for indexing using chain identifier and residue numbers. See usage example Hierarchical view.
- Chain allows for indexing using residue number and insertion code. See usage example Hierarchical view.
- addCoordset() function accepts Atomic and Ensemble instances as coords argument.
- New method HierView.getAtoms() is implemented.
- AtomGroup set functions check the correctness of dimension of data arrays to prevent runtime problems.
- prody pca script is updated to use the faster PCA method that uses SVD.
- “backbone” definition now includes the backbone hydrogen atom (Thanks to Nahren Mascarenhas for pointing to this discrepancy in the keyword definition).
- setWWPDBFTPServer() and getWWPDBFTPServer() functions allow user to change or learn the WWPDB FTP server that ProDy uses to download PDB files. Default server is RCSB PDB in USA. User can change the default server to one in Europe or Japan.
- setPDBMirrorPath() and getPDBMirrorPath() functions allow user to specify or learn the path to a local PDB mirror. When specified, a local PDB mirror is preferred for accessing PDB files, over downloading them from FTP servers.
- mapOntoChain() function is improved to map backbone or all atoms.
- WWPDB_PDBFetcher can download PDB files from different WWPDB FTP servers.
- WWPDB_PDBFetcher can also use local PDB mirrors for accessing PDB files.
- A bug in WWPDB_PDBFetcher causing exceptions when non-string items passed in a list is fixed.
- An important bug in parsePDB() is fixed. When parsing backbone or Cα atoms, residue names were not checked and this caused parsing water atoms with name "O" or calcium ions with name "CA".
- Biopython module pairwise2 and packages KDTree and Blast are incorporated in ProDy package to make installation easier. Only NumPy needs to be installed before ProDy can be used. For plotting, Matplotlib is still required.
- NMWiz is distributed with ProDy source. On Linux, if VMD is installed, ProDy installer locates VMD plugins folder and installs NMWiz. On Windows, user needs to follow a separate set of instructions (see NMWiz).
- Gamma class is implemented for facilitating use of force constants based on atom type, residue type, or property. An example derived classes are GammaStructureBased and GammaVariableCutoff.
- calcTempFactors() function is implemented to calculate theoretical temperature factors.
- 5 new ProDy Applications are implemented, and existing scripts are improved to output figures.
- getModel() method is implemented to make function development easier.
- resetTicks() function is implemented to change X and/or Y axis ticks in plots when there are discontinuities in the plotted data.
- ANM.buildHessian() and GNM.buildKirchhoff() classes are improved to accept Gamma instances or other custom function as gamma argument. See also Developing Gamma Functions.
- Select class is changed to treat single word keywords differently, e.g. “backbone” or “protein”. They are interpreted 10 times faster and in use achieve much higher speed-ups when compared to composite selections. For example, using the keyword “calpha” instead of the name CA and protein, which returns the same selection, works >20 times faster.
- Optimizations in Select class to increase performance (Thanks to Paul McGuire for providing several Pythonic tips and Pyparsing specific advice).
- applyBiomolecularTransformations() function is improved to handle large biomolecular assemblies.
- Performance optimizations in parsePDB() and other functions.
- Ensemble class accepts Atomic instances and automatically adds coordinate sets to the ensemble.
- PDBlastRecord is renamed as PDBBlastRecord.
- NMA instances can be index using a list or tuple of integers, e.g. anm[1,3,5].
- “ca”, “bb”, and “sc” keywords are defined as short-hands for “calpha”, “backbone”, and “sidechain”, respectively.
- Behavior of calcANM() and calcGNM() functions have changed. They return the atoms used for calculation as well.
- NMWiz can be used as a graphical interface to ProDy. ANM or PCA calculations can be performed for molecules that are loaded in VMD.
- User can set default color for arrow graphics and paths to ANM and PCA scripts.
- Optionally, NMWiz can preserve the current view in VMD display window when loading a new dataset. Check the box in the NMWiz GUI main window.
- A bug that prevented selecting residues from plot window is fixed.
- Membership, equality, and non-equality test operation are defined for all atomic classes. See Operations on Selections.
- Two functions are implemented for dealing with anisotropic temperature factors: calcADPAxes() and buildADPMatrix().
- NMA.setEigens() and NMA.addEigenpair() methods are implemented to assist analysis of normal modes calculated using external software.
- parseNMD() is implemented for parsing NMD files.
- parseModes() is implemented for parsing normal mode data.
- parseArray() is implementing for reading numeric data, particularly normal mode data calculated using other software for analysis using ProDy.
- The method in [BH02] to calculate overlap between covariance matrices is implemented as calcCovOverlap() function.
- trimEnsemble() to trim Ensemble instances is implemented.
- checkUpdates() to check for ProDy updates is implemented.
- Change in default behavior of parsePDB() function. When alternate locations exist, those indicated by A are parsed. For parsing all alternate locations user needs to pass altloc=True argument.
- getSumOfWeights() is renamed as calcSumOfWeights().
- mapAtomsToChain() is renamed as mapOntoChain().
- ProDyStartLogFile() is renamed as startLogfile().
- ProDyCloseLogFile() is renamed as closeLogfile().
- ProDySetVerbosity() is renamed as changeVerbosity().
- A few bugs in ensemble and dynamics classes are fixed.
- Improvements in RCSB_PDBFetcher allow it not to miss a PDB file if it exists in the target folder.
- writeNMD() is fixed to output B-factors (Thanks to Dan Holloway for pointing it out).
- An important fix in sampleModes() function was made (Thanks to Alberto Perez for finding the bug and suggesting a solution).
- Improvements in ANM.calcModes(), GNM.calcModes(), and PCA.calcModes() methods prevent Numpy/Scipy throwing an exception when more than available modes are requested by the user.
- Improvements in blastPDB() enable ProDy throw an exception when no internet connection is found, and warn user when downloads fail due to restriction in network regulations (Thanks to Serkan Apaydin for helping identify these improvements).
- New example Write PDB file.
Changes in dependencies:
- AtomPointer base class for classes pointing to atoms in an AtomGroup.
- AtomPointer instances (Selection, Residue, etc.) can be added. See Operations on Selections for examples.
- Select.getIndices() and Select.getBoolArray() methods to expand the usage of Select.
- sliceVector() and sliceMode() functions.
- saveModel() and loadModel() functions for saving and loading NMA data.
- parsePDBStream() can now parse specific chains or alternate locations from a PDB file.
- alignCoordsets() is implemented to superimpose coordinate sets of an AtomGroup instance.
- A bug in parsePDBStream() that caused unidentified errors when a model in a multiple model file did not have the same number of atoms is fixed.
- Single word keywords not followed by “and” logical operator are not accepted, e.g. “protein within 5 of water” will raise a SelectionError, use “protein and within 5 of water” instead.
- findMatchingChains() is renamed to matchChains().
- showOverlapMatrix() is renamed to showOverlapTable().
- Modules are reorganized.
- proteins.compare functions are improved. Now they perform sequence alignment if simple residue number/identity based matchin does not work, or if user passes pwalign=True argument. This impacts the speed of X-ray ensemble analysis.
- Select can cache data optionally. This results in speeds up from 2 to 50 folds depending on number of atoms and selection operations.
- Implementation of showProjection() is completed.
- For each mode a molecule for drawing arrows and a molecule for showing animation is formed in VMD on demand. NMWiz remembers a color associated with a mode.
- Deselecting a residue by clicking on a plot is possible.
- A bug causing incorrect parsing of NMD files from ANM server is fixed.
- Selection string option allows user to show a subset of arrows matching a VMD selection string. Optionally, this selection string may affect protein and animation representations.
- A bug that caused problems when over plotting modes is removed.
- A bug affecting line width changes in plots is removed.
- Selected residue representations are colored according to the color of the plot.
- Usability improvements.
- Loading the same data file more than once is prevented.
- If a GUI window for a dataset is closed, it can be reloaded from the main window.
- A dataset and GUI can be deleted from the VMD session via the main window.
- Instant documentation is improved.
- Problem with clearing selections is fixed.
- Plotting options frame is populated.
- Multiple modes can be plotted on the same canvas.