Difference between revisions of "pdbFile(API)"
(→Residue Name) |
(→Management Data) |
||
Line 194: | Line 194: | ||
== struct == | == struct == | ||
=== Management Data === | === Management Data === | ||
− | + | This is struct to manage PDB data and Secondary Structure data. | |
typedef struct pdbFile { | typedef struct pdbFile { | ||
pdbRecord* top; | pdbRecord* top; | ||
Line 203: | Line 203: | ||
<table border="1"> | <table border="1"> | ||
<tr> | <tr> | ||
− | <th> | + | <th>Member</th> |
<th>Description</th> | <th>Description</th> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>top</td> | <td>top</td> | ||
− | <td> | + | <td>Top PDB data(Pointer)</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>PDB</td> | <td>PDB</td> | ||
− | <td> | + | <td>Current PDB data(Pointer)</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>nAtom</td> | <td>nAtom</td> | ||
− | <td> | + | <td>Number of PDB data</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>second</td> | <td>second</td> | ||
− | <td> | + | <td>Secondary Structure data</td> |
</tr> | </tr> | ||
</table> | </table> | ||
<br> | <br> | ||
− | ==== | + | ==== Management Secondary Structure data ==== |
typedef struct pdbFileSecondaryStructure { | typedef struct pdbFileSecondaryStructure { | ||
int nSecondaryStructure; | int nSecondaryStructure; | ||
Line 233: | Line 233: | ||
<table border="1"> | <table border="1"> | ||
<tr> | <tr> | ||
− | <th> | + | <th>Member</th> |
<th>Description</th> | <th>Description</th> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>nSecondaryStructure</td> | <td>nSecondaryStructure</td> | ||
− | <td> | + | <td>Number of Secondary Structure data</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>top</td> | <td>top</td> | ||
− | <td> | + | <td>Top Secondary Structure data(Pointer)</td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>SecondaryStructure</td> | <td>SecondaryStructure</td> | ||
− | <td> | + | <td>Current Secondary Structure data(Pointer)</td> |
</tr> | </tr> | ||
</table> | </table> |
Revision as of 06:03, 7 October 2014
DataManip/pdbFile is API to treat PDB file.
Contents
constant
Syntax for PDB file
String length definition
#define PDB_FILE_RECORD_FULL_LENGTH (80) #define PDB_FILE_RECORD_START (0) #define PDB_FILE_RECORD_LENGTH (6) #define PDB_FILE_ATOM_NUMBER_START (6) #define PDB_FILE_ATOM_NUMBER_LENGTH (5) #define PDB_FILE_ATOM_NAME_START (12) #define PDB_FILE_ATOM_NAME_LENGTH (4) #define PDB_FILE_LOCATION_START (16) #define PDB_FILE_LOCATION_LENGTH (1) #define PDB_FILE_RESIDUE_START (17) #define PDB_FILE_RESIDUE_LENGTH (3) #define PDB_FILE_CHAIN_IDENT_START (21) #define PDB_FILE_CHAIN_IDENT_LENGTH (1) #define PDB_FILE_RESNUM_START (22) #define PDB_FILE_RESNUM_LENGTH (4) #define PDB_FILE_INSERTION_START (26) #define PDB_FILE_INSERTION_LENGTH (1) #define PDB_FILE_X_START (30) #define PDB_FILE_X_LENGTH (8) #define PDB_FILE_Y_START (38) #define PDB_FILE_Y_LENGTH (8) #define PDB_FILE_Z_START (46) #define PDB_FILE_Z_LENGTH (8) #define PDB_FILE_OCCUPANCY_START (54) #define PDB_FILE_OCCUPANCY_LENGTH (6) #define PDB_FILE_TEMPERATURE_START (60) #define PDB_FILE_TEMPERATURE_LENGTH (6) #define PDB_FILE_FOOT_START (67) #define PDB_FILE_FOOT_LENGTH (3) #define PDB_FILE_FOOTNOTE_START (70) #define PDB_FILE_FOOTNOTE_LENGTH (10) #define MAX_RESIDUE_NUMBER (20) #define RESIDUE_ONECHAR_MODE (1) #define RESIDUE_THREECHAR_MODE (3)
String definition
#define pdbRecordAtom ("ATOM ") #define pdbRecordHeteroAtom ("HETATM") #define pdbRecordHelix ("HELIX ") #define pdbRecordSheet ("SHEET ") #define pdbRecordTurn ("TURN ") #define pdbRecordEnd ("END ")
Residue Name
residueName3: 3 characters, residueName1: 1 character
typedef struct residueName { char residueName3[4]; char residueName1[2]; } residueName;
Define the struct in header file, and define residue name in /pdbFile/src/pdbGet.c.
static residueName residue[MAX_RESIDUE_NUMBER] = { "ALA","A", "VAL","V", "PHE","F", "PRO","P", "MET","M", "ILE","I", "LEU","L", "ASP","D", "GLU","E", "LYS","K", "ARG","R", "SER","S", "THR","T", "TYR","Y", "HIS","H", "CYS","C", "ASN","N", "GLN","Q", "TRP","W", "GLY","G" };
Element No. | residueName3 | residueName1 |
---|---|---|
0 | ALA | A |
1 | VAL | V |
2 | PHE | F |
3 | PRO | P |
4 | MET | M |
5 | ILE | I |
6 | LEU | L |
7 | ASP | D |
8 | GLU | E |
9 | LYS | K |
10 | ARG | R |
11 | SER | S |
12 | THR | T |
13 | TYR | Y |
14 | HIS | H |
15 | CYS | C |
16 | ASN | N |
17 | GLN | Q |
18 | TRP | W |
19 | GLY | G |
Secondary Structure
Secondary Structure Mode
typedef enum pdbFileSecondaryStructureMode { pdbFileSecondaryStructureModeNo = 0, pdbFileSecondaryStructureModeHelix = 1, pdbFileSecondaryStructureModeSheet = 2, pdbFileSecondaryStructureModeTurn = 3 } pdbFileSecondaryStructureMode;
Helix Structure
typedef enum pdbSecondaryStructureHelixClass { HelixClassRightHandedAlpha = 1, HelixClassRightHandedOmega = 2, HelixClassRightHandedPi = 3, HelixClassRightHandedGammda= 4, HelixClassRightHanded310 = 5, HelixClassLeftHandedAlpha = 6, HelixClassLeftHandedOmega = 7, HelixClassLeftHandedGammda = 9, HelixClassPolyProline = 10, } pdbSecondaryStructureHelixClass;
struct
Management Data
This is struct to manage PDB data and Secondary Structure data.
typedef struct pdbFile { pdbRecord* top; pdbRecord* PDB; pdbFileParaTypeInteger nAtom; pdbFileSecondaryStructure second; } pdbFile;
Member | Description |
---|---|
top | Top PDB data(Pointer) |
PDB | Current PDB data(Pointer) |
nAtom | Number of PDB data |
second | Secondary Structure data |
Management Secondary Structure data
typedef struct pdbFileSecondaryStructure { int nSecondaryStructure; pdbFileSecondaryStructureRecord* top; pdbFileSecondaryStructureRecord* SecondaryStructure; } pdbFileSecondaryStructure;
Member | Description |
---|---|
nSecondaryStructure | Number of Secondary Structure data |
top | Top Secondary Structure data(Pointer) |
SecondaryStructure | Current Secondary Structure data(Pointer) |
PDBdata
PDBdataが格納されている構造体です.リスト構造で管理し,PDBfile一行分のdataに対応しています.
typedef struct pdbRecord pdbRecord; struct pdbRecord { pdbFileParaTypeCharacter FullRecord[PDB_FILE_RECORD_FULL_LENGTH+1]; pdbFileParaTypeCharacter Record[PDB_FILE_RECORD_LENGTH+1]; /* ATOM and HETATM Record */ pdbFileParaTypeInteger AtomSerialNumber; pdbFileParaTypeCharacter AtomName[PDB_FILE_ATOM_NAME_LENGTH+1]; pdbFileParaTypeCharacter LocationIndicator; pdbFileParaTypeCharacter ResidueName[PDB_FILE_RESIDUE_LENGTH+1]; pdbFileParaTypeCharacter ChainIdentifier; pdbFileParaTypeInteger ResidueSequenceNumber; pdbFileParaTypeCharacter InsertionCode; pdbCoord Coord; pdbFileParaTypeReal Occupancy; pdbFileParaTypeReal TemperatureFactor; pdbFileParaTypeInteger FootnoteNumber; pdbFileParaTypeCharacter Footnote[PDB_FILE_FOOTNOTE_LENGTH+1]; pdbRecord* prev; pdbRecord* next; };
メンバ | Description |
---|---|
FullRecord | 一行分のPDBdata |
Record | 原子Informationとしての一行分のPDBdata |
AtomSerialNumber | |
AtomName | 原子名 |
LocationIndicator | |
ResidueName | 残基名 |
ChainIdentifier | Chain ID |
ResidueSequenceNumber | 残基配列番号 |
InsertionCode | |
Coord | 原子のcoordinates |
Occupancy | 占有率 |
TemperatureFactor | 温度因子 |
FootnoteNumber | |
Footnote | |
prev | 前data |
next | 次data |
typedef char pdbFileParaTypeCharacter; typedef long pdbFileParaTypeInteger; typedef float pdbFileParaTypeReal;
PDBfileのcoordinates
typedef struct pdbCoord { pdbFileParaTypeReal x; pdbFileParaTypeReal y; pdbFileParaTypeReal z; } pdbCoord;
二次構造
二次構造dataが格納されている構造体です.リスト構造で管理し,二次構造一行分のdataに対応しています.
typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord; struct pdbFileSecondaryStructureRecord { pdbFileSecondaryStructureMode mode; pdbSecondaryStructureHelix* helix; pdbSecondaryStructureSheet* sheet; pdbSecondaryStructureTurn* turn; pdbSecondaryStructureNo* no; pdbFileSecondaryStructureRecord* prev; pdbFileSecondaryStructureRecord* next; };
メンバ | Description |
---|---|
mode | 二次構造のMode |
helix | ヘリックス構造のdata |
sheet | シート構造のdata |
turn | ターン構造のdata |
no | 二次構造なしのdata |
prev | 前data |
next | 次data |
ヘリックス構造
typedef struct pdbSecondaryStructureHelix { int serNum; /* Serial Number */ char* helixID; /* HelixID : Three alpahnumeric characters */ /* informtion for the initial residue */ char* initResName;/* Name of the initial residue : Three alpahnumeric characters */ char initChainID; /* Chain identifier */ int initSeqNum; /* Sequence number of the initial residue */ char initICode; /* informtion for the terminal residue */ char* endResName;/* Name of the initial residue : Three alpahnumeric characters */ char endChainID; /* Chain identifier */ int endSeqNum; /* Sequence number of the initial residue */ char endICode; pdbSecondaryStructureHelixClass helixClass; char* comment; int length; } pdbSecondaryStructureHelix;
シート構造
typedef struct pdbSecondaryStructureSheet { int strand; /* Strand number which starts 1 for eache strand wihtin a sheet and increases by one */ char* sheetID; /* Sheet ID */ int numStrands; /* Number of strands in sheet */ /* initial residue */ char* initResName;/* Name of the initial residue : Three alpahnumeric characters */ char initChainID; /* Chain identifier */ int initSeqNum; /* Sequence number of the initial residue */ char initICode; /* informtion for the terminal residue */ char* endResName;/* Name of the initial residue : Three alpahnumeric characters */ char endChainID; /* Chain identifier */ int endSeqNum; /* Sequence number of the initial residue */ char endICode; int sense; /* 0: first strand, 1: parallel, -1: anti-paralle */ char* curAtom; /* Registration. Atom name in current strand */ char* curResName; /* Registration. Residue name in current strand */ char curChainID; /* Registration. Chain ID in current strand */ int curResSeq; /* Registration. Res sequence in current strand */ char curICode; /* Registration. Insertion code in current strand */ char* prevAtom; /* Registration. Atom name in current strand */ char* prevResName; /* Registration. Residue name in current strand */ char prevChainID; /* Registration. Chain ID in current strand */ int prevResSeq; /* Registration. Res sequence in current strand */ char prevICode; /* Registration. Insertion code in current strand */ }pdbSecondaryStructureSheet;
ターン構造
typedef struct pdbSecondaryStructureTurn { int serNum; /* Serial Number */ char* turnID; /* Turn ID : Three alpahnumeric characters */ /* informtion for the initial residue */ char* initResName;/* Name of the initial residue : Three alpahnumeric characters */ char initChainID; /* Chain identifier */ int initSeqNum; /* Sequence number of the initial residue */ char initICode; /* informtion for the terminal residue */ char* endResName;/* Name of the initial residue : Three alpahnumeric characters */ char endChainID; /* Chain identifier */ int endSeqNum; /* Sequence number of the initial residue */ char endICode; char* comment; }pdbSecondaryStructureTurn;
二次構造なし
typedef struct pdbSecondaryStructureNo { int serNum; /* Serial Number */ char* noID; /* Turn ID : Three alpahnumeric characters */ /* informtion for the initial residue */ char* initResName;/* Name of the initial residue : Three alpahnumeric characters */ char initChainID; /* Chain identifier */ int initSeqNum; /* Sequence number of the initial residue */ char initICode; /* informtion for the terminal residue */ char* endResName;/* Name of the initial residue : Three alpahnumeric characters */ char endChainID; /* Chain identifier */ int endSeqNum; /* Sequence number of the initial residue */ char endICode; char* comment; }pdbSecondaryStructureNo;
API
file管理
読み出し
filefptから読み出したdataを管理datapdbへ格納します.
extern void pdbFileRead(FILE* fpt, pdbFile* pdb);
Write
管理datapdbをPDB形式でfilefptへWriteます.(pdbFileRecordPrintを繰り返して使用)
extern void pdbFileWrite(FILE* fpt, pdbFile* pdb);
管理datapdbをtsv形式でfilefptへWriteます.(pdbFileRecordTablePrintを繰り返して使用)
extern void pdbFileTableWrite(FILE* fpt, pdbFile* pdb);
管理datapdbからcoordinatesリストのみをfilefptへWriteます.
extern void pdbFileWriteCoord(FILE* fpt, pdbFile* pdb);
PDBdata処理
新規Create
pdb->PDBのdataに新規dataをCreateします.
メモリを確保して新規dataを作り,先頭dataとして,前,次のdataはNULLとします.
extern pdbRecord* pdbFileNew(pdbFile* pdb);
追加
pdb->PDBのdataの後に新規dataを追加します.
メモリを確保して新規dataを作り,現在のdataとして,前を元のdata,次を元dataの次として,間に挿入します.
extern pdbRecord* pdbFileAppend(pdbFile* pdb);
解放
pdbのPDBdataを全て解放します.
extern pdbRecord* pdbFileFree(pdbFile* pdb);
Write
pdb->PDBのdataをPDB形式でfilefptへ一行分Writeます.
extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);
pdb->PDBのdataをtsv形式でfilefptへ一行分Writeます.
extern pdbRecord* pdbFileRecordTablePrint(FILE* fpt, pdbFile* pdb);
ポインタ移動
先頭dataに移動します.
extern pdbRecord* pdbFileTop(pdbFile* pdb);
先頭dataのポインタpdb->topを返します.
extern pdbRecord* pdbFileTopPointer(pdbFile* pdb);
次dataに移動します.(該当無しの場合はNULLとします)
extern pdbRecord* pdbFileNext(pdbFile* pdb);
次の原子dataに移動します.(該当無しの場合はNULLとします)
extern pdbRecord* pdbFileNextAtom(pdbFile* pdb);
次のアルファ炭素dataに移動します.(該当無しの場合はNULLとします)
extern pdbRecord* pdbFileNextCA(pdbFile* pdb);
前dataに移動します.(該当無しの場合はNULLとします)
extern pdbRecord* pdbFilePrev(pdbFile* pdb);
前の原子dataに移動します.(該当無しの場合はNULLとします)
extern pdbRecord* pdbFilePrevAtom(pdbFile* pdb);
前のアルファ炭素dataに移動します.(該当無しの場合はNULLとします)
extern pdbRecord* pdbFilePrevCA(pdbFile* pdb);
末尾dataの場合は1,そうでない場合は0を返します.
extern long pdbFileEnd(pdbFile* pdb);
末尾dataに移動します.
extern long pdbFileGoToEnd(pdbFile* pdb);
data判定
pdb->PDB->Recordが終端文字(END)の場合は1,そうでない場合は0を返します.
extern long pdbFileIsEndLine(pdbFile* pdb);
pdb->PDB->Recordが原子の場合は1,そうでない場合は0を返します.
extern long pdbFileIsAtom(pdbFile* pdb);
原子名pdb->PDB->AtomNameがアルファ炭素( CA )の場合は1,そうでない場合は0を返します.
extern long pdbFileIsCA(pdbFile* pdb);
原子名pdb->PDB->AtomNameから原子番号を返します.未対応の記号の場合は炭素として6を返します.
extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);
pdb->PDBの残基名(1文字)が"D"または"E"の場合は1,そうでない場合は0を返します.
extern long pdbFileIsNegative(pdbFile* pdb);
pdb->PDBの残基名(1文字)が"K"または"R"の場合は1,そうでない場合は0を返します.
extern long pdbFileIsPositive(pdbFile* pdb);
pdb->PDBの残基名(1文字)が"K", "R", "D", "E"のいずれかの場合は1,そうでない場合は0を返します.
extern long pdbFileIsCharge(pdbFile* pdb);
ChainIDが同じで配列番号が隣同士の場合は1,そうでない場合は0を返します.
extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);
dataSetting
coordinatespdb->PDB->Coordに(x, y, z)をSettingします.
extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
温度因子pdb->PDB->TemperatureFactorにtempをSettingします.
extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
Chain ID pdb->PDB->ChainIdentifierにcをSettingします.
extern void pdbFileChainIdentifierSet(pdbFile* pdb, unsigned char c);
pdb内の全ての原子に対してChain IDをcにSettingします.
extern void pdbFileChainIdentifierSetAll(pdbFile* pdb, unsigned char c);
占有率pdb->PDB->OccupancyにtempをSettingします.
extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
data取得
(x, y, z)にpdb->PDB->CoordのcoordinatesをOutputします.
extern long pdbFileCoordGet(pdbFile* pdb, pdbFileParaTypeReal* x, pdbFileParaTypeReal* y, pdbFileParaTypeReal* z);
残基配列番号pdb->PDB->ResidueSequenceNumberを返します.
extern long pdbFileResidueSequenceNumberGet(pdbFile* pdb);
残基名を返します.(mode=RESIDUE_THREECHAR_MODE で3文字,そうでない場合は1文字)
extern char* pdbFileResidueNameGet(pdbFile* pdb,int mode);
温度因子pdb->PDB->TemperatureFactorを返します.
extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(pdbFile* pdb);
Chain ID pdb->PDB->ChainIdentifierを返します.
extern unsigned char pdbFileChainIdentifierGet(pdbFile* pdb);
占有率pdb->PDB->Occupancyを返します.
extern pdbFileParaTypeReal pdbFileOccupancyGet(pdbFile* pdb);
data処理
残基配列番号pdb->PDB->ResidueSequenceNumberを1つ増やします.
extern void pdbFileResidueSequenceNumberIncrement(pdbFile* pdb, int n);
pdb内の全ての原子に対して残基配列番号を1つ増やします.
extern void pdbFileResidueSequenceNumberIncrementAll(pdbFile* pdb, int n);
コピー処理
PDBdatasrc->PDBをdst->PDBへコピーします.
このとき,前,次dataとの関係は保持されたままで,dst->PDBを返します.
extern pdbRecord* pdbFileOneRecordCopy(pdbFile* dst, pdbFile* src);
srcの全てのPDBdataをdstへ上書きコピーします.
コピーを行う際にdstに対してpdbFileNewを呼び出すので,dstをpdbFileFreeなどで解放してから使用して下さい.
extern void pdbFileCopyAll(pdbFile* dst, pdbFile* src);
srcの全てのPDBdataをPDBdatadst->PDBの後に挿入します.
extern void pdbFileAppendAll(pdbFile* dst, pdbFile* src);
PDBdatasrc->PDBがアルファ炭素のときのみdst->PDBへコピーします.
このとき,前,次dataとの関係は保持されたままで,コピーした場合はdst->PDB,されなかった場合はNULLを返します.
extern pdbRecord* pdbFileCAOnlyCopy(pdbFile* pdb, pdbFile* src);
srcの全てのアルファ炭素のPDBdataをdstへ上書きコピーします.
コピーを行う際にdstに対してpdbFileNewを呼び出すので,dstをpdbFileFreeなどで解放してから使用して下さい.
extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);
srcからdstへのタンパク質1つ分のdataをコピーします.
dstは予めpdbFileNewによりInitializeして使用して下さい.
extern void pdbFileOneProteinCopy(pdbFile* dst, pdbFile* src, long num);
二次構造
読み出し
pdb->PDB->FullRecordから二次構造を読み取り,secondへ格納します.
extern int pdbSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
pdb->PDB->FullRecordから二次構造に含まれないアルファ炭素を読み取り,secondへ格納します.
extern int pdbNoSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
Write
二次構造datasecondをPDB形式でfilefptへWriteます.(pdbFileSecondaryStructureRecordPrintを繰り返して使用)
extern void pdbFileWriteSecondaryStructure(FILE* fpt, pdbFileSecondaryStructure* second);
二次構造datasecondをPDB形式でfilefptへ一行分Writeます.
extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);
追加
secondへメモリを確保して新規Createした二次構造dataを追加します.
extern int pdbSecondaryStructureAppend(pdbFileSecondaryStructure* second);
元々のdata数second->nSecondaryStructure=0の場合は,新規dataを先頭dataとして,前,次のdataはNULLとします.
そうでない場合は,新規dataを現在のdataとして,前を元のdata,次を元dataの次として,間に挿入します.
data判定
二次構造(HELIX, SHEET, TURN)の場合は1,そうでない場合は0を返します.
extern long pdbFileIsSecondaryStructure(pdbFile* pdb);
ヘリックス構造(HELIX)の場合は1,そうでない場合は0を返します.
extern long pdbFileIsHelix(pdbFile* pdb);
シート構造(SHEET)の場合は1,そうでない場合は0を返します.
extern long pdbFileIsSheet(pdbFile* pdb);
ターン構造(TURN)の場合は1,そうでない場合は0を返します.
extern long pdbFileIsTurn(pdbFile* pdb);
pdb->PDBがsecond->SecondaryStructureに含まれている場合にその二次元構造data,そうでない場合はpdbFileSecondaryStructureModeNoを返します.
extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
Matrixによるアフィン変換
file処理
Matrix3D(API)#file処理を使用して,fileの処理を行います.
extern void pdbMatrixFileFormat(FILE* fpt); extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix); extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);
アフィン変換
MatrixMatrixを使用して,pdbにアフィン変換を行います.
extern void pdbTrans(pdbFile* pdb, Matrix3D Matrix); extern void pdbTransCuda(float* hv, int n, Matrix3D Matrix);
Matrix3D(API)#アフィンMatrixを使用してMatrixをCreateし,pdbを回転します.
Euler Angleを使用した回転
extern void pdbRotationFollowingEulerAngle(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3); extern void pdbRotationFollowingEulerAngleInverse(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
指定したAxisの順番で回転
extern void pdbRotationXYZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz); extern void pdbRotationZYX(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz); extern void pdbRotationZXY(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz); extern void pdbRotationYXZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);