1

BiopythonでPQRファイル (占有率と B 係数が原子電荷と半径に置き換えられた修正済みPDBファイル)を読み取れるようにしたいと考えています。

Biopython PDB パーサーは、Bfactor の読み取りに失敗します。これは、PDB 列のインデックス (PQR 形式では考慮されない) によって値を取得するためです。

標準的な PDB アトム レコードの例:

ATOM      1  N   LEU     1       3.469  24.678   1.940  1.00 48.46           N

1.00 は占有率、48.46 は bfactor です。

そして PQR :

ATOM      1  N   LEU     1       3.469  24.678   1.940  0.1010 1.8240

0.1010 は電荷で、1.8240 は半径です

"PDBConstructionException: Invalid or missing B factor"では、電荷/半径の値を回避して適切に解析するにはどうすればよいですか?

4

1 に答える 1

0

PQR 形式は標準の PDB 形式ではなくなったため、必要に応じて Biopython PDB パーサーのソースを変更する必要があります。ありがたいことに、Biopython はオープン ソースであり、PDB.PDBParser非常に読みやすく、変更も簡単です。

データの抽出

あなたが与えたPQRの説明から:

「この形式は、特定の列幅と配置ではなく空白を使用するため、PDB から大幅に逸脱する可能性があります。」

Biopython の PDB パーサーは、厳密に列幅の値を想定しています。(PDB ファイルでは、値の間に空白がないことは完全に有効です。) で行データを抽出する方法を変更するのが最善の策だと思いますPDB.PDBParserが、他のエラーチェックとStructure作成のほとんどは維持します。フィールドは空白で区切られるため、 を使用line.split()してパラメーターのリストを作成し、意味のある名前を付けることができます。

特定の行からのデータを解析したら、おそらく Atom オブジェクトにフィールドとして保存したいと思うでしょう)。原子はで構造に追加されstructure_builderます。おそらく、電荷と半径をフィールドとしてオブジェクトinit_atom()に追加するように変更できます。PDB.Atom

どこから始めれば

変更するソース コード内のおおよその場所は次のとおりです。

概要

だから、最初から最後まで、私がやることは次のとおりです。

  1. 新しい Atom オブジェクトを作成する新しいStructureBuilderメソッドinit_pqr_atom()( をモデルにしたもの) を作成し、 newのフィールドとしておよびを追加します。(おそらく、継承するオブジェクトを作成したいでしょう?)。init_atom()chargeradiusAtomPDB.PQRAtomPDB.Atom
  2. パーサーに PQR ファイル (標準の PDB ではない) であることを伝える、のinit()メソッドでオプションのパラメーターを作成します。PDBParser

    def __init__(self, PERMISSIVE=True, get_header=False,
             structure_builder=None, QUIET=False, is_pqr=False):
    
  3. に渡します。これはそれを に渡しis_pqrます。_parse()_parse_coordinates
  4. 内で_parse_coordinates、PQR ファイルでない場合は通常どおりデータを解析します (つまり、デフォルトの PDB 列の仕様を使用します)。PQR の場合は、空白で区切られた形式に基づいてデータを解析します (ここでも、Pythonstr.split()は文字列から空白で区切られた項目のリストを返します)。
  5. 構造体に適切なAtomorPQRAtomオブジェクトを構築し、解析された値を渡します。
于 2012-11-14T17:13:35.157 に答える