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

提供: Eospedia
移動: 案内検索
(定数)
行1: 行1:
DataManip/'''pdbFile'''は[[PDB]]ファイルを取り扱うためのAPI です。
+
DataManip/'''pdbFile'''は[[PDB]]ファイルを取り扱うための[[API]]です。
  
 
== 定数 ==
 
== 定数 ==
=== [[PDB]]ファイルでの文字数定義 ===
+
=== [[PDB]]ファイルでの構文 ===
 +
==== 文字数定義 ====
 
  #define PDB_FILE_RECORD_FULL_LENGTH (80)
 
  #define PDB_FILE_RECORD_FULL_LENGTH (80)
 
  #define PDB_FILE_RECORD_START      (0)
 
  #define PDB_FILE_RECORD_START      (0)
行38: 行39:
 
  #define RESIDUE_THREECHAR_MODE      (3)
 
  #define RESIDUE_THREECHAR_MODE      (3)
  
=== [[PDB]]ファイルでの文字列定義 ===
+
==== 文字列定義 ====
 
  #define pdbRecordAtom      ("ATOM  ")
 
  #define pdbRecordAtom      ("ATOM  ")
 
  #define pdbRecordHeteroAtom ("HETATM")
 
  #define pdbRecordHeteroAtom ("HETATM")
行45: 行46:
 
  #define pdbRecordTurn      ("TURN  ")
 
  #define pdbRecordTurn      ("TURN  ")
 
  #define pdbRecordEnd        ("END  ")
 
  #define pdbRecordEnd        ("END  ")
 +
 +
=== 二次構造 ===
 +
==== 二次構造のモード ====
 +
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ファイル ===
 +
最上位の構造体です。[[PDB]]ファイルとの読み書きでも使用します。
 +
typedef struct pdbFile {
 +
  pdbRecord* top;
 +
  pdbRecord* PDB;
 +
  pdbFileParaTypeInteger nAtom;
 +
  pdbFileSecondaryStructure second;
 +
} pdbFile;
 +
<table border="1">
 +
<tr>
 +
<th>メンバ</th>
 +
<th>説明</th>
 +
</tr>
 +
<tr>
 +
<td>top</td>
 +
<td>先頭のPDBデータ(ポインタ)</td>
 +
</tr>
 +
<tr>
 +
<td>PDB</td>
 +
<td>現在のPDBデータ(ポインタ)</td>
 +
</tr>
 +
<tr>
 +
<td>nAtom</td>
 +
<td>原子情報数</td>
 +
</tr>
 +
<tr>
 +
<td>second</td>
 +
<td>二次構造データ</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
=== 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;
 +
};
 +
<table border="1">
 +
<tr>
 +
<th>メンバ</th>
 +
<th>説明</th>
 +
</tr>
 +
<tr>
 +
<td>FullRecord</td>
 +
<td>一行分のPDBデータ</td>
 +
</tr>
 +
<tr>
 +
<td>Record</td>
 +
<td>原子情報としての一行分のPDBデータ</td>
 +
</tr>
 +
<tr>
 +
<td>AtomSerialNumber</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>AtomName</td>
 +
<td>原子名</td>
 +
</tr>
 +
<tr>
 +
<td>LocationIndicator</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>ResidueName</td>
 +
<td>残基名</td>
 +
</tr>
 +
<tr>
 +
<td>ChainIdentifier</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>ResidueSequenceNumber</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>InsertionCode</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>Coord</td>
 +
<td>原子の座標</td>
 +
</tr>
 +
<tr>
 +
<td>Occupancy</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>TemperatureFactor</td>
 +
<td>温度因子</td>
 +
</tr>
 +
<tr>
 +
<td>FootnoteNumber</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>Footnote</td>
 +
<td></td>
 +
</tr>
 +
<tr>
 +
<td>prev</td>
 +
<td>前データ</td>
 +
</tr>
 +
<tr>
 +
<td>next</td>
 +
