00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 namespace OpenBabel {
00036
00037
00038 static const int MAXBONDS=300;
00039 static const int MAXFRAGS=200;
00040 static const int MAXCHARS=1000;
00041 static const int MAX_DEPTH=10;
00042 static const int NELEMMAX=120;
00043 #define NELEMMCDL 121
00044
00045
00046 OBMCDL int hydrogenValency(int na);
00047 OBMCDL int maxValency(int na);
00048
00049
00050 OBMCDL int alternate(OBMol * pmol, const int nH[], int bondOrders []);
00051
00052 OBMCDL int alternate(const std::vector<int> aPosition,const std::vector<int> aCharge,
00053 const std::vector<int> aRad,const std::vector<int> nHydr, const std::vector<int> iA1,
00054 const std::vector<int> iA2, std::vector<int> & bondOrders, int nAtoms, int nBonds);
00058
00059 OBMCDL void generateDiagram(OBMol * pmol);
00060
00061 OBMCDL void generateDiagram(const std::vector<int> iA1, const std::vector<int> iA2,
00062 std::vector<double>& rx, std::vector<double>& ry, int nAtoms, int nBonds);
00063 OBMCDL void generateDiagram(OBMol * pmol, std::ostream & ofs);
00064
00065
00066 bool fragmentSearch(OBMol * query, OBMol * structure);
00067 bool fragmentSearch(const std::vector<int> aPositionQuery, const std::vector<int> iA1Query,
00068 const std::vector<int> iA2Query, const std::vector<int> bondTypesQuery,
00069 const std::vector<int> aPositionStructure, const std::vector<int> iA1Structure,
00070 const std::vector<int> iA2Structure, const std::vector<int> bondTypesStructure,
00071 int nAtomsQuery, int nBondsQuery, int nAtomsStructure, int nBondsStructure);
00073 OBMCDL void equivalenceList(OBMol * pmol, std::vector<int>& eqList);
00074 void equivalenceList(const std::vector<int> aPosition,const std::vector<int> aCharge,
00075 const std::vector<int> aRad, const std::vector<int> iA1, const std::vector<int> iA2,
00076 const std::vector<int> bondTypes, std::vector<int>& eqList, int nAtoms, int nBonds);
00077
00078 OBMCDL void addFragment(OBMol * molecule, OBMol * fragment, int molAN, int fragAN, int molBN,
00079 int fragBN, bool isAddition);
00080
00081
00082 OBMCDL void createStereoLists(OBMol * pmol, std::vector<int>& bondStereoList,
00083 std::vector<int>& atomStereoList, std::vector<int>& eqList);
00084 OBMCDL std::string getAtomMCDL(OBMol * pmol, int ntatoms, const std::vector<int> ix,
00085 const std::vector<int> aNumber, const std::vector<int> atomStereoList, const std::vector<int> eqList);
00086 OBMCDL std::string getBondMCDL(OBMol * pmol, int nbStore, int ntatoms, const std::vector<int> ix,
00087 const std::vector<int> aNumber, int bonds[MAXBONDS][4], const std::vector<int> bondStereoList,
00088 const std::vector<int> eqList);
00089 OBMCDL void implementAtomStereo(std::vector<int>& iA1, std::vector<int>& iA2, std::vector<int>& stereoBonds,
00090 const std::vector<double>rx, const std::vector<double> ry, int acount, int bcount, std::string astereo);
00091 OBMCDL void implementBondStereo(const std::vector<int> iA1, const std::vector<int> iA2,
00092 std::vector<double>& rx, std::vector<double>& ry, int acount, int bcount, std::string bstereo);
00093
00094
00095 OBMCDL int groupRedraw(OBMol * pmol, int bondN, int atomN, bool atomNInGroup);
00096
00097
00098 OBMCDL int canonizeMCDL(const std::string atomBlock, std::vector<std::string> & structureList);
00099 OBMCDL bool parseFormula(const std::string formulaString, std::vector <int>& enumber, int & valency);
00100
00101 OBMCDL void prepareTest(OBMol * pmol, std::ostream & ofs);
00102
00103 }
00104