SLIKMC  1.0
 All Classes Functions Variables Pages
SLIKMC.h
1 /*
2  * SLIKMC.h
3  *
4  * Created on: Jun 10, 2012
5  * Author: Yajia
6  */
7 
48 #ifndef SLIKMC_H_
49 #define SLIKMC_H_
50 
51 #include "PProtein.h"
52 #include <vector.h>
53 #include "RamachandranPlot.h"
54 #include "BFactor.h"
55 #include "SideChainRotater.h"
56 #include "Prior.h"
57 
62 public:
66  SLIKMCSampler( PProtein* chain);
70  virtual ~SLIKMCSampler();
71 
78  void sample( const double time, const int s, const int e);
79 
84  void enableBfactors( PProtein* chain = NULL);
85 
89  void disableBfactors();
90 
94  void enableSidechain();
95 
99  void disableSidechain();
100 
104  void enableFreeEnd();
105 
109  void disableFreeEnd();
110 
115  void enableLog(const int skip = 0);
116 
120  void disableLog();
121 
126 
131 
135  void enableRamachandran();
136 
140  void disableRamachandran();
141 
145  void dispSettings();
146 
150  void enableCustomPriors();
151 
155  void disableCustomPriors();
156 
160  void addCustomPrior( Prior& prior);
161 
162 private:
171  bool MHStep( double P, double Q, double P_proposal, double Q_proposal);
172 
177  double getP_log( PProtein* chain);
178 
185  double getQ_log( PProtein* chain, const int num_solutions, int& status);
186 
193  double getMetricTensor_log(PProtein* protein, int& status);
194 
198  PProtein* protein;
199 
203  vector<PProtein*> subchains;
204 
208  static const int MAX_IK_SAMPLE = 100;
209 
213  static const int MAX_METROPOLIS_REJECT = 1;
214 
218  static const int MAX_COLLISION_DETECT = 1;
219 
220  BFactor* bfactor;
221  RamachandranPlot* rplot;
222 
223  SidechainRotater* scRotater;
224 
225  bool use_BFactor;
226  bool use_Rotamer;
227  bool freeEnd;
228  bool use_colChecking;
229  bool use_RPlot;
230  bool use_customPrior;
231 
232  bool init_Rotamer;
233  bool logFile;
234  int skipLength;
235 
236  vector<Prior*> priors;
237 };
238 
239 const double EPSILON = 0.0000001;
240 #endif /* SLIKMC_H_ */