1

pdb ファイルからヘテロ原子を削除する必要があります。コードは次のとおりですが、私のテスト PDB 1C4R では機能しませんでした。

for model in structure:
    for chain in model:
        for reisdue in chain:
            id = residue.id
            if id[0] != ' ':
                chain.detach_child(id)
        if len(chain) == 0:
            model.detach_child(chain.id)

なにか提案を?

4

2 に答える 2

0

私はかつてhttp://pelican.rsvs.ulaval.ca/mediawiki/index.php/Manipulating_PDB_files_using_BioPythonのコード「残留物の除去」を使用しました

一部のヘテロ原子が欠落します。detach_childが呼び出されるたびにチェーンが変わるためかもしれません。

for model in structure:
    for chain in model:
        for reisdue in chain:
            id = residue.id
            if id[0] != ' ':
                chain.detach_child(id)
        if len(chain) == 0:
            model.detach_child(chain.id)

以下のように変更した後(イテラブルを動的に変更することは避けてください)、私にとってはうまくいきました。(ここでは構造 [0]のみを使用しました。)

model = structure[0]
residue_to_remove = []
chain_to_remove = []
for chain in model:
    for residue in chain:
        if residue.id[0] != ' ':
            residue_to_remove.append((chain.id, residue.id))
    if len(chain) == 0:
        chain_to_remove.append(chain.id)

for residue in residue_to_remove:
    model[residue[0]].detach_child(residue[1])

for chain in chain_to_remove:
    model.detach_child(chain)
于 2016-03-18T21:35:45.800 に答える