「pdbFile(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(コピー処理)
(PDBデータ処理)
 
(同じ利用者による、間の29版が非表示)
行46: 行46:
 
  #define pdbRecordTurn      ("TURN  ")
 
  #define pdbRecordTurn      ("TURN  ")
 
  #define pdbRecordEnd        ("END  ")
 
  #define pdbRecordEnd        ("END  ")
 +
 +
=== 残基名 ===
 +
residueName3: 3文字表記, residueName1: 1文字表記
 +
typedef struct residueName {
 +
  char residueName3[4];
 +
  char residueName1[2];
 +
} residueName;
 +
ヘッダファイルには構造体のみ定義して、残基名は/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"
 +
};
 +
<table border="1">
 +
<tr>
 +
<th>要素No.</th>
 +
<th>residueName3</th>
 +
<th>residueName1</th>
 +
</tr>
 +
<tr>
 +
<td>0</td>
 +
<td>ALA</td>
 +
<td>A</td>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>VAL</td>
 +
<td>V</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>PHE</td>
 +
<td>F</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>PRO</td>
 +
<td>P</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>MET</td>
 +
<td>M</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>ILE</td>
 +
<td>I</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>LEU</td>
 +
<td>L</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>ASP</td>
 +
<td>D</td>
 +
</tr>
 +
<tr>
 +
<td>8</td>
 +
<td>GLU</td>
 +
<td>E</td>
 +
</tr>
 +
<tr>
 +
<td>9</td>
 +
<td>LYS</td>
 +
<td>K</td>
 +
</tr>
 +
<tr>
 +
<td>10</td>
 +
<td>ARG</td>
 +
<td>R</td>
 +
</tr>
 +
<tr>
 +
<td>11</td>
 +
<td>SER</td>
 +
<td>S</td>
 +
</tr>
 +
<tr>
 +
<td>12</td>
 +
<td>THR</td>
 +
<td>T</td>
 +
</tr>
 +
<tr>
 +
<td>13</td>
 +
<td>TYR</td>
 +
<td>Y</td>
 +
</tr>
 +
<tr>
 +
<td>14</td>
 +
<td>HIS</td>
 +
<td>H</td>
 +
</tr>
 +
<tr>
 +
<td>15</td>
 +
<td>CYS</td>
 +
<td>C</td>
 +
</tr>
 +
<tr>
 +
<td>16</td>
 +
<td>ASN</td>
 +
<td>N</td>
 +
</tr>
 +
<tr>
 +
<td>17</td>
 +
<td>GLN</td>
 +
<td>Q</td>
 +
</tr>
 +
<tr>
 +
<td>18</td>
 +
<td>TRP</td>
 +
<td>W</td>
 +
</tr>
 +
<tr>
 +
<td>19</td>
 +
<td>GLY</td>
 +
<td>G</td>
 +
</tr> 
 +
</table>
 +
<br>
  
 
=== 二次構造 ===
 
=== 二次構造 ===
行129: 行252:
  
 
=== PDBデータ ===
 
=== PDBデータ ===
[[PDB]]データが格納されている構造体です。リスト構造で管理し、各要素がPDBファイル一行分のデータに対応しています。
+
[[PDB]]データが格納されている構造体です。リスト構造で管理し、PDBファイル一行分のデータに対応しています。
 
  typedef struct pdbRecord pdbRecord;
 
  typedef struct pdbRecord pdbRecord;
 
   
 
   
行185: 行308:
 
<tr>  
 
<tr>  
 
<td>ChainIdentifier</td>  
 
<td>ChainIdentifier</td>  
<td></td>  
+
<td>Chain ID</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>ResidueSequenceNumber</td>  
 
<td>ResidueSequenceNumber</td>  
<td></td>  
+
<td>残基配列番号</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
行201: 行324:
 
<tr>  
 
<tr>  
 
<td>Occupancy</td>  
 
