// writeDv610.cpp write *.dv files for a protein // used for potential function CALSP #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define NUM_ATOM_TYPE 20 // number of atom types #define NUM_SIMP_GM 5 // number of simplified alphabet for geometric potential #define MIN_DIS_AA 0.789 // minimum distance of Ca - Ca 3A #define MIN_DIS_AB 0.658 // minimum distance of Ca - Cb 2.5A #define MIN_DIS_BB 0.526 // minimum distance of Cb - Cb 2A #define G_TYPE 5 // Gly #define SIM_G_TYPE 3 // simplified glycine type int Num_Simp_Gm=5; int Num_Simp_Ct=20; typedef set ISET; // define a set typedef map CIMAP; typedef map SSMAP; typedef map IIMAP; typedef multimap < float, string > FSMMAP; typedef map IFMAP; typedef multimap ISMMAP; typedef map SFMAP; CIMAP AIMap; // character to integer map CIMAP::iterator aiItr; // pointer of the CIMAP SSMAP AAMap; // string to string map SSMAP::iterator aaItr; // pointer for SSMAP IIMAP PtMap; // map a feature to a integer IIMAP::iterator iiItr; CIMAP SimGmMap; // simplified geometric aa to int map CIMAP::iterator sgItr; CIMAP SimCtMap; // simplified contact aa to int map CIMAP::iterator scItr; CIMAP ProtLenMap; // string and int map for protein length CIMAP::iterator plItr; SSMAP ProtSeqMap; // string and string map for protein sequence SSMAP::iterator psItr; SSMAP ProtSSMap; // ssmap for protein and state sequence SSMAP::iterator pssItr; SFMAP ProtEnMap; SFMAP::iterator sfItr; //IFMAP DVMap; // map feature vector to float IFMAP::iterator ifItr; IFMAP NatDvMap; // native descriptor vector int Num_State=4; int Num_Disbin=1; int Simp_Ct_Type=0; // if 0 type is Li&Liang if 1 type is Murphy&Levy ifstream fileList; ofstream outcst; float cont_Dis[NUM_ATOM_TYPE][NUM_ATOM_TYPE]; int Num_DV=610; // number of descriptors int isD=0; // if =1 write DV for decoy structure string natProtStr; inline int toSG(int state, int sgm) { return state*Num_Simp_Gm+sgm;} inline int gType() { return Num_Simp_Ct==10? 3 : 5;} void error(char* err) {{cout<second; else error("ProtSeqMap error!"); natLength=natStr.length(); for(i=1;i<=natStr.length();++i){ if((sgItr=SimGmMap.find(natStr.substr(i-1,1)))!=SimGmMap.end()) natSGS[i]=sgItr->second; else error("SimGmMap error!"); if((scItr=SimCtMap.find(natStr.substr(i-1,1)))!=SimCtMap.end()) natSCS[i]=scItr->second; else error("SimCtMap error!"); // cout<second; else { cout<first<<" "<second; else error("PtMap error!"); } else if(strcmp(atom1,"CA")==0&&strcmp(atom2,"SC")==0){ cont_type=1; if((iiItr=PtMap.find(100000+gType()*1000+natSCS[pos2]*10+disbin))!=PtMap.end()) dvIndex=iiItr->second; else error("PtMap error!"); } else if(strcmp(atom1,"SC")==0&&strcmp(atom2,"CA")==0){ cont_type=2; if((iiItr=PtMap.find(100000+natSCS[pos1]*1000+gType()*10+disbin))!=PtMap.end()) dvIndex=iiItr->second; else error("PtMap error!"); } else if(strcmp(atom1,"SC")==0&&strcmp(atom2,"SC")==0){ cont_type=3; if((iiItr=PtMap.find(100000+natSCS[pos1]*1000+natSCS[pos2]*10+disbin))!=PtMap.end()) dvIndex=iiItr->second; else error("PtMap error!"); } else { cout<second++; } // calculate geometric part of DVMap for(i=3;i<(natLength-1);++i){ if((iiItr=PtMap.find(toSG(natSS[i],natSGS[i])*100+toSG(natSS[i+1],natSGS[i+1])))!=PtMap.end()) dvIndex=iiItr->second; else error("PtMap error!"); if((ifItr=NatDvMap.find(dvIndex))==NatDvMap.end()) NatDvMap.insert(IFMAP::value_type(dvIndex,1)); else ifItr->second++; } outcst<first<<":"<second<<" "; outcst<>cont_Dis[i][j]; // cout<