Difference between revisions of "pdbFile(API)"

From EosPedia
Jump to: navigation, search
(Residue Name)
(Management Data)
Line 194: Line 194:
 
== struct ==
 
== struct ==
 
=== Management Data ===
 
=== Management Data ===
PDBdata及びその二次構造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>  
+
<th>Member</th>  
 
<th>Description</th>  
 
<th>Description</th>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>top</td>  
 
<td>top</td>  
<td>先頭のPDBdata(ポインタ)</td>  
+
<td>Top PDB data(Pointer)</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>PDB</td>  
 
<td>PDB</td>  
<td>現在のPDBdata(ポインタ)</td>  
+
<td>Current PDB data(Pointer)</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>nAtom</td>  
 
<td>nAtom</td>  
<td>PDBdata数</td>  
+
<td>Number of PDB data</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>second</td>  
 
<td>second</td>  
<td>二次構造data</td>  
+
<td>Secondary Structure data</td>  
 
</tr>  
 
</tr>  
 
</table>
 
</table>
 
<br>
 
<br>
  
==== 二次構造管理data ====
+
==== 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>  
+
<th>Member</th>  
 
<th>Description</th>  
 
<th>Description</th>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>nSecondaryStructure</td>  
 
<td>nSecondaryStructure</td>  
<td>二次構造data数</td>  
+
<td>Number of Secondary Structure data</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>top</td>  
 
<td>top</td>  
<td>先頭の二次構造data(ポインタ)</td>  
+
<td>Top Secondary Structure data(Pointer)</td>  
 
</tr>  
 
</tr>  
 
<tr>  
 
<tr>  
 
<td>SecondaryStructure</td>  
 
<td>SecondaryStructure</td>  
<td>現在の二次構造data(ポインタ)</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.

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