<td>Occupancy</td>  
<td></td>  
+
<td>占有率</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
行230: 行353:
 
  typedef float pdbFileParaTypeReal;
 
  typedef float pdbFileParaTypeReal;
  
typedef struct residueName {
+
PDBデータの座標
  char residueName3[4];
+
  char residueName1[2];
+
} residueName;
+
 
+
PDBファイルの座標
+
 
  typedef struct pdbCoord {
 
  typedef struct pdbCoord {
 
   pdbFileParaTypeReal x;
 
   pdbFileParaTypeReal x;
行243: 行361:
  
 
=== 二次構造 ===
 
=== 二次構造 ===
二次構造データが格納されている構造体です。リスト構造で管理し、各要素が二次構造一行分のデータに対応しています。
+
二次構造データが格納されている構造体です。リスト構造で管理し、二次構造一行分のデータに対応しています。
 
  typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord;  
 
  typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord;  
 
  struct pdbFileSecondaryStructureRecord {
 
  struct pdbFileSecondaryStructureRecord {
行381: 行499:
  
 
== API ==
 
== API ==
===ファイル読み出し===
+
=== ファイル管理 ===
 +
==== 読み出し ====
 
ファイルfptから読み出したデータを管理データpdbへ格納します。
 
ファイルfptから読み出したデータを管理データpdbへ格納します。
 
  extern void pdbFileRead(FILE* fpt, pdbFile* pdb);
 
  extern void pdbFileRead(FILE* fpt, pdbFile* pdb);
  
===ファイル書き込み===
+
==== 書き込み ====
 
管理データpdbを[[PDB]]形式でファイルfptへ書き込みます。(pdbFileRecordPrintを繰り返して使用)
 
管理データpdbを[[PDB]]形式でファイルfptへ書き込みます。(pdbFileRecordPrintを繰り返して使用)
 
  extern void pdbFileWrite(FILE* fpt, pdbFile* pdb);
 
  extern void pdbFileWrite(FILE* fpt, pdbFile* pdb);
pdb->PDBのデータを[[PDB]]形式でファイルfptへ一行分書き込みます。
 
extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);
 
 
管理データpdbをtsv形式でファイルfptへ書き込みます。(pdbFileRecordTablePrintを繰り返して使用)
 
管理データpdbをtsv形式でファイルfptへ書き込みます。(pdbFileRecordTablePrintを繰り返して使用)
 
  extern void pdbFileTableWrite(FILE* fpt, pdbFile* pdb);  
 
  extern void pdbFileTableWrite(FILE* fpt, pdbFile* pdb);  
pdb->PDBのデータをtsv形式でファイルfptへ一行分書き込みます。
 
extern pdbRecord* pdbFileRecordTablePrint(FILE* fpt, pdbFile* pdb);
 
 
管理データpdbから座標リストのみをファイルfptへ書き込みます。
 
管理データpdbから座標リストのみをファイルfptへ書き込みます。
 
  extern void pdbFileWriteCoord(FILE* fpt, pdbFile* pdb);
 
  extern void pdbFileWriteCoord(FILE* fpt, pdbFile* pdb);
二次構造データsecondを[[PDB]]形式でファイルfptへ書き込みます。(pdbFileSecondaryStructureRecordPrintを繰り返して使用)
 
extern void pdbFileWriteSecondaryStructure(FILE* fpt, pdbFileSecondaryStructure* second);
 
二次構造データsecondを[[PDB]]形式でファイルfptへ一行分書き込みます。
 
extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);
 
  
 
=== PDBデータ処理 ===
 
=== PDBデータ処理 ===
 
==== 新規作成 ====
 
==== 新規作成 ====
pdb->PDBのデータに新規データを作成します。<br>
+
pdb->PDBに新規データを作成します。<br>
 
メモリを確保して新規データを作り、先頭データとして、前、次のデータはNULLとします。
 
メモリを確保して新規データを作り、先頭データとして、前、次のデータはNULLとします。
 
  extern pdbRecord* pdbFileNew(pdbFile* pdb);
 
  extern pdbRecord* pdbFileNew(pdbFile* pdb);
行412: 行523:
 
  extern pdbRecord* pdbFileAppend(pdbFile* pdb);
 
  extern pdbRecord* pdbFileAppend(pdbFile* pdb);
  
 +
==== 解放 ====
 +
pdbのPDBデータを全て解放します。
 
  extern pdbRecord* pdbFileFree(pdbFile* pdb);
 
  extern pdbRecord* pdbFileFree(pdbFile* pdb);
  
===行列処理===
+
==== 書き込み ====
extern void pdbMatrixFileFormat(FILE* fpt);
+
pdb->PDBのデータを[[PDB]]形式でファイルfptへ一行分書き込みます。
extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix);
+
  extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);
extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);
+
pdb->PDBのデータをtsv形式でファイルfptへ一行分書き込みます。
 
+
  extern pdbRecord* pdbFileRecordTablePrint(FILE* fpt, pdbFile* pdb);
extern void pdbTrans(pdbFile* pdb, Matrix3D Matrix);
+
extern void pdbTransCuda(float* hv, int n, Matrix3D Matrix);
+
 
+
===Residue===
+
extern void pdbFileResidueSequenceNumberIncrementAll(pdbFile* pdb, int n);
+
extern void pdbFileResidueSequenceNumberIncrement(pdbFile* pdb, int n);
+
 
+
===Chain ID===
+
extern void pdbFileChainIdentifierSetAll(pdbFile* pdb, unsigned char c);
+
extern void pdbFileChainIdentifierSet(pdbFile* pdb, unsigned char c);
+
extern unsigned char pdbFileChainIdentifierGet(pdbFile* pdb);
+
 
+
===温度因子===
+
extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(pdbFile* pdb);
+
extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
+
 
+
extern pdbFileParaTypeReal pdbFileOccupancyGet(pdbFile* pdb);
+
extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
+
 
+
===二次構造===
+
二次構造(HELIX, SHEET, TURN)の場合は1、そうでない場合は0を返します。
+
extern long pdbFileIsSecondaryStructure(pdbFile* pdb);
+
 
+
pdb->PDB->FullRecordから二次構造を読み取り、secondへ格納します。
+
  extern int pdbSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
+
extern int pdbNoSecondaryStructureSetFromPDB(pdbFile* pdb, pdbFileSecondaryStructure* second);
+
 
+
secondへメモリを確保して新規作成した二次構造データを追加します。
+
extern int pdbSecondaryStructureAppend(pdbFileSecondaryStructure* second);
+
元々のデータ数second->nSecondaryStructure=0の場合は、新規データを先頭データとして、前、次のデータはNULLとします。<br>
+
そうでない場合は、新規データを現在のデータとして、前を元のデータ、次を元データの次として、間に挿入します。
+
 
+
 
+
  extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
+
 
+
===座標===
+
extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
+
 
+
extern long pdbFileCoordGet(pdbFile* pdb, pdbFileParaTypeReal* x, pdbFileParaTypeReal* y, pdbFileParaTypeReal* z);
+
extern long pdbFileResidueSequenceNumberGet(pdbFile* pdb);
+
extern char* pdbFileResidueNameGet(pdbFile* pdb,int mode);
+
  
===原子情報===
 
 
==== ポインタ移動 ====
 
==== ポインタ移動 ====
 
先頭データに移動します。
 
先頭データに移動します。
行482: 行553:
 
  extern pdbRecord* pdbFilePrevCA(pdbFile* pdb);
 
  extern pdbRecord* pdbFilePrevCA(pdbFile* pdb);
  
末尾データの場合は1、そうでない場合は0を返します。
 
extern long pdbFileEnd(pdbFile* pdb);
 
 
末尾データに移動します。
 
