PQR 形式は標準の PDB 形式ではなくなったため、必要に応じて Biopython PDB パーサーのソースを変更する必要があります。ありがたいことに、Biopython はオープン ソースであり、PDB.PDBParser
非常に読みやすく、変更も簡単です。
データの抽出
あなたが与えたPQRの説明から:
「この形式は、特定の列幅と配置ではなく空白を使用するため、PDB から大幅に逸脱する可能性があります。」
Biopython の PDB パーサーは、厳密に列幅の値を想定しています。(PDB ファイルでは、値の間に空白がないことは完全に有効です。) で行データを抽出する方法を変更するのが最善の策だと思いますPDB.PDBParser
が、他のエラーチェックとStructure
作成のほとんどは維持します。フィールドは空白で区切られるため、 を使用line.split()
してパラメーターのリストを作成し、意味のある名前を付けることができます。
特定の行からのデータを解析したら、おそらく Atom オブジェクトにフィールドとして保存したいと思うでしょう)。原子はで構造に追加されstructure_builder
ます。おそらく、電荷と半径をフィールドとしてオブジェクトinit_atom()
に追加するように変更できます。PDB.Atom
どこから始めれば
変更するソース コード内のおおよその場所は次のとおりです。
概要
だから、最初から最後まで、私がやることは次のとおりです。
- 新しい Atom オブジェクトを作成する新しい
StructureBuilder
メソッドinit_pqr_atom()
( をモデルにしたもの) を作成し、 newのフィールドとしておよびを追加します。(おそらく、継承するオブジェクトを作成したいでしょう?)。init_atom()
charge
radius
Atom
PDB.PQRAtom
PDB.Atom
パーサーに PQR ファイル (標準の PDB ではない) であることを伝える、のinit()
メソッドでオプションのパラメーターを作成します。PDBParser
def __init__(self, PERMISSIVE=True, get_header=False,
structure_builder=None, QUIET=False, is_pqr=False):
- に渡します。これはそれを に渡し
is_pqr
ます。_parse()
_parse_coordinates
- 内で
_parse_coordinates
、PQR ファイルでない場合は通常どおりデータを解析します (つまり、デフォルトの PDB 列の仕様を使用します)。PQR の場合は、空白で区切られた形式に基づいてデータを解析します (ここでも、Pythonstr.split()
は文字列から空白で区切られた項目のリストを返します)。
- 構造体に適切な
Atom
orPQRAtom
オブジェクトを構築し、解析された値を渡します。