6 <DD> This structure is used to treat a pdb File.
9 <DD> pdb.PDB->ResidueSequenceNumber
14 <LI> pdbFileRead (fpt, &pdb)
15 <LI> pdbFileWrite(fpt, &pdb)
19 <DD> if(pdbFileIsAtom(&pdb)) { }
21 <DD> if(pdbFileIsCA(&pdb)) { }
23 <DD> if(pdbFileIsEndLine(&pdb)) { }
24 <LI> pdbRecordisNearby : Adjacent Residue or not
25 <DD> if(pdbRecordisNearby(&pdbRecord, &pdbRecord)) { }
27 <DD> if(pdbFileIsHelix(&pdb)) { }
29 <DD> if(pdbFileIsSheet(&pdb)) { }
31 <DD> if(pdbFileIsTurn(&pdb)) { }
32 <LI> pdbFileIsNegative
33 <DD> if(pdbFileIsNegative(&pdb)) { }
34 <LI> pdbFileIsPositive
35 <DD> if(pdbFileIsPositive(&pdb)) { }
37 <DD> if(pdbFileIsCharge(&pdb)) { }
40 <LI> lpdbDistanceCheck : mode 0: Near 1: Far ; compare the distance between pdb->current with p v.s. distance
41 <DD> if(lpdbDistanceCheck(&pdb, p, distance, mode)) {
43 <DD> if(lpdbDistanceNear(&pdb, p, distance, mode)) {
45 <DD> if(lpdbDistanceFar(&pdb, p, distance, mode)) {
49 <LI> pdbFileCoordGet(&pdb, &x, &y, &z)
50 <LI> unsigned char pdbFileChainIdentifierGet(&pdb)
51 <LI> pdbFileResidueSequenceNumberGet(&pdb)
52 <LI> char* pdbFileResidueNameGet(&pdb,mode)
54 <LI> pdbFileCoordSet(&pdb, x, y, z)
55 <LI> pdbFileChainIdentifierSetAll(&pdb, c)
56 <LI> pdbFileChainIdentifierSet(&pdb, c)
57 <LI> pdbFileTemperatureFactorSet(&pdb, (double)temp)
61 <LI> pdbFileNext(&pdb)
62 <LI> pdbFileNextAtom(&pdb)
63 <LI> pdbFileNextCA(&pdb)
64 <LI> pdbFileNextProtein(&pdb)
67 <LI> New, append etc. <UL>
69 <LI> pdbFileAppend(&pdb)
70 <LI> pdbFileFree(&pdb)
73 <LI> pdbFilePrint(fpt, &pdb);
74 <LI> pdbFileRecordPrint(fpt, &pdb);
75 <LI> pdbFileRecordTablePrint(fpt, &pdb);
78 <LI> pdbFileOneRecordCopy(&pdb, &src)
79 <LI> pdbFileCAOnlyCopyAll(&pdb, &src)
80 <LI> pdbFileCopyAll(&pdb, &src)
81 <LI> pdbFileOneProteinCopy(&pdb, &src, num)
82 <LI> pdbFileCAOnlyCopyAll(&pdb, &src)
84 <LI> Translation and rotation <UL>
86 <LI> pdbMatrixFileRead
87 <LI> pdbMatrixFileWrite
88 <LI> pdbMatrixFileFormat
92 <DD> lpdb2mrc3d(&mrc, &pdb, &linfo, mode)
96 <A NAME="Information">
97 <H2>Information from source codes</H2>
106 ../src/lpdbCoordInfo.c:
108 ../src/lpdbSelectedAtom.c:
110 ../src/lpdbSurface.c:
112 ../src/pdbFileRead.c:
114 ../src/pdbFileWrite.c:
120 ../src/pdbRotation.c:
122 ../src/pdbSecondaryStructure.c:
139 # The latest update : %G% at %U%
141 #%Z% pdbFile.h ver %I%
142 #%Z% Created by tacyas
144 #%Z% Usage : pdbFile.h
149 #include "Matrix3D.h"
150 #include "mrcImage.h"
153 #define PDB_FILE_RECORD_FULL_LENGTH (80)
154 #define PDB_FILE_RECORD_START (0)
155 #define PDB_FILE_RECORD_LENGTH (6)
156 #define PDB_FILE_ATOM_NUMBER_START (6)
157 #define PDB_FILE_ATOM_NUMBER_LENGTH (5)
158 #define PDB_FILE_ATOM_NAME_START (12)
159 #define PDB_FILE_ATOM_NAME_LENGTH (4)
160 #define PDB_FILE_LOCATION_START (16)
161 #define PDB_FILE_LOCATION_LENGTH (1)
162 #define PDB_FILE_RESIDUE_START (17)
163 #define PDB_FILE_RESIDUE_LENGTH (3)
164 #define PDB_FILE_CHAIN_IDENT_START (21)
165 #define PDB_FILE_CHAIN_IDENT_LENGTH (1)
166 #define PDB_FILE_RESNUM_START (22)
167 #define PDB_FILE_RESNUM_LENGTH (4)
168 #define PDB_FILE_INSERTION_START (26)
169 #define PDB_FILE_INSERTION_LENGTH (1)
170 #define PDB_FILE_X_START (30)
171 #define PDB_FILE_X_LENGTH (8)
172 #define PDB_FILE_Y_START (38)
173 #define PDB_FILE_Y_LENGTH (8)
174 #define PDB_FILE_Z_START (46)
175 #define PDB_FILE_Z_LENGTH (8)
176 #define PDB_FILE_OCCUPANCY_START (54)
177 #define PDB_FILE_OCCUPANCY_LENGTH (6)
178 #define PDB_FILE_TEMPERATURE_START (60)
179 #define PDB_FILE_TEMPERATURE_LENGTH (6)
180 #define PDB_FILE_FOOT_START (67)
181 #define PDB_FILE_FOOT_LENGTH (3)
182 #define PDB_FILE_FOOTNOTE_START (70)
183 #define PDB_FILE_FOOTNOTE_LENGTH (10)
184 #define PDB_FILE_SEGID_START (72)
185 #define PDB_FILE_SEGID_LENGTH (4)
186 #define PDB_FILE_ELEMENT_START (76)
187 #define PDB_FILE_ELEMENT_LENGTH (2)
188 #define PDB_FILE_CHARGE_START (78)
189 #define PDB_FILE_CHARGE_LENGTH (2)
190 #define MAX_RESIDUE_NUMBER (20)
191 #define RESIDUE_ONECHAR_MODE (1)
192 #define RESIDUE_THREECHAR_MODE (3)
193 #define PDB_FILE_ANISOU_U11_START (28)
194 #define PDB_FILE_ANISOU_U11_LENGTH (7)
195 #define PDB_FILE_ANISOU_U22_START (35)
196 #define PDB_FILE_ANISOU_U22_LENGTH (7)
197 #define PDB_FILE_ANISOU_U33_START (42)
198 #define PDB_FILE_ANISOU_U33_LENGTH (7)
199 #define PDB_FILE_ANISOU_U12_START (49)
200 #define PDB_FILE_ANISOU_U12_LENGTH (7)
201 #define PDB_FILE_ANISOU_U13_START (56)
202 #define PDB_FILE_ANISOU_U13_LENGTH (7)
203 #define PDB_FILE_ANISOU_U23_START (63)
204 #define PDB_FILE_ANISOU_U23_LENGTH (7)
206 #define pdbRecordAtom ("ATOM ")
207 #define pdbRecordHeteroAtom ("HETATM")
208 #define pdbRecordANISOU ("ANISOU")
209 #define pdbRecordHelix ("HELIX ")
210 #define pdbRecordSheet ("SHEET ")
211 #define pdbRecordTurn ("TURN ")
212 #define pdbRecordEnd ("END ")
217 typedef char pdbFileParaTypeCharacter;
218 typedef long pdbFileParaTypeInteger;
219 typedef float pdbFileParaTypeReal;
221 typedef struct residueName {
222 char residueName3[4];
223 char residueName1[2];
226 typedef struct pdbCoord {
227 pdbFileParaTypeReal x;
228 pdbFileParaTypeReal y;
229 pdbFileParaTypeReal z;
232 typedef enum pdbSecondaryStructureHelixClass {
233 HelixClassRightHandedAlpha = 1,
234 HelixClassRightHandedOmega = 2,
235 HelixClassRightHandedPi = 3,
236 HelixClassRightHandedGammda= 4,
237 HelixClassRightHanded310 = 5,
238 HelixClassLeftHandedAlpha = 6,
239 HelixClassLeftHandedOmega = 7,
240 HelixClassLeftHandedGammda = 9,
241 HelixClassPolyProline = 10,
242 } pdbSecondaryStructureHelixClass;
244 typedef struct pdbSecondaryStructureHelix {
245 int serNum; /* Serial Number */
246 char* helixID; /* HelixID : Three alpahnumeric characters */
247 /* informtion for the initial residue */
248 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
249 char initChainID; /* Chain identifier */
250 int initSeqNum; /* Sequence number of the initial residue */
252 /* informtion for the terminal residue */
253 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
254 char endChainID; /* Chain identifier */
255 int endSeqNum; /* Sequence number of the initial residue */
258 pdbSecondaryStructureHelixClass helixClass;
261 } pdbSecondaryStructureHelix;
263 typedef struct pdbSecondaryStructureSheet {
264 int strand; /* Strand number which starts 1 for eache strand wihtin a sheet and increases by one */
265 char* sheetID; /* Sheet ID */
266 int numStrands; /* Number of strands in sheet */
268 /* initial residue */
269 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
270 char initChainID; /* Chain identifier */
271 int initSeqNum; /* Sequence number of the initial residue */
274 /* informtion for the terminal residue */
275 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
276 char endChainID; /* Chain identifier */
277 int endSeqNum; /* Sequence number of the initial residue */
280 int sense; /* 0: first strand, 1: parallel, -1: anti-paralle */
282 char* curAtom; /* Registration. Atom name in current strand */
283 char* curResName; /* Registration. Residue name in current strand */
284 char curChainID; /* Registration. Chain ID in current strand */
285 int curResSeq; /* Registration. Res sequence in current strand */
286 char curICode; /* Registration. Insertion code in current strand */
288 char* prevAtom; /* Registration. Atom name in current strand */
289 char* prevResName; /* Registration. Residue name in current strand */
290 char prevChainID; /* Registration. Chain ID in current strand */
291 int prevResSeq; /* Registration. Res sequence in current strand */
292 char prevICode; /* Registration. Insertion code in current strand */
293 }pdbSecondaryStructureSheet;
296 typedef struct pdbSecondaryStructureTurn {
297 int serNum; /* Serial Number */
298 char* turnID; /* Turn ID : Three alpahnumeric characters */
299 /* informtion for the initial residue */
300 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
301 char initChainID; /* Chain identifier */
302 int initSeqNum; /* Sequence number of the initial residue */
304 /* informtion for the terminal residue */
305 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
306 char endChainID; /* Chain identifier */
307 int endSeqNum; /* Sequence number of the initial residue */
311 }pdbSecondaryStructureTurn;
313 typedef struct pdbSecondaryStructureNo {
314 int serNum; /* Serial Number */
315 char* noID; /* Turn ID : Three alpahnumeric characters */
316 /* informtion for the initial residue */
317 char* initResName;/* Name of the initial residue : Three alpahnumeric characters */
318 char initChainID; /* Chain identifier */
319 int initSeqNum; /* Sequence number of the initial residue */
321 /* informtion for the terminal residue */
322 char* endResName;/* Name of the initial residue : Three alpahnumeric characters */
323 char endChainID; /* Chain identifier */
324 int endSeqNum; /* Sequence number of the initial residue */
328 }pdbSecondaryStructureNo;
330 typedef enum pdbFileSecondaryStructureMode {
331 pdbFileSecondaryStructureModeNo = 0,
332 pdbFileSecondaryStructureModeHelix = 1,
333 pdbFileSecondaryStructureModeSheet = 2,
334 pdbFileSecondaryStructureModeTurn = 3
335 } pdbFileSecondaryStructureMode;
337 typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord;
338 struct pdbFileSecondaryStructureRecord {
339 pdbFileSecondaryStructureMode mode;
340 pdbSecondaryStructureHelix* helix;
341 pdbSecondaryStructureSheet* sheet;
342 pdbSecondaryStructureTurn* turn;
343 pdbSecondaryStructureNo* no;
345 pdbFileSecondaryStructureRecord* prev;
346 pdbFileSecondaryStructureRecord* next;
349 typedef struct pdbFileSecondaryStructure {
350 int nSecondaryStructure;
351 pdbFileSecondaryStructureRecord* top;
352 pdbFileSecondaryStructureRecord* SecondaryStructure;
353 } pdbFileSecondaryStructure;
355 typedef struct pdbRecord pdbRecord;
358 pdbFileParaTypeCharacter FullRecord[PDB_FILE_RECORD_FULL_LENGTH+1];
360 pdbFileParaTypeCharacter Record[PDB_FILE_RECORD_LENGTH+1];
362 /* ATOM and HETATM Record */
363 pdbFileParaTypeInteger AtomSerialNumber;
364 pdbFileParaTypeCharacter AtomName[PDB_FILE_ATOM_NAME_LENGTH+1];
365 pdbFileParaTypeCharacter LocationIndicator;
366 pdbFileParaTypeCharacter ResidueName[PDB_FILE_RESIDUE_LENGTH+1];
367 pdbFileParaTypeCharacter ChainIdentifier;
368 pdbFileParaTypeInteger ResidueSequenceNumber;
369 pdbFileParaTypeCharacter InsertionCode;
371 pdbFileParaTypeReal Occupancy;
372 pdbFileParaTypeReal TemperatureFactor;
373 pdbFileParaTypeInteger FootnoteNumber;
374 pdbFileParaTypeCharacter Footnote[PDB_FILE_FOOTNOTE_LENGTH+1];
375 pdbFileParaTypeCharacter SegID[PDB_FILE_SEGID_LENGTH+1];
376 pdbFileParaTypeCharacter Element[PDB_FILE_ELEMENT_LENGTH+1];
377 pdbFileParaTypeCharacter Charge[PDB_FILE_CHARGE_LENGTH+1];
380 pdbRecord* pAtomforANISOU;
381 pdbFileParaTypeReal U11;
382 pdbFileParaTypeReal U22;
383 pdbFileParaTypeReal U33;
384 pdbFileParaTypeReal U12;
385 pdbFileParaTypeReal U13;
386 pdbFileParaTypeReal U23;
393 typedef struct pdbFile {
396 pdbFileParaTypeInteger nAtom;
397 pdbFileSecondaryStructure second;
405 /* prototype begin */
406 /* in pdbFileRead.c */
407 extern void pdbFileRead(FILE* fpt, pdbFile* pdb);
408 /* in pdbFileWrite.c */
409 extern void pdbFileWrite(FILE* fpt, pdbFile* pdb);
410 extern void pdbFileWriteCoord(FILE* fpt, pdbFile* pdb);
411 /*werewolf presents*/
412 extern void pdbFileTableWrite(FILE* fpt, pdbFile* pdb);
413 extern void pdbFileWriteSecondaryStructure(FILE* fpt, pdbFileSecondaryStructure* second);
416 extern void pdbMatrixFileFormat(FILE* fpt);
417 extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix);
418 extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);
420 extern void pdbTrans(pdbFile* pdb, Matrix3D Matrix);
421 //extern void pdbTransCuda(pdbFile* pdb, Matrix3D Matrix);
422 extern void pdbTransCuda(float* hv, int n, Matrix3D Matrix);
424 extern void pdbFileResidueSequenceNumberIncrementAll(pdbFile* pdb, int n);
425 extern void pdbFileResidueSequenceNumberIncrement(pdbFile* pdb, int n);
427 extern void pdbFileChainIdentifierSetAll(pdbFile* pdb, unsigned char c);
428 extern void pdbFileChainIdentifierSet(pdbFile* pdb, unsigned char c);
429 extern unsigned char pdbFileChainIdentifierGet(pdbFile* pdb);
431 extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(pdbFile* pdb);
432 extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
434 extern pdbFileParaTypeReal pdbFileOccupancyGet(pdbFile* pdb);
435 extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
437 extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
439 extern long pdbFileCoordGet(pdbFile* pdb, pdbFileParaTypeReal* x, pdbFileParaTypeReal* y, pdbFileParaTypeReal* z);
440 extern long pdbFileResidueSequenceNumberGet(pdbFile* pdb);
441 extern char* pdbFileResidueNameGet(pdbFile* pdb,int mode);
443 extern pdbRecord* pdbFileTop(pdbFile* pdb);
444 extern pdbRecord* pdbFileTopPointer(pdbFile* pdb);
445 extern pdbRecord* pdbFileNext(pdbFile* pdb);
446 extern pdbRecord* pdbFileNextAtom(pdbFile* pdb);
447 extern pdbRecord* pdbFileNextCA(pdbFile* pdb);
448 extern pdbRecord* pdbFilePrev(pdbFile* pdb);
449 extern pdbRecord* pdbFilePrevAtom(pdbFile* pdb);
450 extern pdbRecord* pdbFilePrevCA(pdbFile* pdb);
451 extern long pdbFileEnd(pdbFile* pdb);
452 extern long pdbFileGoToEnd(pdbFile* pdb);
453 extern long pdbFileIsEndLine(pdbFile* pdb);
454 extern long pdbFileIsAtom(pdbFile* pdb);
455 extern long pdbFileIsANISOU(pdbFile* pdb);
456 extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);
457 extern long pdbFileIsCA(pdbFile* pdb);
458 extern long pdbFileIsNegative(pdbFile* pdb);
459 extern long pdbFileIsPositive(pdbFile* pdb);
460 extern long pdbFileIsCharge(pdbFile* pdb);
461 extern long pdbFileIsSecondaryStructure(pdbFile* pdb);
462 extern long pdbFileIsHelix(pdbFile* pdb);
463 extern long pdbFileIsSheet(pdbFile* pdb);
464 extern long pdbFileIsTurn(pdbFile* pdb);
465 extern pdbRecord* pdbFileNew(pdbFile* pdb);
466 extern pdbRecord* pdbFileAppend(pdbFile* pdb);
467 extern pdbRecord* pdbFileFree(pdbFile* pdb);
468 extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);
470 extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);
471 /*werewolf presented*/
472 extern pdbRecord* pdbFileRecordTablePrint(FILE* fpt, pdbFile* pdb);
474 extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);
475 extern pdbRecord* pdbFileCAOnlyCopy(pdbFile* pdb, pdbFile* src);
476 extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);
477 extern void pdbFileCopyAll(pdbFile* dst, pdbFile* src);
478 extern void pdbFileAppendAll(pdbFile* dst, pdbFile* src);
479 extern pdbRecord* pdbFileOneRecordCopy(pdbFile* dst, pdbFile* src);
480 extern void pdbFileOneProteinCopy(pdbFile* dst, pdbFile* src, long num);
483 extern void pdbRotationFollowingEulerAngle(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
484 extern void pdbRotationFollowingEulerAngleInverse(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
485 extern void pdbRotationXYZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
486 extern void pdbRotationZYX(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
487 extern void pdbRotationZXY(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
488 extern void pdbRotationYXZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
490 extern int pdbSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
491 extern int pdbNoSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
492 extern int pdbSecondaryStructureAppend(pdbFileSecondaryStructure* second);
493 extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
500 #endif /* PDB_FILE_H */