mFES - molecular Finite Element Solver
0.4
|
00001 00010 #ifndef RESIDUE_H 00011 #define RESIDUE_H 00012 00013 #include <string> 00014 #include <vector> 00015 #include <set> 00016 #include <map> 00017 #include <string> 00018 #include "Atom.h" 00019 #include "tCycle.h" 00020 00021 using namespace std; 00022 00037 class Residue { 00038 public: 00039 Residue(): 00040 resName(""), 00041 resNumber(-1), 00042 hasCycle(false) 00043 { 00044 born[0][0] = born[0][1] = born[0][2] = born[1][0] = born[1][1] = born[1][2] = 0.0f; 00045 back[0][0] = back[0][1] = back[0][2] = back[1][0] = back[1][1] = back[1][2] = 0.0f; 00046 00047 } 00048 00049 unsigned int getNrStates(){ 00050 map<string, int> nrStates = { {"ARG", 2}, {"CTE", 2}, {"DPP", 3}, {"EPP", 3}, {"HSP", 3}, {"LYS", 2}, {"NTE", 2}, {"TYR", 2}, {"CYS", 2}}; 00051 return nrStates.at(resName); 00052 } 00053 00054 bool isTitGroup(){ 00055 set<string> validGroups = {"ARG","DPP", "HSP", "NTE", "CTE", "EPP", "LYS", "TYR", "CYS"}; 00056 if(validGroups.find(resName.c_str())!=validGroups.end()){ 00057 return true; 00058 } 00059 return false; 00060 } 00061 00062 void setResidueName(string _resName){ 00063 resName = _resName; 00064 } 00065 00066 string getResidueName(){ 00067 return resName; 00068 } 00069 00070 void setResidueNumber(int _resNumber){ 00071 resNumber = _resNumber; 00072 } 00073 00074 int getResidueNumber(){ 00075 return resNumber; 00076 } 00077 00078 void setAtomList(vector<Atom> &_atomList){ 00079 atomList = _atomList; 00080 } 00081 00082 vector<Atom>& getAtomList(){ 00083 return atomList; 00084 } 00085 00086 void setChainID(char _chainID){ 00087 chainID = _chainID; 00088 } 00089 00090 string getIdentifier(){ 00091 stringstream result; 00092 result << resName << "-" << resNumber; 00093 if (chainID != ' ') 00094 result << "_" << chainID; 00095 return result.str(); 00096 } 00097 00098 void setTCycle(tCycle &_cycle){ 00099 cycle = _cycle; 00100 hasCycle = true; 00101 } 00102 00103 bool haveCycle(){ 00104 return hasCycle; 00105 } 00106 00107 tCycle getTCycle(){ 00108 return cycle; 00109 } 00110 00111 void setBorn(float bornEner, unsigned int cycleNr, unsigned int stateNr){ 00112 born[cycleNr][stateNr] = bornEner; 00113 } 00114 00115 float getBorn(unsigned int cycleNr, unsigned int stateNr){ 00116 return born[cycleNr][stateNr]; 00117 } 00118 00119 void setBack(float backEner, unsigned int cycleNr, unsigned int stateNr){ 00120 back[cycleNr][stateNr] = backEner; 00121 } 00122 00123 float getBack(unsigned int cycleNr, unsigned int stateNr){ 00124 return back[cycleNr][stateNr]; 00125 } 00126 00127 void print(){ 00128 for (unsigned int i = 0; i < atomList.size(); i++){ 00129 Atom currentAtom = atomList.at(i); 00130 cout << currentAtom.pqrLine() << endl; 00131 } 00132 } 00133 00134 private: 00135 string resName; 00136 int resNumber; 00137 char chainID; 00138 vector<Atom> atomList; 00139 tCycle cycle; 00140 bool hasCycle; 00141 float born[2][3]; 00142 float back[2][3]; 00143 }; 00144 00145 #endif