5 # The latest update : %G% at %U%
10 #%Z% Usage : pdbFile.h
19 #define PDB_FILE_RECORD_FULL_LENGTH (80)
20 #define PDB_FILE_RECORD_START (0)
21 #define PDB_FILE_RECORD_LENGTH (6)
22 #define PDB_FILE_ATOM_NUMBER_START (6)
23 #define PDB_FILE_ATOM_NUMBER_LENGTH (5)
24 #define PDB_FILE_ATOM_NAME_START (12)
25 #define PDB_FILE_ATOM_NAME_LENGTH (4)
26 #define PDB_FILE_LOCATION_START (16)
27 #define PDB_FILE_LOCATION_LENGTH (1)
28 #define PDB_FILE_RESIDUE_START (17)
29 #define PDB_FILE_RESIDUE_LENGTH (3)
30 #define PDB_FILE_CHAIN_IDENT_START (21)
31 #define PDB_FILE_CHAIN_IDENT_LENGTH (1)
32 #define PDB_FILE_RESNUM_START (22)
33 #define PDB_FILE_RESNUM_LENGTH (4)
34 #define PDB_FILE_INSERTION_START (26)
35 #define PDB_FILE_INSERTION_LENGTH (1)
36 #define PDB_FILE_X_START (30)
37 #define PDB_FILE_X_LENGTH (8)
38 #define PDB_FILE_Y_START (38)
39 #define PDB_FILE_Y_LENGTH (8)
40 #define PDB_FILE_Z_START (46)
41 #define PDB_FILE_Z_LENGTH (8)
42 #define PDB_FILE_OCCUPANCY_START (54)
43 #define PDB_FILE_OCCUPANCY_LENGTH (6)
44 #define PDB_FILE_TEMPERATURE_START (60)
45 #define PDB_FILE_TEMPERATURE_LENGTH (6)
46 #define PDB_FILE_FOOT_START (67)
47 #define PDB_FILE_FOOT_LENGTH (3)
48 #define PDB_FILE_FOOTNOTE_START (70)
49 #define PDB_FILE_FOOTNOTE_LENGTH (10)
50 #define MAX_RESIDUE_NUMBER (20)
51 #define RESIDUE_ONECHAR_MODE (1)
52 #define RESIDUE_THREECHAR_MODE (3)
53 #define pdbRecordAtom ("ATOM ")
54 #define pdbRecordHeteroAtom ("HETATM")
55 #define pdbRecordHelix ("HELIX ")
56 #define pdbRecordSheet ("SHEET ")
57 #define pdbRecordTurn ("TURN ")
58 #define pdbRecordEnd ("END ")
63 typedef char pdbFileParaTypeCharacter;
64 typedef long pdbFileParaTypeInteger;
65 typedef float pdbFileParaTypeReal;
67 typedef struct residueName {
72 typedef struct pdbCoord {
73 pdbFileParaTypeReal x;
74 pdbFileParaTypeReal y;
75 pdbFileParaTypeReal z;
78 typedef enum pdbSecondaryStructureHelixClass {
79 HelixClassRightHandedAlpha = 1,
80 HelixClassRightHandedOmega = 2,
81 HelixClassRightHandedPi = 3,
82 HelixClassRightHandedGammda= 4,
83 HelixClassRightHanded310 = 5,
84 HelixClassLeftHandedAlpha = 6,
85 HelixClassLeftHandedOmega = 7,
86 HelixClassLeftHandedGammda = 9,
87 HelixClassPolyProline = 10,
88 } pdbSecondaryStructureHelixClass;
90 typedef struct pdbSecondaryStructureHelix {
91 int serNum; /* Serial Number */
92 char* helixID; /* HelixID : Three alpahnumeric characters */
93 /* informtion for the initial residue */
94 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
95 char initChainID; /* Chain identifier */
96 int initSeqNum; /* Sequence number of the initial residue */
98 /* informtion for the terminal residue */
99 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
100 char endChainID; /* Chain identifier */
101 int endSeqNum; /* Sequence number of the initial residue */
104 pdbSecondaryStructureHelixClass helixClass;
107 } pdbSecondaryStructureHelix;
109 typedef struct pdbSecondaryStructureSheet {
110 int strand; /* Strand number which starts 1 for eache strand wihtin a sheet and increases by one */
111 char* sheetID; /* Sheet ID */
112 int numStrands; /* Number of strands in sheet */
114 /* initial residue */
115 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
116 char initChainID; /* Chain identifier */
117 int initSeqNum; /* Sequence number of the initial residue */
120 /* informtion for the terminal residue */
121 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
122 char endChainID; /* Chain identifier */
123 int endSeqNum; /* Sequence number of the initial residue */
126 int sense; /* 0: first strand, 1: parallel, -1: anti-paralle */
128 char* curAtom; /* Registration. Atom name in current strand */
129 char* curResName; /* Registration. Residue name in current strand */
130 char curChainID; /* Registration. Chain ID in current strand */
131 int curResSeq; /* Registration. Res sequence in current strand */
132 char curICode; /* Registration. Insertion code in current strand */
134 char* prevAtom; /* Registration. Atom name in current strand */
135 char* prevResName; /* Registration. Residue name in current strand */
136 char prevChainID; /* Registration. Chain ID in current strand */
137 int prevResSeq; /* Registration. Res sequence in current strand */
138 char prevICode; /* Registration. Insertion code in current strand */
139 }pdbSecondaryStructureSheet;
142 typedef struct pdbSecondaryStructureTurn {
143 int serNum; /* Serial Number */
144 char* turnID; /* Turn ID : Three alpahnumeric characters */
145 /* informtion for the initial residue */
146 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
147 char initChainID; /* Chain identifier */
148 int initSeqNum; /* Sequence number of the initial residue */
150 /* informtion for the terminal residue */
151 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
152 char endChainID; /* Chain identifier */
153 int endSeqNum; /* Sequence number of the initial residue */
157 }pdbSecondaryStructureTurn;
159 typedef struct pdbSecondaryStructureNo {
160 int serNum; /* Serial Number */
161 char* noID; /* Turn ID : Three alpahnumeric characters */
162 /* informtion for the initial residue */
163 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
164 char initChainID; /* Chain identifier */
165 int initSeqNum; /* Sequence number of the initial residue */
167 /* informtion for the terminal residue */
168 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
169 char endChainID; /* Chain identifier */
170 int endSeqNum; /* Sequence number of the initial residue */
174 }pdbSecondaryStructureNo;
176 typedef enum pdbFileSecondaryStructureMode {
177 pdbFileSecondaryStructureModeNo = 0,
178 pdbFileSecondaryStructureModeHelix = 1,
179 pdbFileSecondaryStructureModeSheet = 2,
180 pdbFileSecondaryStructureModeTurn = 3
181 } pdbFileSecondaryStructureMode;
183 typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord;
184 struct pdbFileSecondaryStructureRecord {
185 pdbFileSecondaryStructureMode mode;
186 pdbSecondaryStructureHelix* helix;
187 pdbSecondaryStructureSheet* sheet;
188 pdbSecondaryStructureTurn* turn;
189 pdbSecondaryStructureNo* no;
191 pdbFileSecondaryStructureRecord* prev;
192 pdbFileSecondaryStructureRecord* next;
195 typedef struct pdbFileSecondaryStructure {
196 int nSecondaryStructure;
197 pdbFileSecondaryStructureRecord* top;
198 pdbFileSecondaryStructureRecord* SecondaryStructure;
199 } pdbFileSecondaryStructure;
201 typedef struct pdbRecord pdbRecord;
204 pdbFileParaTypeCharacter FullRecord[PDB_FILE_RECORD_FULL_LENGTH+1];
206 pdbFileParaTypeCharacter Record[PDB_FILE_RECORD_LENGTH+1];
208 /* ATOM and HETATM Record */
209 pdbFileParaTypeInteger AtomSerialNumber;
210 pdbFileParaTypeCharacter AtomName[PDB_FILE_ATOM_NAME_LENGTH+1];
211 pdbFileParaTypeCharacter LocationIndicator;
212 pdbFileParaTypeCharacter ResidueName[PDB_FILE_RESIDUE_LENGTH+1];
213 pdbFileParaTypeCharacter ChainIdentifier;
214 pdbFileParaTypeInteger ResidueSequenceNumber;
215 pdbFileParaTypeCharacter InsertionCode;
217 pdbFileParaTypeReal Occupancy;
218 pdbFileParaTypeReal TemperatureFactor;
219 pdbFileParaTypeInteger FootnoteNumber;
220 pdbFileParaTypeCharacter Footnote[PDB_FILE_FOOTNOTE_LENGTH+1];
227 typedef struct pdbFile {
230 pdbFileParaTypeInteger nAtom;
231 pdbFileSecondaryStructure second;
239 /* prototype begin */
240 extern void pdbFileRead(FILE* fpt, pdbFile* pdb);
241 extern void pdbFileWrite(FILE* fpt, pdbFile* pdb);
243 /*werewolf presents*/
245 extern void pdbFileTableWrite(FILE* fpt, pdbFile* pdb);
247 extern void pdbFileWriteSecondaryStructure(FILE* fpt, pdbFileSecondaryStructure* second);
249 extern void pdbMatrixFileFormat(FILE* fpt);
250 extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix);
251 extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);
252 extern void pdbTrans(pdbFile* pdb, Matrix3D Matrix);
254 extern void pdbFileResidueSequenceNumberIncrementAll(pdbFile* pdb, int n);
255 extern void pdbFileResidueSequenceNumberIncrement(pdbFile* pdb, int n);
257 extern void pdbFileChainIdentifierSetAll(pdbFile* pdb, unsigned char c);
258 extern void pdbFileChainIdentifierSet(pdbFile* pdb, unsigned char c);
259 extern unsigned char pdbFileChainIdentifierGet(pdbFile* pdb);
261 extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(pdbFile* pdb);
262 extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
264 extern pdbFileParaTypeReal pdbFileOccupancyGet(pdbFile* pdb);
265 extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
267 extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
269 extern long pdbFileCoordGet(pdbFile* pdb, pdbFileParaTypeReal* x, pdbFileParaTypeReal* y, pdbFileParaTypeReal* z);
270 extern long pdbFileResidueSequenceNumberGet(pdbFile* pdb);
271 extern char* pdbFileResidueNameGet(pdbFile* pdb,int mode);
273 extern pdbRecord* pdbFileTop(pdbFile* pdb);
274 extern pdbRecord* pdbFileTopPointer(pdbFile* pdb);
275 extern pdbRecord* pdbFileNext(pdbFile* pdb);
276 extern pdbRecord* pdbFileNextAtom(pdbFile* pdb);
277 extern pdbRecord* pdbFileNextCA(pdbFile* pdb);
278 extern pdbRecord* pdbFilePrev(pdbFile* pdb);
279 extern pdbRecord* pdbFilePrevAtom(pdbFile* pdb);
280 extern pdbRecord* pdbFilePrevCA(pdbFile* pdb);
281 extern long pdbFileEnd(pdbFile* pdb);
282 extern long pdbFileGoToEnd(pdbFile* pdb);
283 extern long pdbFileIsEndLine(pdbFile* pdb);
284 extern long pdbFileIsAtom(pdbFile* pdb);
285 extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);
286 extern long pdbFileIsCA(pdbFile* pdb);
287 extern long pdbFileIsNegative(pdbFile* pdb);
288 extern long pdbFileIsPositive(pdbFile* pdb);
289 extern long pdbFileIsCharge(pdbFile* pdb);
290 extern long pdbFileIsSecondaryStructure(pdbFile* pdb);
291 extern long pdbFileIsHelix(pdbFile* pdb);
292 extern long pdbFileIsSheet(pdbFile* pdb);
293 extern long pdbFileIsTurn(pdbFile* pdb);
294 extern pdbRecord* pdbFileNew(pdbFile* pdb);
295 extern pdbRecord* pdbFileAppend(pdbFile* pdb);
296 extern pdbRecord* pdbFileFree(pdbFile* pdb);
297 extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);
299 extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);
300 /*werewolf presented*/
301 extern pdbRecord* pdbFileRecordTablePrint(FILE* fpt, pdbFile* pdb);
303 extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);
304 extern pdbRecord* pdbFileCAOnlyCopy(pdbFile* pdb, pdbFile* src);
305 extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);
306 extern void pdbFileCopyAll(pdbFile* dst, pdbFile* src);
307 extern void pdbFileAppendAll(pdbFile* dst, pdbFile* src);
308 extern pdbRecord* pdbFileOneRecordCopy(pdbFile* dst, pdbFile* src);
309 extern void pdbFileOneProteinCopy(pdbFile* dst, pdbFile* src, long num);
312 extern void pdbRotationFollowingEulerAngle(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
313 extern void pdbRotationFollowingEulerAngleInverse(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
314 extern void pdbRotationXYZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
315 extern void pdbRotationZYX(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
316 extern void pdbRotationZXY(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
317 extern void pdbRotationYXZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
319 extern int pdbSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
320 extern int pdbNoSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
321 extern int pdbSecondaryStructureAppend(pdbFileSecondaryStructure* second);
322 extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
329 #endif /* PDB_FILE_H */