BoundsMatrixBuilder.h

Go to the documentation of this file.
00001 //
00002 //  Copyright (C) 2004-2006 Rational Discovery LLC
00003 //
00004 //   @@ All Rights Reserved @@
00005 //  This file is part of the RDKit.
00006 //  The contents are covered by the terms of the BSD license
00007 //  which is included in the file license.txt, found at the root
00008 //  of the RDKit source tree.
00009 //
00010 #ifndef _RD_BOUNDS_MATRIX_BUILDER_H_
00011 #define _RD_BOUNDS_MATRIX_BUILDER_H_
00012 
00013 #include <DistGeom/BoundsMatrix.h>
00014 
00015 namespace RDKit {
00016   class ROMol;
00017   namespace DGeomHelpers {
00018     //! Set default upper and lower distance bounds in a distance matrix
00019     /*!   
00020       \param mmat        pointer to the bounds matrix to be altered
00021       \param defaultMin  default value for the lower distance bounds
00022       \param defaultMax  default value for the upper distance bounds
00023 
00024     */
00025     void initBoundsMat(DistGeom::BoundsMatrix *mmat,double defaultMin=0.0,
00026                        double defaultMax=1000.0);
00027     void initBoundsMat(DistGeom::BoundsMatPtr mmat,double defaultMin=0.0,
00028                        double defaultMax=1000.0);
00029 
00030     //! Set upper and lower distance bounds between atoms in a molecule based on topology
00031     /*!   
00032       This consists of setting 1-2, 1-3 and 1-4 distance based on bond lengths,
00033       bond angles and torsion angle ranges. Optionally 1-5 bounds can also be set,
00034       in particular, for path that contain rigid 1-4 paths. 
00035 
00036       The final step involves setting lower bound to the sum of the vdW radii for
00037       the remaining atom pairs.
00038       
00039       \param mol          The molecule of interest
00040       \param mmat         Bounds matrix to the bounds are written
00041       \param set15bounds  If true try to set 1-5 bounds also based on topology
00042       \param scaleVDW     If true scale the sum of the vdW radii while setting lower bounds
00043                           so that a smaller value (0.7*(vdw1 + vdw2) ) is used for paths
00044                           that are less five bonds apart.
00045 
00046       <b>Note</b>
00047       For some strained systems the bounds matrix resulting from setting 1-5 bounds may
00048       fail triangle smoothing. In these cases it is recommended to back out and
00049       recompute the bounds matrix with no 1-5 bounds and with vdW scaling. 
00050     */
00051     void setTopolBounds(const ROMol &mol, DistGeom::BoundsMatPtr mmat,
00052                         bool set15bounds=true, bool scaleVDW=false);
00053   }
00054 }
00055 #endif