BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CHPISlick.h
Go to the documentation of this file.
1 // $Id: CHPI.h,v 1.2.10.1 2007/08/07 16:16:15 bertsch Exp $
2 // Molecular Mechanics: SLICK force field, CH---pi interaction
3 
4 #ifndef BALL_SCORING_COMPONENTS_CHPISLICK_H
5 #define BALL_SCORING_COMPONENTS_CHPISLICK_H
6 
10 
11 namespace BALL
12 {
17  {
18  public:
22  {
23  public:
24 
26  AromaticRing()
27  ;
28 
30  AromaticRing(const AromaticRing& aromatic_ring)
31  ;
32 
34  AromaticRing(const std::vector<Atom*>& atoms)
35  ;
36 
38  const Vector3& getCentre() const
39  ;
40 
42  const Vector3& getNormalVector() const
43  ;
44 
46  void setRing(const std::vector<Atom*>& atoms)
47  ;
48 
49  // accessors for the private data members
50  const std::vector<Atom*>& getRing() const
51  ;
52 
54  void dump(std::ostream& s = std::cout) const
55  ;
56 
57  private:
58 
59  //_ A hash set containing pointers to all ring atoms:
60  std::vector<Atom*> ring_atoms_;
61 
62  //_ The centre of the aromatic ring.
63  Vector3 centre_;
64 
65  //_ The normal vector of the ring plane.
66  Vector3 normal_vector_;
67 
68  //_
69  void computeCentre_()
70  ;
71 
72  //_
73  void computeNormalVector_()
74  ;
75 
76  };
77 
78 
81  class CHGroup
82  {
83  public:
84 
86  CHGroup()
87  ;
88 
90  ~CHGroup()
91  ;
92 
94  CHGroup(const CHGroup& CH_groups)
95  ;
96 
98  CHGroup (const Atom* C_atom, const Atom* H_atom)
99  ;
100 
102  void setCAtom(const Atom* C_atom)
103  ;
104 
106  void setHAtom(const Atom* H_atom)
107  ;
108 
110  void setAtoms(const Atom* C_atom, const Atom* H_atom)
111  ;
112 
114  const Atom* getHAtom() const
115 
116  {
117  return(H_atom_);
118  }
119 
121  const Atom* getCAtom() const
122 
123  {
124  return(C_atom_);
125  }
126 
127  void dump(std::ostream& s = std::cout) const
128  ;
129 
130  private :
131 
132  //_
133  const Atom* H_atom_;
134 
135  //_
136  const Atom* C_atom_;
137 
138  };
139 
140 
141  struct Option
142  {
143 
145  static const String VERBOSITY;
146 
148  static const String CX_DISTANCE_UPPER;
149 
151  static const String CHX_ANGLE_LOWER;
152 
155 
158 
161 
163  static const String ANGLE_TOLERANCE;
164 
166  static const String LIMIT;
167 
170 
171  };
172 
173 
174  struct Default
175  {
176 
178  static const Size VERBOSITY;
179 
181  static const float CX_DISTANCE_UPPER;
182 
184  static const float CHX_ANGLE_LOWER;
185 
187  static const float HX_PROJECTED_DISTANCE_LOWER;
188 
190  static const float HX_PROJECTED_DISTANCE_UPPER;
191 
193  static const float DISTANCE_TOLERANCE;
194 
196  static const float ANGLE_TOLERANCE;
197 
199  static const float LIMIT;
200 
202  static const bool CREATE_INTERACTION_FILE;
203 
204  };
205 
206 
210 
213  CHPISlick()
214  ;
215 
219  ;
220 
223  CHPISlick(const CHPISlick& chpi)
224  ;
225 
228  virtual ~CHPISlick()
229  ;
230 
232 
235 
238  const CHPISlick& operator = (const CHPISlick& chpi)
239  ;
240 
243  virtual void clear()
244  ;
245 
247 
250 
251  bool operator == (const CHPISlick& chpi) const
252  ;
253 
255 
258 
261  virtual bool setup()
262  ;
263 
264  void update(const vector<std::pair<Atom*, Atom*> >&);
265 
269  virtual double updateScore()
270  ;
271 
274 
275  private:
276 
277  //_ A vector containing all possible interactions between aliphatic
278  //_ C-H groups in the sugar and aromatic rings in the receptor.
279  std::vector< std::pair<const AromaticRing*, const CHGroup*> > possible_interactions_;
280 
281  //_ A vector containing all aliphatic C-H groups of the ligand.
282  std::vector<CHGroup> all_CH_groups_;
283 
284  //_ A vector containing all aromatic rings of the receptor.
285  std::vector<AromaticRing> all_aromatic_rings_;
286 
287  //_
288  float CX_distance_upper_;
289 
290  //_
291  float CHX_angle_lower_;
292 
293  //_
294  float HX_projected_distance_lower_;
295 
296  //_
297  float HX_projected_distance_upper_;
298 
299  //_ The tolerance area for creating scores instead of simply counted
300  //_ interactions.
301  float distance_tolerance_;
302  float angle_tolerance_;
303 
304  //_ A limit for ignoring interactions that have only very small
305  //_ scores
306  float limit_;
307 
308  //_ Verbosity of the code
309  Size verbosity_;
310 
311  //_ Flag for writing HIN file containing pseudomolecules for the CHPI
312  //_ interactions found in the system
313  bool write_interactions_file_;
314 
315  };
316 
317 
318 
319 } // namespace BALL
320 
321 #endif // BALL_SCORING_COMPONENTS_CHPISLICK_H
const Atom * getHAtom() const
Definition: CHPISlick.h:114
static const float HX_PROJECTED_DISTANCE_UPPER
Definition: CHPISlick.h:190
static const String LIMIT
Definition: CHPISlick.h:166
static const float LIMIT
Definition: CHPISlick.h:199
static const String CREATE_INTERACTION_FILE
Definition: CHPISlick.h:169
static const Size VERBOSITY
Definition: CHPISlick.h:178
static const String HX_PROJECTED_DISTANCE_LOWER
Definition: CHPISlick.h:154
static const String VERBOSITY
Definition: CHPISlick.h:145
BALL_EXPORT AtomList atoms(const AtomContainer &fragment, const String &expression=String())
static const String DISTANCE_TOLERANCE
Definition: CHPISlick.h:160
static const String CX_DISTANCE_UPPER
Definition: CHPISlick.h:148
static const float CHX_ANGLE_LOWER
Definition: CHPISlick.h:184
static const String ANGLE_TOLERANCE
Definition: CHPISlick.h:163
static const float CX_DISTANCE_UPPER
Definition: CHPISlick.h:181
static const float ANGLE_TOLERANCE
Definition: CHPISlick.h:196
Options options
Definition: CHPISlick.h:273
static const float DISTANCE_TOLERANCE
Definition: CHPISlick.h:193
BALL_EXPORT bool operator==(const String &s1, const String &s2)
static const bool CREATE_INTERACTION_FILE
Definition: CHPISlick.h:202
const Atom * getCAtom() const
Definition: CHPISlick.h:121
static const String HX_PROJECTED_DISTANCE_UPPER
Definition: CHPISlick.h:157
static const float HX_PROJECTED_DISTANCE_LOWER
Definition: CHPISlick.h:187
static const String CHX_ANGLE_LOWER
Definition: CHPISlick.h:151
#define BALL_EXPORT
Definition: COMMON/global.h:50