末尾データに移動します。
 
  extern long pdbFileGoToEnd(pdbFile* pdb);
 
  extern long pdbFileGoToEnd(pdbFile* pdb);
  
=== データ判定 ===
+
==== データ判定 ====
 +
末尾データの場合は1、そうでない場合は0を返します。
 +
extern long pdbFileEnd(pdbFile* pdb);
 
pdb->PDB->Recordが終端文字(END)の場合は1、そうでない場合は0を返します。
 
pdb->PDB->Recordが終端文字(END)の場合は1、そうでない場合は0を返します。
 
  extern long pdbFileIsEndLine(pdbFile* pdb);
 
  extern long pdbFileIsEndLine(pdbFile* pdb);
 
pdb->PDB->Recordが原子の場合は1、そうでない場合は0を返します。
 
pdb->PDB->Recordが原子の場合は1、そうでない場合は0を返します。
 
  extern long pdbFileIsAtom(pdbFile* pdb);
 
  extern long pdbFileIsAtom(pdbFile* pdb);
pdb->PDB->AtomNameがアルファ炭素( CA )の場合は1、そうでない場合は0を返します。
+
原子名pdb->PDB->AtomNameがアルファ炭素( CA )の場合は1、そうでない場合は0を返します。
 
  extern long pdbFileIsCA(pdbFile* pdb);
 
  extern long pdbFileIsCA(pdbFile* pdb);
 
+
原子名pdb->PDB->AtomNameから原子番号を返します。未対応の記号の場合は炭素として6を返します。
  extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);
+
  extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);
 +
pdb->PDBの残基名(1文字)が"D"または"E"の場合は1、そうでない場合は0を返します。
 
  extern long pdbFileIsNegative(pdbFile* pdb);
 
  extern long pdbFileIsNegative(pdbFile* pdb);
 +
pdb->PDBの残基名(1文字)が"K"または"R"の場合は1、そうでない場合は0を返します。
 
  extern long pdbFileIsPositive(pdbFile* pdb);
 
  extern long pdbFileIsPositive(pdbFile* pdb);
 +
pdb->PDBの残基名(1文字)が"K", "R", "D", "E"のいずれかの場合は1、そうでない場合は0を返します。
 
  extern long pdbFileIsCharge(pdbFile* pdb);
 
  extern long pdbFileIsCharge(pdbFile* pdb);
 +
ChainIDが同じで配列番号が隣同士の場合は1、そうでない場合は0を返します。
 +
extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);
  
 +
==== データ設定 ====
 +
座標pdb->PDB->Coordに(x, y, z)を設定します。
 +
extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
 +
温度因子pdb->PDB->TemperatureFactorにtempを設定します。
 +
extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
 +
Chain ID pdb->PDB->ChainIdentifierにcを設定します。
 +
extern void pdbFileChainIdentifierSet(pdbFile* pdb, unsigned char c);
 +
pdb内の全ての原子に対してChain IDをcに設定します。
 +
extern void pdbFileChainIdentifierSetAll(pdbFile* pdb, unsigned char c);
 +
占有率pdb->PDB->Occupancyにtempを設定します。
 +
extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
  
ヘリックス構造(HELIX)の場合は1、そうでない場合は0を返します。
+
==== データ取得 ====
  extern long pdbFileIsHelix(pdbFile* pdb);
+
(x, y, z)にpdb->PDB->Coordの座標を出力します。
シート構造(SHEET)の場合は1、そうでない場合は0を返します。
+
  extern long pdbFileCoordGet(pdbFile* pdb, pdbFileParaTypeReal* x, pdbFileParaTypeReal* y, pdbFileParaTypeReal* z);
  extern long pdbFileIsSheet(pdbFile* pdb);
