BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
MMFF94Parameters.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 // $Id: MMFF94Parameters.h,v 1.1.8.1 2007/03/25 21:25:17 oliver Exp $
5 //
6 
7 // Molecular Mechanics: MMFF94 force field class
8 
9 #ifndef BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H
10 #define BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H
11 
12 #ifndef BALL_COMMON_H
13 # include <BALL/common.h>
14 #endif
15 
16 #ifndef BALL_DATATYPE_HASHMAP_H
17 # include <BALL/DATATYPE/hashMap.h>
18 #endif
19 
20 using namespace std;
21 
22 namespace BALL
23 {
24 
25  class Atom;
26  class Parameters;
27 
28  Position getMMFF94Index(Position atom_type1, Position atom_type2);
29 
32 
33  class MMFF94AtomTypeEquivalences;
34 
35 #define MMFF94_INVALID_VALUE 99.0
36 
38 
42  {
43  public:
44 
46 
47 
49 
51  virtual ~MMFF94ParametersBase() {};
52 
54  const MMFF94ParametersBase& operator = (const MMFF94ParametersBase&)
55  {return *this;};
56 
58  virtual void clear()
59  ;
60 
62  bool isInitialized() { return is_initialized_;}
63 
65  bool readParameters(Parameters& p, const String& section)
67 
69  void setEquivalences(const MMFF94AtomTypeEquivalences& equi) { equiv_ = &equi;}
70 
71  protected:
72 
73  virtual bool setup_(const vector<vector<String> >&) { return true;};
74 
75  bool is_initialized_;
76 
77  // nr of needed fields in parameter files
80  };
81 
82 
88  {
89  public:
90 
93 
96 
99 
101  void clear()
102  ;
103 
108  Index getEquivalence(Position original, Position number) const;
109 
110  protected:
111 
112  virtual bool setup_(const vector<vector<String> >&);
113  vector<vector<Position> > equivalences_;
114  vector<String> names_;
115  vector<bool> exists_;
116  };
117 
118 
121  {
123  MMFF94AtomType();
124 
127 
130 
133 
135  bool pilp;
136 
141 
143  bool arom;
144 
146  bool lin;
147 
149  bool sbmb;
150 
152  bool valid;
153  };
154 
155 
157 
161  public MMFF94ParametersBase
162  {
163  public:
164 
166  MMFF94AtomTypes();
167 
169  MMFF94AtomTypes(const MMFF94AtomTypes& to_copy);
170 
173 
175  const vector<MMFF94AtomType>& getAtomTypes() const { return data_;}
176 
177  protected:
178 
179  virtual bool setup_(const vector<vector<String> >&);
180  vector<MMFF94AtomType> data_;
181  };
182 
184 
189  public MMFF94ParametersBase
190  {
191  public:
192 
194  struct BondData
195  {
196  BondData();
197 
198  double kb_normal;
199  double r0_normal;
201 
203  double kb_sbmb;
204  double r0_sbmb;
206  bool empirical;
207  };
208 
211  {
212  double kb;
213  double r0;
214  };
215 
219 
221 
222 
224 
226  virtual ~MMFF94StretchParameters();
227 
229  const MMFF94StretchParameters& operator = (const MMFF94StretchParameters& param)
230  ;
231 
233  virtual void clear()
234  ;
235 
237  bool assignParameters(Position type1, Position type2, BondData& data) const;
238 
240  bool readEmpiricalParameters(Parameters& p, const String& section);
241 
243  const StretchMap& getBondParameters() const { return parameters_;}
244 
246  const EmpiricalStretchMap& getEmpiricalParameters() const { return empirical_parameters_;}
247 
248  static double radii[];
249  static double electronegatives[];
250 
251  protected:
252 
253  virtual bool setup_(const vector<vector<String> >&);
254 
259  };
260 
262 
267  : public MMFF94ParametersBase
268  {
269  public:
270 
273 
275 
276 
278 
280  virtual ~MMFF94BendParameters();
281 
283  const MMFF94BendParameters& operator = (const MMFF94BendParameters& param)
284  ;
285 
287  virtual void clear()
288  ;
289 
291  bool assignParameters(Position bend_type,
292  Position atom_type1, Position atom_type2, Position atom_type3,
293  double& ka, double& angle) const;
294 
295  protected:
296 
297  virtual bool setup_(const vector<vector<String> >&);
298 
299  Position getIndex_(Position bend_type, Position atom_type1, Position atom_type2, Position atom_type3) const;
300 
302  BendMap parameters_;
303  mutable BendMap buffered_parameters_;
304  };
305 
306 
309 
314  : public MMFF94ParametersBase
315  {
316  public:
317 
320 
322 
323 
325 
327  virtual ~MMFF94StretchBendParameters();
328 
330  const MMFF94StretchBendParameters& operator = (const MMFF94StretchBendParameters& param)
331  ;
332 
334  virtual void clear()
335  ;
336 
338  bool assignParameters(Position stretch_bend_type, const Atom& atom1, const Atom& atom2, const Atom& atom3,
339  double& kba_ijk, double& kba_kji) const;
340 
342  bool readEmpiricalParameters(Parameters& p, const String& section)
343  throw(Exception::FileNotFound);
344 
346 
347  protected:
348 
349  virtual bool setup_(const vector<vector<String> >&);
350 
351  Position getIndex_(Position stretch_bend_type,
352  Position atom_type1, Position atom_type2, Position atom_type3) const;
353 
354  Position getIndexByRow_(Position r1, Position r2, Position r3) const;
355 
357  StretchBendMap parameters_;
358  mutable StretchBendMap buffered_parameters_;
359  StretchBendMap parameters_by_row_;
360  };
361 
364 
369  : public MMFF94ParametersBase
370  {
371  public:
372 
375 
377 
378 
380 
382  virtual ~MMFF94TorsionParameters();
383 
385  const MMFF94TorsionParameters& operator = (const MMFF94TorsionParameters& param)
386  ;
387 
389  virtual void clear()
390  ;
391 
393  bool assignParameters(Position type_index,
394  Index at1, Index at2, Index at3, Index at4,
395  double& v1, double& v2, double& v3) const;
396 
397  protected:
398 
399  virtual bool setup_(const vector<vector<String> >&);
400 
401  String getIndex_(Position type, Position atom_type1, Position atom_type2, Position atom_type3, Position atom_type4) const;
402 
404  TorsionsMap parameters_;
405  mutable TorsionsMap buffered_parameters_;
406  static Position ic_[5];
407  static Position lc_[5];
408  };
409 
412 
417  : public MMFF94ParametersBase
418  {
419  public:
420 
423 
425 
426 
428 
430  virtual ~MMFF94PlaneParameters();
431 
433  const MMFF94PlaneParameters& operator = (const MMFF94PlaneParameters& param)
434  ;
435 
437  virtual void clear()
438  ;
439 
441  bool assignParameters(Index at1, Index at2, Index at3, Index at4, double& v) const;
442 
443  protected:
444 
445  virtual bool setup_(const vector<vector<String> >&);
446 
447  String getIndex_(Position atom_type1, Position atom_type2, Position atom_type3, Position atom_type4) const;
448 
450  PlaneMap parameters_;
451  mutable PlaneMap buffered_parameters_;
452  };
453 
456 
461  : public MMFF94ParametersBase
462  {
463  public:
464 
465  struct VDWEntry
466  {
467  double alpha_i;
468  double ni;
469  double ai;
470  double gi;
472  bool valid;
473  };
474 
476 
477 
479 
481  virtual ~MMFF94VDWParameters();
482 
484  const MMFF94VDWParameters& operator = (const MMFF94VDWParameters& param)
485  ;
486 
488  virtual void clear()
489  ;
490 
492  double getR(Position atom_type) const;
493 
495  const VDWEntry& getParameters(Index at) const;
496 
498  bool assignParameters(Position at1, Position at2, double& rij, double& rij_7_, double& eij) const;
499 
500  protected:
501 
502  virtual bool setup_(const vector<vector<String> >&);
503 
505  vector<VDWEntry> parameters_;
506 
507  // R star ii for all individual atom types
508  mutable vector<double> rs_;
509 
510  // R star ij for pairs of atom types
511  mutable vector<double> rij_;
512  // R star ij ^ 7 for pairs of atom types
513  mutable vector<double> rij_7_;
514  // R star ij and for pairs of atom types
515  mutable vector<double> eij_;
516  // bools if indivual value was already calculated
517  mutable vector<bool> calculated_;
518  };
519 
520 
523 
528  : public MMFF94ParametersBase
529  {
530  public:
531 
533 
534 
536 
538  virtual ~MMFF94ESParameters();
539 
541  const MMFF94ESParameters& operator = (const MMFF94ESParameters& param)
542  ;
543 
545  virtual void clear()
546  ;
547 
552  double getPartialCharge(Position at1, Position at2, Position bt) const;
553 
555  bool readEmpiricalParameters(Parameters& p, const String& section)
557 
559  double getPhi(Index atom_type) const;
560 
562  double getPBCI(Index atom_type) const;
563 
564  protected:
565 
566  virtual bool setup_(const vector<vector<String> >&);
567  Position getIndex_(Position at1, Position at2, Position bt) const;
568 
570  vector<double> parameters_, phis_, pbcis_;
571  };
572 
573 
574 } // namespace BALL
575 
576 #endif // BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H