00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __PPROTEIN_RESIDUE_H
00021 #define __PPROTEIN_RESIDUE_H
00022
00023 #include "PResidue.h"
00024 #include "PBasic.h"
00025
00026 using namespace std;
00027 class PProtein;
00028
00029
00038 class PProteinResidue: public PResidue {
00039 public:
00040 PProteinResidue(PProtein *loop, const string &shellName): PResidue((PChain *) loop,shellName) {currRot=0;}
00041
00042 PProteinResidue(PProtein *loop, const string &shellName, PResidueSpec &spec): PResidue((PChain *) loop,shellName,spec)
00043 {currRot=0;}
00044
00045 PProteinResidue(PProtein *loop, const string &shellName, PResidue *toConnect): PResidue((PChain *) loop,shellName,toConnect)
00046 {currRot=0;}
00047
00048 PProteinResidue(PProtein *loop, const string &shellName, PResidueSpec &spec, PResidue *toConnect): PResidue((PChain *)
00049 loop,shellName,spec,toConnect)
00050 {currRot=0;}
00051
00055 PProteinResidue *NextResidue() { return (PProteinResidue *) PResidue::NextResidue(); }
00056
00060 PProteinResidue *PreviousResidue() { return (PProteinResidue *) PResidue::PreviousResidue(); }
00061
00065 PProtein *getProtein() { return (PProtein *) PResidue::getChain(); }
00066
00071 void ResetSideChain();
00072
00077 bool ApplyRotamer();
00078
00083 bool ApplyRotamer(int index);
00084
00088 void SaveSideChain();
00089
00090
00091
00096 Real GetPhi();
00097
00098
00103 Real GetPsi();
00104
00109 void SetChi(Real chi, int index);
00110
00115 Real GetChi(int index);
00116
00117 private:
00118
00119
00120 bool TryApplyRotamer(const vector<Real> &rotamer);
00121
00122
00123 unsigned currRot;
00124 vector<Real> originalAngle;
00125
00126 };
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 #endif