+
残基配列番号pdb->PDB->ResidueSequenceNumberを返します。
ターン構造(TURN)の場合は1、そうでない場合は0を返します。
+
extern long pdbFileResidueSequenceNumberGet(pdbFile* pdb);
  extern long pdbFileIsTurn(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);
  
  extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);
+
==== データ処理 ====
 +
残基配列番号pdb->PDB->ResidueSequenceNumberを1つ増やします。
 +
  extern void pdbFileResidueSequenceNumberIncrement(pdbFile* pdb, int n);
 +
pdb内の全ての原子に対して残基配列番号を1つ増やします。
 +
extern void pdbFileResidueSequenceNumberIncrementAll(pdbFile* pdb, int n);
  
=== コピー処理 ===
+
==== コピー処理 ====
 
PDBデータsrc->PDBをdst->PDBへコピーします。<br>
 
PDBデータsrc->PDBをdst->PDBへコピーします。<br>
 
このとき、前、次データとの関係は保持されたままで、dst->PDBを返します。
 
このとき、前、次データとの関係は保持されたままで、dst->PDBを返します。
行529: 行627:
 
  extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);
 
  extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);
  
srcの1PDBデータ分をdstへコピーします。<br>
+
srcからdstへのタンパク質1つ分のデータをコピーします。<br>
 
dstは予めpdbFileNewにより初期化して使用して下さい。
 
dstは予めpdbFileNewにより初期化して使用して下さい。
 
  extern void pdbFileOneProteinCopy(pdbFile* dst, pdbFile* src, long num);
 
  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);
 +
 
 +
==== 書き込み ====
 +
二次構造データsecondを[[PDB]]形式でファイルfptへ書き込みます。(pdbFileSecondaryStructureRecordPrintを繰り返して使用)
 +
extern void pdbFileWriteSecondaryStructure(FILE* fpt, pdbFileSecondaryStructure* second);
 +
二次構造データsecondを[[PDB]]形式でファイルfptへ一行分書き込みます。
 +
extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);
 +
 
 +
==== 追加 ====
 +
secondへメモリを確保して新規作成した二次構造データを追加します。
 +
extern int pdbSecondaryStructureAppend(pdbFileSecondaryStructure* second);
 +
元々のデータ数second->nSecondaryStructure=0の場合は、新規データを先頭データとして、前、次のデータはNULLとします。<br>
 +
そうでない場合は、新規データを現在のデータとして、前を元のデータ、次を元データの次として、間に挿入します。
 +
 
 +
==== データ判定 ====
 +
