| 1 | /********************************************************************** | 
| 2 | patty.h - Programmable atom typer. | 
| 3 |  | 
| 4 | Copyright (C) 1998-2001 by OpenEye Scientific Software, Inc. | 
| 5 | Some portions Copyright (C) 2001-2005 by Geoffrey R. Hutchison | 
| 6 |  | 
| 7 | This file is part of the Open Babel project. | 
| 8 | For more information, see <http://openbabel.sourceforge.net/> | 
| 9 |  | 
| 10 | This program is free software; you can redistribute it and/or modify | 
| 11 | it under the terms of the GNU General Public License as published by | 
| 12 | the Free Software Foundation version 2 of the License. | 
| 13 |  | 
| 14 | This program is distributed in the hope that it will be useful, | 
| 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 17 | GNU General Public License for more details. | 
| 18 | ***********************************************************************/ | 
| 19 |  | 
| 20 | #ifndef OB_PATTY_H | 
| 21 | #define OB_PATTY_H | 
| 22 |  | 
| 23 | namespace OpenBabel | 
| 24 | { | 
| 25 | #define PT_CATION      1 | 
| 26 | #define PT_ANION       2 | 
| 27 | #define PT_ACCEPTOR    3 | 
| 28 | #define PT_POLAR       4 | 
| 29 | #define PT_DONOR       5 | 
| 30 | #define PT_HYDROPHOBIC 6 | 
| 31 | #define PT_OTHER       7 | 
| 32 | #define PT_METAL           8 | 
| 33 |  | 
| 34 | // class introduction in patty.cpp | 
| 35 | class OBAPI patty | 
| 36 | { | 
| 37 | std::vector<OBSmartsPattern*> _sp; | 
| 38 | std::vector<std::string> smarts; | 
| 39 | std::vector<std::string> typ; | 
| 40 | bool debug; | 
| 41 |  | 
| 42 | public : | 
| 43 |  | 
| 44 | patty() | 
| 45 | { | 
| 46 | debug = false; | 
| 47 | } | 
| 48 | patty(char *s) | 
| 49 | { | 
| 50 | debug = false; | 
| 51 | read_rules(std::string(s)); | 
| 52 | } | 
| 53 |  | 
| 54 | patty(const std::string &s) | 
| 55 | { | 
| 56 | debug = false; | 
| 57 | read_rules(s); | 
| 58 | } | 
| 59 | ~patty() | 
| 60 | { | 
| 61 | std::vector<OBSmartsPattern*>::iterator i; | 
| 62 | for (i = _sp.begin();i != _sp.end();i++) | 
| 63 | delete *i; | 
| 64 | } | 
| 65 | void debug_on() | 
| 66 | { | 
| 67 | debug = true; | 
| 68 | } | 
| 69 | void debug_off() | 
| 70 | { | 
| 71 | debug = false; | 
| 72 | } | 
| 73 | void read_rules(const std::string &infile); | 
| 74 | void assign_rules(std::vector<std::string> &rules); | 
| 75 | void assign_types(OBMol &mol,std::vector<std::string> &atm_typ); | 
| 76 | void assign_types(OBMol &mol,std::vector<int> &atm_typ); | 
| 77 | int type_to_int(const std::string &type, bool failOnUndefined= false); | 
| 78 | int Istype(const std::string &type);//!< return atom type index, 0 otherwise | 
| 79 | }; | 
| 80 |  | 
| 81 | } // end namespace OpenBabel | 
| 82 |  | 
| 83 | #endif // OB_PATTY_H | 
| 84 |  | 
| 85 | //! \file patty.h | 
| 86 | //! \brief Programmable atom typer. (abbreviated P.At.Ty.) |