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

提供: Eospedia
移動: 案内検索
(API)
行563: 行563:
 
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を返します。
+
原子名pdb->PDB->AtomNameから原子番号を返します。未対応の記号の場合は炭素として6を返します。
 
  extern pdbFileParaTypeInteger pdbZValueGet(pdbFile* pdb);
 
  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);
  
 
==== データ設定 ====
 
==== データ設定 ====
 
pdb->PDB->Coordに座標(x, y, z)を設定します。
 
pdb->PDB->Coordに座標(x, y, z)を設定します。
 
  extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
 
  extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
 +
 +
extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
  
 
==== データ取得 ====
 
==== データ取得 ====
行579: 行587:
 
残基名を返します。(mode=RESIDUE_THREECHAR_MODE で3文字、そうでない場合は1文字)
 
残基名を返します。(mode=RESIDUE_THREECHAR_MODE で3文字、そうでない場合は1文字)
 
  extern char* pdbFileResidueNameGet(pdbFile* pdb,int mode);
 
  extern char* pdbFileResidueNameGet(pdbFile* pdb,int mode);
 +
 +
extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(pdbFile* pdb);
  
 
===行列処理===
 
===行列処理===
行601: 行611:
  
 
===温度因子===
 
===温度因子===
extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(pdbFile* pdb);
 
extern void pdbFileTemperatureFactorSet(pdbFile* pdb, double temp);
 
 
 
  extern pdbFileParaTypeReal pdbFileOccupancyGet(pdbFile* pdb);
 
  extern pdbFileParaTypeReal pdbFileOccupancyGet(pdbFile* pdb);
 
  extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
 
  extern void pdbFileOccupancySet(pdbFile* pdb, double temp);
行637: 行644:
 
pdb->PDBがsecond->SecondaryStructureに含まれている場合にその二次元構造データ、そうでない場合はpdbFileSecondaryStructureModeNoを返します。
 
pdb->PDBがsecond->SecondaryStructureに含まれている場合にその二次元構造データ、そうでない場合はpdbFileSecondaryStructureModeNoを返します。
 
  extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
 
  extern pdbFileSecondaryStructureMode pdbFileWithSecondaryStructure(pdbFile* pdb, pdbFileSecondaryStructure* second);
 
=== データ判定 ===
 
extern long pdbFileIsNegative(pdbFile* pdb);
 
extern long pdbFileIsPositive(pdbFile* pdb);
 
extern long pdbFileIsCharge(pdbFile* pdb);
 
  
 
=== コピー処理 ===
 
=== コピー処理 ===

2014年10月7日 (火) 02:39時点における版

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

末尾データの場合は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);

原子名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);

データ設定

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

extern long pdbFileCoordSet(pdbFile* pdb, pdbFileParaTypeReal x, pdbFileParaTypeReal y, pdbFileParaTypeReal z);
extern void pdbFileTemperatureFactorSet(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);
extern pdbFileParaTypeReal pdbFileTemperatureFactorGet(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);

ChainIDが同じでシーケンスNo.が隣同士の場合は1、そうでない場合は0を返します。

extern long pdbRecordIsNearby(pdbRecord record1,pdbRecord record2);

温度因子

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

二次構造

読み出し

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

コピー処理

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

回転処理

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