<td>次データ</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 
  typedef char  pdbFileParaTypeCharacter;
 
  typedef char  pdbFileParaTypeCharacter;
 
  typedef long  pdbFileParaTypeInteger;
 
  typedef long  pdbFileParaTypeInteger;
行63: 行216:
 
  } pdbCoord;
 
  } pdbCoord;
  
typedef enum pdbSecondaryStructureHelixClass {
+
=== 二次構造 ===
HelixClassRightHandedAlpha = 1,
+
  typedef struct pdbFileSecondaryStructure {
HelixClassRightHandedOmega = 2,
+
  int nSecondaryStructure;
HelixClassRightHandedPi    = 3,
+
  pdbFileSecondaryStructureRecord* top;
HelixClassRightHandedGammda= 4,
+
  pdbFileSecondaryStructureRecord* SecondaryStructure;
HelixClassRightHanded310  = 5,
+
  } pdbFileSecondaryStructure;
HelixClassLeftHandedAlpha = 6,
+
  HelixClassLeftHandedOmega  = 7,
+
  HelixClassLeftHandedGammda = 9,
+
  HelixClassPolyProline      = 10,
+
  } pdbSecondaryStructureHelixClass;
+
  
 +
==== ヘリックス構造 ====
 
  typedef struct pdbSecondaryStructureHelix {
 
  typedef struct pdbSecondaryStructureHelix {
 
  int  serNum;    /* Serial Number */
 
  int  serNum;    /* Serial Number */
行94: 行243:
 
  } pdbSecondaryStructureHelix;
 
  } pdbSecondaryStructureHelix;
  
 +
==== シート構造 ====
 
  typedef struct pdbSecondaryStructureSheet {
 
  typedef struct pdbSecondaryStructureSheet {
 
  int  strand; /* Strand number which starts 1 for eache strand wihtin a sheet and increases by one */   
 
  int  strand; /* Strand number which starts 1 for eache strand wihtin a sheet and increases by one */   
行125: 行275:
 
  char prevICode;  /* Registration. Insertion code in current strand */
 
  char prevICode;  /* Registration. Insertion code in current strand */
 
  }pdbSecondaryStructureSheet;
 
  }pdbSecondaryStructureSheet;
+
 
 +
==== ターン構造 ====
 
  typedef struct pdbSecondaryStructureTurn {
 
  typedef struct pdbSecondaryStructureTurn {
 
  int  serNum;    /* Serial Number */
 
  int  serNum;    /* Serial Number */
行159: 行310:
 
  char* comment;  
 
  char* comment;  
 
  }pdbSecondaryStructureNo;
 
  }pdbSecondaryStructureNo;
 
typedef enum pdbFileSecondaryStructureMode {
 
pdbFileSecondaryStructureModeNo    = 0,
 
pdbFileSecondaryStructureModeHelix = 1,
 
pdbFileSecondaryStructureModeSheet = 2,
 
pdbFileSecondaryStructureModeTurn  = 3
 
} pdbFileSecondaryStructureMode;
 
  
 
  typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord;  
 
  typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord;  
行178: 行322:
 
  pdbFileSecondaryStructureRecord* next;
 
  pdbFileSecondaryStructureRecord* next;
 
  };
 
  };
 
typedef struct pdbFileSecondaryStructure {
 
int nSecondaryStructure;
 
pdbFileSecondaryStructureRecord* top;
 
pdbFileSecondaryStructureRecord* SecondaryStructure;
 
} pdbFileSecondaryStructure;
 
 
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;
 
};
 
 
PDBファイルの構造
 
typedef struct pdbFile {
 
  pdbRecord* top;
 
  pdbRecord* PDB;
 
  pdbFileParaTypeInteger nAtom;
 
  pdbFileSecondaryStructure second;
 
} pdbFile;
 
  
 
== API ==
 
== API ==

2014年10月6日 (月) 05:34時点における版

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

