00001
00002
00003 #ifndef BALL_SCORING_COMPONENTS_POLARSOLVATION_H
00004 #define BALL_SCORING_COMPONENTS_POLARSOLVATION_H
00005
00006 #include <BALL/SCORING/COMMON/scoringComponent.h>
00007
00008 #include <BALL/SOLVATION/poissonBoltzmann.h>
00009 #include <BALL/SOLVATION/generalizedBornCase.h>
00010
00011 namespace BALL
00012 {
00013
00017 class PolarSolvation
00018 : public ScoringComponent
00019 {
00020
00021 public:
00022
00025 enum CalculationMethod
00026 {
00027
00030 CALCULATION__FRESNO,
00031
00034 CALCULATION__FULL_SLICK,
00035
00038 CALCULATION__FULL_CYCLE,
00039
00042 CALCULATION__FULL_CYCLE_FOCUSED,
00043
00046 CALCULATION__COULOMB,
00047
00050 CALCULATION__EEF1
00051
00052 };
00053
00056 enum AveragingMethod
00057 {
00060 AVERAGING__NONE,
00061
00065 AVERAGING__STATIC,
00066
00070 AVERAGING__RANDOM_FACTOR,
00071
00076 AVERAGING__RANDOM
00077
00078 };
00079
00080
00081 struct Option
00082 {
00083
00086 static const char* POLAR_METHOD;
00087
00090 static const char* POLAR_GB;
00091
00094 static const char* POLAR_AVG;
00095
00098 static const char* POLAR_FOCUS_GRID_AROUND_LIGAND;
00099
00102 static const char* GB_SCALING_FILE;
00103
00106 static const char* UNITE_ATOMS;
00107
00110 static const char* VERBOSITY;
00111
00114 static const char* POLAR_OVERWRITE_RADII;
00115
00118 static const char* POLAR_OVERWRITE_CHARGES;
00119
00122 static const char* POLAR_RADIUS_RULES;
00123
00126 static const char* POLAR_CHARGE_RULES;
00127
00128 };
00129
00130
00131 struct Default
00132 {
00133
00136 static const Size POLAR_METHOD;
00137
00140 static const bool POLAR_GB;
00141
00144 static const Size POLAR_AVG;
00145
00148 static const bool POLAR_FOCUS_GRID_AROUND_LIGAND;
00149
00152 static const String GB_SCALING_FILE;
00153
00156 static const bool UNITE_ATOMS;
00157
00160 static const Size VERBOSITY;
00161
00164 static const bool POLAR_OVERWRITE_RADII;
00165
00168 static const bool POLAR_OVERWRITE_CHARGES;
00169
00172 static const String POLAR_RADIUS_RULES;
00173
00176 static const String POLAR_CHARGE_RULES;
00177
00178 };
00179
00180
00184
00187 PolarSolvation()
00188 ;
00189
00192 PolarSolvation(ScoringFunction& sf)
00193 ;
00194
00197 PolarSolvation(const PolarSolvation& fhb)
00198 ;
00199
00202 virtual ~PolarSolvation()
00203 ;
00204
00206
00209
00212 const PolarSolvation& operator = (const PolarSolvation& fr)
00213 ;
00214
00217 virtual void clear()
00218 ;
00219
00221
00224
00225 bool operator == (const PolarSolvation& fr) const
00226 ;
00227
00229
00232
00235 virtual bool setup()
00236 ;
00237
00239
00242
00245 virtual double calculateScore()
00246 ;
00247
00249
00250 private:
00251
00252
00253
00254 Molecule desolv_protein_;
00255
00256
00257
00258 Molecule desolv_ligand_;
00259
00260
00261
00262 Size calculation_method_;
00263
00264
00265
00266 Size averaging_;
00267
00268
00269
00270 bool unite_atoms_;
00271
00272
00273
00274 Size verbosity_;
00275
00276
00277
00278 FDPB fdpb_;
00279
00280
00281
00282 GeneralizedBornModel gbm_;
00283
00284
00285
00286 bool use_gb_;
00287
00288
00289
00290 float spacing_;
00291
00292
00293
00294 float bulk_water_dc_;
00295
00296
00297
00298 float vacuum_dc_;
00299
00300
00301
00302 bool computeEnergyDifference_(System& system, float& energy)
00303 ;
00304
00305
00306
00307 bool computeESEnergy_(System& system, float& energy)
00308 ;
00309
00310
00311
00312 float computeESInteractionEnergy_(const Molecule& molecule, const
00313 HashMap<const Atom*, float>& p_hash)
00314 ;
00315
00316
00317
00318 bool computeFullCycle_(System& system, Molecule& protein,
00319 Molecule& ligand, float& energy)
00320 ;
00321
00322
00323
00324 Vector3 permuteComponentSigns_(Vector3 vector, Size permutation)
00325 ;
00326
00327
00328
00329
00330 Size uniteAtoms_(Molecule& molecule)
00331 ;
00332
00333 };
00334
00335 }
00336
00337 #endif // BALL_SCORING_COMPONENTS_POLARSOLVATION_H
00338