二次構造(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に含まれている場合にその二次元構造データ、そうでない場合はpdbFileSecondaryStructureModeNoを返します。
 +
extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
 +
 
 +
=== 行列によるアフィン変換 ===
 +
==== ファイル処理 ====
 +
[[Matrix3D(API)#ファイル処理]]を使用して、ファイルの処理を行います。
 +
extern void pdbMatrixFileFormat(FILE* fpt);
 +
extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix);
 +
extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);
 +
 
 +
==== アフィン変換 ====
 +
行列Matrixを使用して、pdbにアフィン変換を行います。
 +
extern void pdbTrans(pdbFile* pdb, Matrix3D Matrix);
 +
extern void pdbTransCuda(float* hv, int n, Matrix3D Matrix);
 +
 
 +
[[Matrix3D(API)#アフィン行列]]を使用して行列を作成し、pdbを回転します。<br>
 +
[[オイラー角]]を使用した回転
 
  extern void pdbRotationFollowingEulerAngle(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
 
  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);
 
  extern void pdbRotationFollowingEulerAngleInverse(pdbFile* pdb, char Mode[4], pdbFileParaTypeReal rot1, pdbFileParaTypeReal rot2, pdbFileParaTypeReal rot3);
 +
指定した軸の順番で回転
 
  extern void pdbRotationXYZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
 
  extern void pdbRotationXYZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
 
  extern void pdbRotationZYX(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 pdbRotationZXY(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
 
  extern void pdbRotationYXZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);
 
  extern void pdbRotationYXZ(pdbFile* pdb, pdbFileParaTypeReal rotx, pdbFileParaTypeReal roty, pdbFileParaTypeReal rotz);

2014年10月7日 (火) 06:45時点における最新版

DataManip/pdbFilePDBファイルを取り扱うためのAPIです。

定数

PDBファイルでの構文

文字数定義

#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)

文字列定義

#define pdbRecordAtom       ("ATOM  ")
#define pdbRecordHeteroAtom ("HETATM")
#define pdbRecordHelix      ("HELIX ")
#define pdbRecordSheet      ("SHEET ")
#define pdbRecordTurn       ("TURN  ")
#define pdbRecordEnd        ("END   ")

残基名

residueName3: 3文字表記, residueName1: 1文字表記

typedef struct residueName {
  char residueName3[4];
  char residueName1[2];
} residueName;

ヘッダファイルには構造体のみ定義して、残基名は/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"
};
要素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


二次構造

二次構造のモード

typedef enum pdbFileSecondaryStructureMode {
	pdbFileSecondaryStructureModeNo    = 0,
	pdbFileSecondaryStructureModeHelix = 1,
	pdbFileSecondaryStructureModeSheet = 2,
	pdbFileSecondaryStructureModeTurn  = 3
} pdbFileSecondaryStructureMode;

ヘリックス構造

typedef enum pdbSecondaryStructureHelixClass {
	HelixClassRightHandedAlpha = 1,
	HelixClassRightHandedOmega = 2,
	HelixClassRightHandedPi    = 3,
	HelixClassRightHandedGammda= 4,
	HelixClassRightHanded310   = 5,
	HelixClassLeftHandedAlpha  = 6,
	HelixClassLeftHandedOmega  = 7,
	HelixClassLeftHandedGammda = 9,
	HelixClassPolyProline      = 10,
} pdbSecondaryStructureHelixClass;

構造体

管理データ

PDBデータ及びその二次構造データを管理する構造体です。

typedef struct pdbFile {
  pdbRecord* top;
  pdbRecord* PDB;
  pdbFileParaTypeInteger nAtom;
  pdbFileSecondaryStructure second;
} pdbFile;
メンバ 説明
top 先頭のPDBデータ(ポインタ)
PDB 現在のPDBデータ(ポインタ)
nAtom PDBデータ数
second 二次構造データ


二次構造管理データ

typedef struct pdbFileSecondaryStructure {
	int nSecondaryStructure;
	pdbFileSecondaryStructureRecord* top;
	pdbFileSecondaryStructureRecord* SecondaryStructure; 
} pdbFileSecondaryStructure;
メンバ 説明
nSecondaryStructure 二次構造データ数
top 先頭の二次構造データ(ポインタ)
SecondaryStructure 現在の二次構造データ(ポインタ)


PDBデータ

PDBデータが格納されている構造体です。リスト構造で管理し、PDBファイル一行分のデータに対応しています。

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;
};
メンバ 説明
FullRecord 一行分のPDBデータ
Record 原子情報としての一行分のPDBデータ
AtomSerialNumber
AtomName 原子名
LocationIndicator
ResidueName 残基名
ChainIdentifier Chain ID
ResidueSequenceNumber 残基配列番号
InsertionCode
Coord 原子の座標
Occupancy 占有率
TemperatureFactor 温度因子
FootnoteNumber
Footnote
prev 前データ
next 次データ


typedef char  pdbFileParaTypeCharacter;
typedef long  pdbFileParaTypeInteger;
typedef float pdbFileParaTypeReal;

PDBデータの座標

typedef struct pdbCoord {
  pdbFileParaTypeReal x;
  pdbFileParaTypeReal y;
  pdbFileParaTypeReal z;
} pdbCoord;

二次構造

二次構造データが格納されている構造体です。リスト構造で管理し、二次構造一行分のデータに対応しています。

typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord; 
struct pdbFileSecondaryStructureRecord {
	pdbFileSecondaryStructureMode mode;
	pdbSecondaryStructureHelix*   helix;
	pdbSecondaryStructureSheet*   sheet;
	pdbSecondaryStructureTurn*    turn;
	pdbSecondaryStructureNo*      no;

	pdbFileSecondaryStructureRecord* prev;
	pdbFileSecondaryStructureRecord* next;
};
メンバ 説明
mode 二次構造のモード
helix ヘリックス構造のデータ
sheet シート構造のデータ
turn ターン構造のデータ
no 二次構造なしのデータ
prev 前データ
next 次データ


ヘリックス構造

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

ファイル管理

読み出し

ファイルfptから読み出したデータを管理データpdbへ格納します。

extern void pdbFileRead(FILE* fpt, pdbFile* pdb);

書き込み

管理データpdbをPDB形式でファイルfptへ書き込みます。(pdbFileRecordPrintを繰り返して使用)

extern void pdbFileWrite(FILE* fpt, pdbFile* pdb);

管理データpdbをtsv形式でファイルfptへ書き込みます。(pdbFileRecordTablePrintを繰り返して使用)

extern void pdbFileTableWrite(FILE* fpt, pdbFile* pdb); 

管理データpdbから座標リストのみをファイルfptへ書き込みます。

extern void pdbFileWriteCoord(FILE* fpt, pdbFile* pdb);

PDBデータ処理

新規作成

pdb->PDBに新規データを作成します。
メモリを確保して新規データを作り、先頭データとして、前、次のデータはNULLとします。

extern pdbRecord* pdbFileNew(pdbFile* pdb);

追加

pdb->PDBのデータの後に新規データを追加します。
メモリを確保して新規データを作り、現在のデータとして、前を元のデータ、次を元データの次として、間に挿入します。

extern pdbRecord* pdbFileAppend(pdbFile* pdb);

解放

pdbのPDBデータを全て解放します。

extern pdbRecord* pdbFileFree(pdbFile* pdb);

書き込み

pdb->PDBのデータをPDB形式でファイルfptへ一行分書き込みます。

extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);

pdb->PDBのデータをtsv形式でファイルfptへ一行分書き込みます。

extern pdbRecord* pdbFileRecordTablePrint(FILE* fpt, pdbFile* pdb);

ポインタ移動

先頭データに移動します。

extern pdbRecord* pdbFileTop(pdbFile* pdb);

先頭データのポインタpdb->topを返します。

extern pdbRecord* pdbFileTopPointer(pdbFile* pdb);

次データに移動します。(該当無しの場合はNULLとします)

extern pdbRecord* pdbFileNext(pdbFile* pdb);

次の原子データに移動します。(該当無しの場合はNULLとします)

extern pdbRecord* pdbFileNextAtom(pdbFile* pdb);

次のアルファ炭素データに移動します。(該当無しの場合はNULLとします)

extern pdbRecord* pdbFileNextCA(pdbFile* pdb);

前データに移動します。(該当無しの場合はNULLとします)

extern pdbRecord* pdbFilePrev(pdbFile* pdb);

前の原子データに移動します。(該当無しの場合はNULLとします)

extern pdbRecord* pdbFilePrevAtom(pdbFile* pdb);

前のアルファ炭素データに移動します。(該当無しの場合はNULLとします)

extern pdbRecord* pdbFilePrevCA(pdbFile* pdb);

末尾データに移動します。

extern long pdbFileGoToEnd(pdbFile* pdb);

データ判定

末尾データの場合は1、そうでない場合は0を返します。

extern long pdbFileEnd(pdbFile* pdb);

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);