二次構造

二次構造のモード

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ファイル

最上位の構造体です。PDBファイルとの読み書きでも使用します。

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


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
ResidueSequenceNumber
InsertionCode
Coord 原子の座標
Occupancy
TemperatureFactor 温度因子
FootnoteNumber
Footnote
prev 前データ
next 次データ


typedef char  pdbFileParaTypeCharacter;
typedef long  pdbFileParaTypeInteger;
typedef float pdbFileParaTypeReal;
typedef struct residueName {
  char residueName3[4];
  char residueName1[2];
} residueName;

PDBファイルの座標

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

二次構造

typedef struct pdbFileSecondaryStructure {
	int nSecondaryStructure;
	pdbFileSecondaryStructureRecord* top;
	pdbFileSecondaryStructureRecord* SecondaryStructure; 
} pdbFileSecondaryStructure;

ヘリックス構造

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;
typedef struct pdbFileSecondaryStructureRecord pdbFileSecondaryStructureRecord; 
struct pdbFileSecondaryStructureRecord {
	pdbFileSecondaryStructureMode mode;
	pdbSecondaryStructureHelix*   helix;
	pdbSecondaryStructureSheet*   sheet;
	pdbSecondaryStructureTurn*    turn;
	pdbSecondaryStructureNo*      no;

	pdbFileSecondaryStructureRecord* prev;
	pdbFileSecondaryStructureRecord* next;
};

API

ファイル読み出し(pdbFileRead)

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

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

ファイル書き込み(pdbFileWrite)

pdbのデータをファイルfptへ書き込みます。

extern void pdbFileWrite(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);
extern pdbRecord* pdbFileFree(pdbFile* pdb);
extern pdbRecord* pdbFileRecordPrint(FILE* fpt, pdbFile* pdb);

テーブル処理

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

行列処理

extern void pdbMatrixFileFormat(FILE* fpt);
extern void pdbMatrixFileRead(FILE* fpt, Matrix3D Matrix);
extern void pdbMatrixFileWrite(FILE* fpt, Matrix3D Matrix);
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);

二次構造

二次構造をファイルfptへ書き出します。

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

二次構造(HELIX, SHEET, TURN)の場合は1、そうでない場合は0を返します。

extern long pdbFileIsSecondaryStructure(pdbFile* pdb);
extern pdbFileSecondaryStructureRecord* pdbFileSecondaryStructureRecordPrint(FILE* fpt, pdbFileSecondaryStructureRecord* second);

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とします。
そうでない場合は、新規データを現在のデータとして、前を元のデータ、次を元データの次として、間に挿入します。


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

原子情報

ポインタ移動

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

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

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

extern long pdbFileEnd(pdbFile* pdb);

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

extern long pdbFileGoToEnd(pdbFile* pdb);

pdb->PDB->Recordが終端文字(END)の場合は1、そうでない場合は0を返します。

extern long pdbFileIsEndLine(pdbFile* pdb);

pdb->PDB->Recordが原子の場合は1、そうでない場合は0を返します。

extern long pdbFileIsAtom(pdbFile* pdb);
extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);
extern long pdbFileIsCA(pdbFile* pdb);
extern long pdbFileIsNegative(pdbFile* pdb);
extern long pdbFileIsPositive(pdbFile* pdb);
extern long pdbFileIsCharge(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);
extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);


extern pdbRecord* pdbFileCAOnlyCopy(pdbFile* pdb, pdbFile* src);
extern void pdbFileCAOnlyCopyAll(pdbFile* pdb, pdbFile* src);
extern void pdbFileCopyAll(pdbFile* dst, pdbFile* src);
extern void pdbFileAppendAll(pdbFile* dst, pdbFile* src);
extern pdbRecord* pdbFileOneRecordCopy(pdbFile* dst, pdbFile* src);
extern void pdbFileOneProteinCopy(pdbFile* dst, pdbFile* src, long num);

回転処理

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