00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __P_PROTEIN_H
00021 #define __P_PROTEIN_H
00022
00023 #include "PChain.h"
00024 #include "PProteinResidue.h"
00025
00026
00048 class PProtein: public PChain {
00049 public:
00050
00054 PProtein();
00055
00060 PProtein(const string &firstResidueName);
00061
00066 PProtein(const string &firstResidueName, PResidueSpec &firstResidueSpec);
00067
00073 PProtein(PProtein *protein, int resStartIndex, int resEndIndex);
00074
00079 PProtein(int numResidues);
00080
00085 PProtein *getParent() { return (PProtein *) PChain::getParent(); }
00086
00090 PProtein *getTopLevelProtein();
00091
00095 PProteinResidue *getResidue(int localIndex) { return (PProteinResidue *) PChain::getResidue(localIndex); }
00096
00101 PProteinResidue *getResidueByPdbIndex(int pdbIndex);
00102
00109 PProtein *getSubchainByPdbIndices(int startPdbIndex, int endPdbIndex);
00110
00115 int NumBackboneDOFs() const;
00116
00121 int NumSidechainDOFs() const;
00122
00126 void RandomizeSidechainAtRes(int resIndex);
00127
00131 void RandomizeAllSidechains();
00132
00138 void GetEndEffectors(ProteinSide side, PAtom *&endAtom, PAtom *&endPriorAtom);
00139
00144 void GetAnchors(ProteinSide side, PAtom *&endAnchor, PAtom *&endPriorAnchor);
00145
00150 void DisableSidechains();
00151
00156 void DisableSidechains(int resIndex1, int resIndex2);
00157
00161 void EnableSidechains();
00162
00167 void EnableSidechains(int resIndex1, int resIndex2);
00168
00174 void RotateBackbone(int DOF_index, BondDirection dir, Real numDegrees);
00175
00180 void RotateSidechain(int DOF_index, float numDegrees);
00181
00187 PProtein *Clone();
00188
00192 void RandomizeBackbone();
00193
00194 protected:
00195 virtual PResidue *CreateResidue(const string &name) {
00196 return new PProteinResidue(this, name);
00197 }
00198
00199 virtual PResidue *CreateResidue(const string &name, PResidueSpec &spec) {
00200 return new PProteinResidue(this, name, spec);
00201 }
00202
00203 virtual PResidue *CreateResidue(const string &name, PResidue *res) {
00204 return new PProteinResidue(this, name, res);
00205 }
00206
00207 virtual PResidue *CreateResidue(const string &name, PResidueSpec &spec, PResidue *res) {
00208 return new PProteinResidue(this, name, spec, res);
00209 }
00210 };
00211
00212
00213
00214 #endif // __P_PROTEIN_H