mFES - molecular Finite Element Solver  0.4
Residue.h
Go to the documentation of this file.
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