GridMap.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 "InputData.h"
  20. struct GridMap
  21. {
  22.     int atomType;          // corresponds to receptor numbers????
  23.     bool isCovalent;
  24.     int isHBonder;
  25.     char filename[MAX_CHARS];
  26.     char type[3];           // eg HD or OA or NA or N
  27.     double constant;        // this will become obsolete
  28.     double volProbe;
  29.     double solparProbe;
  30.     // new 6/28
  31.     double Rij;
  32.     double epsij;
  33.     HBondType hbond;       // hbonding character
  34.     double RijHB;
  35.     double epsijHB;
  36.     // per receptor type parameters, ordered as in receptorTypes
  37.     double nbpR[NUM_RECEPTOR_TYPES];   // radius of energy-well minimum
  38.     double nbpEps[NUM_RECEPTOR_TYPES]; // depth of energy-well minimum
  39.     int xA[NUM_RECEPTOR_TYPES]; // generally 12
  40.     int xB[NUM_RECEPTOR_TYPES]; // 6 for non-hbonders 10 for h-bonders
  41.     int hbonder[NUM_RECEPTOR_TYPES];
  42.     double *energies;  // output energies, this array will be saved to file
  43.     GridMap();
  44. };
  45. class GridMapList
  46. {
  47. public:
  48.     GridMapList(LogFile *logFile);
  49.     ~GridMapList();
  50.     // Allocates gridmaps.
  51.     // "num" is the number of maps to be created: the number of ligand atom types, plus 1 for the electrostatic map,
  52.     // plus 1 for the desolvation map. (the floating grid should not be included here, see enableFloatingGrid)
  53.     // Keep in mind that AutoDock can only read in MAX_MAPS maps.
  54.     void setNumMaps(int numMaps);
  55.     // Enables the floating grid. By default, the floating grid is disabled.
  56.     void enableFloatingGrid();
  57.     // Allocates memory for output energies.
  58.     void prepareGridmaps(int numGridPointsPerMap);
  59.     // TODO: unify functions: setNumMaps, enableFloatingGrid, prepareGridmaps, to:
  60.     // void initialize(int numMaps, bool enableFloatingGrid, int numGridPointsPerMap);
  61.     // Saves all energies and possibly the floating grid to files
  62.     void initFileHeader(const InputData *input, const char *gridParameterFilename);
  63.     void saveElectrostaticMap() const;
  64.     void saveAtomMapsAndDesolvMap() const;
  65.     void saveFloatingGrid(const char *floatingGridFilename) const;
  66.     // Writes out summary
  67.     void logSummary();
  68.     // Read/write access to maps
  69.     GridMap &operator [](int i)             { return gridmaps[i]; }
  70.     GridMap &getElectrostaticMap()          { return gridmaps[elecIndex]; }
  71.     GridMap &getDesolvationMap()            { return gridmaps[desolvIndex]; }
  72.     float *getFloatingGridMins() const      { return floatingGridMins; }
  73.     // Read-only access to maps
  74.     const GridMap &operator [](int i) const { return gridmaps[i]; }
  75.     const GridMap &getElectrostaticMap()const{ return gridmaps[elecIndex]; }
  76.     const GridMap &getDesolvationMap() const{ return gridmaps[desolvIndex]; }
  77.     int getNumAtomMaps() const              { return numAtomMaps; }
  78.     int getNumMaps() const                  { return numMaps; }
  79.     int getNumMapsInclFloatingGrid() const;
  80.     int getElectrostaticMapIndex() const    { return elecIndex; }
  81.     int getDesolvationMapIndex() const      { return desolvIndex; }
  82.     bool containsFloatingGrid() const       { return useFloatingGrid; }
  83. private:
  84.     LogFile *logFile;
  85.     int numMaps, numAtomMaps, elecIndex, desolvIndex;
  86.     GridMap *gridmaps;
  87.     bool useFloatingGrid;
  88.     float *floatingGridMins;
  89.     int numGridPointsPerMap;
  90.     char fileHeader[1<<14];
  91.     int fileHeaderLength;
  92.     void calculateEnergyMinMax(int map, double &energyMin, double &energyMax);
  93.     void saveGridMap(int index) const;
  94. };