libmove3d
3.13.0
|
00001 #ifndef PROTEIN_H 00002 #define PROTEIN_H 00003 00004 #define MAX_NAME_LENGTH 50 00005 00006 00007 typedef enum { 00008 ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, 00009 LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, 00010 ALAH, ARGH, ASNH, ASPH, CYSH, GLNH, GLUH, GLYH, HISH, ILEH, 00011 LEUH, LYSH, METH, PHEH, PROH, SERH, THRH, TRPH, TYRH, VALH 00012 } residueTypes; 00013 00014 typedef enum { 00015 SULPHUR, SULPHUR_H, OXYGEN, OXYGEN_H, NITROGEN, NITROGEN_H, NITROGEN_FULL, 00016 CARBON, HYDROGEN, HYDROGEN_P, BROMINE, IODINE, FLUORINE, PHOSPHORUS, CHLORINE 00017 } atomTypes; 00018 00019 00020 /********************************************************************** 00021 * Protein Structure Format (PSF) * 00022 **********************************************************************/ 00023 00024 typedef struct s_atom { 00025 struct s_residue *residuePt; 00026 int serial; 00027 char name[5]; 00028 atomTypes atomType; 00029 double pos[3]; 00030 int changedpos; // indicates if pos has been modified 00031 int inapc; // indicates if the atom is in an articulated chain (NECESSARY ???) 00032 double vdwR; 00033 int nbondedA; 00034 struct s_atom **bondedAlist; 00035 int amber_index; 00036 } atom; 00037 00038 00039 typedef struct s_residue { 00040 struct s_AAchain *chainPt; 00041 char chainID[2]; 00042 int subchainind; 00043 int resSeq; 00044 char resName[4]; 00045 residueTypes resType; 00046 int flagH; // indicates if it contains hydrogen atoms 00047 int flagCterm;// indicates if it is a C terminal residue with OXT 00048 int flagNterm;// indicates if it is a N terminal residue with 3 H atoms 00049 // NOTE : use pseudo backbone and side-chain 00050 int nbkbatoms; 00051 int nschatoms; 00052 // NOTE : atoms in lists have precise order (defined for BCD) 00053 struct s_atom **bkbAlist; 00054 struct s_atom **schAlist; 00055 struct s_residue *next; 00056 struct s_residue *prev; 00057 } residue; 00058 00059 00060 typedef struct s_AAchain { 00061 struct s_protein *proteinPt; 00062 int nresidues; 00063 struct s_residue **reslist; 00064 //struct s_AAchain *next; 00065 } AAchain; 00066 00067 00068 typedef struct s_protein { 00069 char name[MAX_NAME_LENGTH]; 00070 int nchains; 00071 struct s_AAchain **chainlist; 00072 } protein; 00073 00074 #endif