00001
00002
00003
00004
00005
00006 #ifndef _RD_UFFBUILDER_H_
00007 #define _RD_UFFBUILDER_H_
00008
00009 #include <vector>
00010 #include <string>
00011
00012 namespace ForceFields {
00013 class ForceField;
00014 namespace UFF {
00015 class AtomicParams;
00016 }
00017 }
00018
00019 namespace RDKit {
00020 class ROMol;
00021 namespace UFF {
00022 typedef std::vector<const ForceFields::UFF::AtomicParams *> AtomicParamVect;
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 ForceFields::ForceField *constructForceField(ROMol &mol,
00038 double vdwThresh=100.0,
00039 int confId=-1);
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 ForceFields::ForceField *constructForceField(ROMol &mol,
00057 const AtomicParamVect ¶ms,
00058 double vdwThresh=100.0,
00059 int confId=-1);
00060
00061 namespace Tools {
00062
00063 void addBonds(const ROMol &mol,const AtomicParamVect ¶ms,
00064 ForceFields::ForceField *field);
00065 int *buildNeighborMatrix(const ROMol &mol);
00066 void addAngles(const ROMol &mol,const AtomicParamVect ¶ms,
00067 ForceFields::ForceField *field,int *neighborMatrix);
00068 void addNonbonded(const ROMol &mol,int confId, const AtomicParamVect ¶ms,
00069 ForceFields::ForceField *field,int *neighborMatrix,
00070 double vdwThresh=100.0);
00071 void addTorsions(const ROMol &mol,const AtomicParamVect ¶ms,
00072 ForceFields::ForceField *field,
00073 std::string torsionBondSmarts="[!$(*#*)&!D1]~[!$(*#*)&!D1]");
00074
00075
00076 }
00077 }
00078 }
00079
00080
00081 #endif