データ設定

座標pdb->PDB->Coordに(x, y, z)を設定します。

extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);

温度因子pdb->PDB->TemperatureFactorにtempを設定します。

extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);

Chain ID pdb->PDB->ChainIdentifierにcを設定します。

extern void pdbFileChainIdentifierSet(pdbFile* pdb, unsigned char c);

pdb内の全ての原子に対してChain IDをcに設定します。

extern void pdbFileChainIdentifierSetAll(pdbFile* pdb, unsigned char c);

占有率pdb->PDB->Occupancyにtempを設定します。

extern void pdbFileOccupancySet(pdbFile* pdb, double temp);

データ取得

(x, y, z)にpdb->PDB->Coordの座標を出力します。

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);

データ処理

残基配列番号pdb->PDB->ResidueSequenceNumberを1つ増やします。

extern void pdbFileResidueSequenceNumberIncrement(pdbFile* pdb, int n);

pdb内の全ての原子に対して残基配列番号を1つ増やします。

extern void pdbFileResidueSequenceNumberIncrementAll(pdbFile* pdb, int n);

コピー処理

PDBデータsrc->PDBをdst->PDBへコピーします。
このとき、前、次データとの関係は保持されたままで、dst->PDBを返します。

extern pdbRecord* pdbFileOneRecordCopy(pdbFile* dst, pdbFile* src);

