00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef POPTIMIZE_H
00021 #define POPTIMIZE_H
00022
00023 #include "PIKAlgorithms.h"
00024 #include "PConstants.h"
00025 #include "PExtension.h"
00026 #include "PBasic.h"
00027
00028 #define pi 3.14159265
00029 #define deg2rad pi/180.0e0
00030 #define rad2deg 180.0e0/pi
00031
00037 struct OptimalSol {
00038 vector<IKSolutions> LoopSol;
00039 vector<double> NonLoopSol;
00040 };
00041
00042 class POptimize{
00043 public:
00050 POptimize(vector<PProtein*> loops, vector< vector<CDof> > Dofs);
00051
00057 OptimalSol OptimizeNullSpace(FunctFunctor *FunctToOptimize);
00058
00064 OptimalSol Optimize(FunctFunctor *FunctToOptimize, DerivFunctor *DerivOfFunct);
00070 OptimalSol OptimizeNullSpace(FunctFunctor *FunctToOptimize, vector<double> InitC);
00071
00076 OptimalSol Optimize(FunctFunctor *FunctToOptimize, DerivFunctor *DerivOfFunct, vector<double> InitC);
00077
00078 private:
00079 IKSolution IKCloseChain(PProtein *lp, Vector3 endPriorGoal, Vector3 endGoal, Vector3 endNextGoal);
00080 vector<PProtein*> lps;
00081 vector<int> nRsds, nbb, ndofs;
00082 vector<Vector3> endPG,endG,endNG;
00083 vector<ChainMove> AllMove;
00084 vector< vector<CDof> > DofsToUse;
00085 };
00086
00087 #endif