ParameterLibrary.h
上传用户:chinafayin
上传日期:2022-04-05
资源大小:153k
文件大小:4k
源码类别:

并行计算

开发平台:

Visual C++

  1. /*
  2.     FastGrid (formerly AutoGrid)
  3.     Copyright (C) 2009 The Scripps Research Institute. All rights reserved.
  4.     Copyright (C) 2009 Masaryk University. All rights reserved.
  5.     AutoGrid is a Trade Mark of The Scripps Research Institute.
  6.     This program is free software; you can redistribute it and/or
  7.     modify it under the terms of the GNU General Public License
  8.     as published by the Free Software Foundation; either version 2
  9.     of the License, or (at your option) any later version.
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.     You should have received a copy of the GNU General Public License
  15.     along with this program; if not, write to the Free Software
  16.     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  17. */
  18. #pragma once
  19. #include "LogFile.h"
  20. #define MAX_LEN_AUTOGRID_TYPE 7
  21. // hbonding character:
  22. enum HBondType
  23. {
  24.     NON,    // none
  25.     DS,     // spherical donor
  26.     D1,     // directional donor
  27.     AS,     // spherical acceptor
  28.     A1,     // acceptor of 1 directional hbond
  29.     A2      // acceptor of 2 directional hbonds
  30. };
  31. struct ParameterEntry
  32. {
  33.     char autogridType[MAX_LEN_AUTOGRID_TYPE + 1];    // autogridType is based on babel_types assigned by PyBabel
  34.     double Rij;         // Lennard-Jones equilibrium separation
  35.     double epsij;       // Lennard-Jones energy well-depth
  36.     double vol;         // solvation volume
  37.     double solpar;      // solvation parameter
  38.     HBondType hbond;    // hbonding character
  39.     double RijHB;       // 12-10 Lennard-Jones equilibrium separation
  40.     double epsijHB;     // 12-10 Lennard-Jones energy well-depth
  41.     int recIndex;       // used to set up receptor atom_types
  42.     int mapIndex;       // used to set up map atom_types
  43.     int bondIndex;      // used to set up bonds; corresponds to the enum in mdist.h
  44. };
  45. // Free energy coefficients and atom parameters
  46. class ParameterLibrary
  47. {
  48. public:
  49.     // Linear free energy model
  50.     double coeff_vdW;                 // Free energy coefficient for van der Waals term
  51.     double coeff_hbond;               // Free energy coefficient for H-bonding term
  52.     double coeff_estat;               // Free energy coefficient for electrostatics term
  53.     double coeff_desolv;              // Free energy coefficient for desolvation term
  54.     double coeff_tors;                // Free energy coefficient for torsional term
  55.     double stderr_vdW;                // Free energy standard error for van der Waals term
  56.     double stderr_hbond;              // Free energy standard error for H-bonding term
  57.     double stderr_estat;              // Free energy standard error for electrostatics term
  58.     double stderr_desolv;             // Free energy standard error for desolvation term
  59.     double stderr_tors;               // Free energy standard error for torsional term
  60.     // Atom parameters
  61.     void insertAtomParameter(const char *key, const ParameterEntry &value);
  62.     ParameterEntry *findAtomParameter(const char *key);
  63.     const ParameterEntry *findAtomParameter(const char *key) const;
  64.     int getAtomParameterRecIndex(const char *key) const;
  65.     ParameterLibrary(LogFile *logFile, const char *modelText, Unbound_Model unboundModel, int debug, int outputLevel = -1);
  66.     ~ParameterLibrary();
  67.     void load(const char *filename);
  68. private:
  69.     enum { MAXKEY = 256*256 };
  70.     // Define tokens for parsing AutoDock atomic parameter files
  71.     enum ParserTokens
  72.     {
  73.         PAR_ = -1,
  74.         PAR_NULL = 0,
  75.         PAR_VDW,
  76.         PAR_HBOND,
  77.         PAR_ESTAT,
  78.         PAR_DESOLV,
  79.         PAR_TORS,
  80.         PAR_ATOM_PAR,
  81.         PAR_COMMENT,
  82.         PAR_UNBOUND
  83.     };
  84.     char filename[MAX_CHARS];
  85.     ParameterEntry *dictionary[MAXKEY];
  86.     LogFile *logFile;
  87.     int debug, outputLevel;
  88.     void readLine(const char *line);
  89.     ParserTokens parseParamLine(const char *line);
  90.     static unsigned int hash(const char *key);
  91. };