srcの全てのPDBデータをdstへ上書きコピーします。
コピーを行う際にdstに対してpdbFileNewを呼び出すので、dstをpdbFileFreeなどで解放してから使用して下さい。

extern void pdbFileCopyAll(pdbFile* dst, pdbFile* src);

srcの全てのPDBデータをPDBデータdst->PDBの後に挿入します。

extern void pdbFileAppendAll(pdbFile* dst, pdbFile* src);

PDBデータsrc->PDBがアルファ炭素のときのみdst->PDBへコピーします。
このとき、前、次データとの関係は保持されたままで、コピーした場合はdst->PDB、されなかった場合はNULLを返します。

extern pdbRecord* pdbFileCAOnlyCopy(pdbFile* pdb, pdbFile* src);

srcの全てのアルファ炭素のPDBデータをdstへ上書きコピーします。
コピーを行う際にdstに対してpdbFileNewを呼び出すので、dstをpdbFileFreeなどで解放してから使用して下さい。

extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);

srcからdstへのタンパク質1つ分のデータをコピーします。
dstは予めpdbFileNewにより初期化して使用して下さい。

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);

書き込み

二次構造データsecondをPDB形式でファイルfptへ書き込みます。(pdbFileSecondaryStructureRecordPrintを繰り返して使用)

extern void pdbFileWriteSecondaryStructure(FILE* fpt, pdbFileSecondaryStructure* second);

二次構造データsecondをPDB形式でファイルfptへ一行分書き込みます。

extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);

追加

secondへメモリを確保して新規作成した二次構造データを追加します。

extern int pdbSecondaryStructureAppend(pdbFileSecondaryStructure* second);

元々のデータ数second->nSecondaryStructure=0の場合は、新規データを先頭データとして、前、次のデータはNULLとします。
そうでない場合は、新規データを現在のデータとして、前を元のデータ、次を元データの次として、間に挿入します。

データ判定

二次構造(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に含まれている場合にその二次元構造データ、そうでない場合はpdbFileSecondaryStructureModeNoを返します。

extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);

行列によるアフィン変換

ファイル処理

Matrix3D(API)#ファイル処理を使用して、ファイルの処理を行います。

extern void pdbMatrixFileFormat(FILE* fpt);
extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix);
extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);

アフィン変換

行列Matrixを使用して、pdbにアフィン変換を行います。

extern void pdbTrans(pdbFile* pdb, Matrix3D Matrix);
extern void pdbTransCuda(float* hv, int n, Matrix3D Matrix);

Matrix3D(API)#アフィン行列を使用して行列を作成し、pdbを回転します。
オイラー角を使用した回転

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);

指定した軸の順番で回転

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);