如何使用python从pdb文件中仅选择具有杂原子的RNA?

问题描述 投票:0回答:1

我正在尝试从复杂蛋白质/ RNA PDB文件中的蛋白质中分离RNA,但我希望所有的RNA信息中的碱基之间都具有杂原子,但不含H20等。简而言之,我希望pdb文件的RNA部分没有不连续的行。

我设法通过Bio PDB Select从蛋白质中分离出RNA,但是当我使用is_aa(residue)时,它会将杂原子视为氨基酸。因此,杂原子不会出现在我的“仅RNA”文件中。

from Bio.PDB import *
from Bio.PDB import PDBParser, PDBIO, Select
import os

class ProtSelect(Select):
    def accept_residue(self, residue):
        return 1 if is_aa(residue) == True else 0

class RNASelect(Select):
    def accept_residue(self, residue):
        return 1 if is_aa(residue) == False and residue.id[0] != "W" else 0

pdb = PDBParser().get_structure("2bh2", "pdb2bh2.ent")
io = PDBIO()
io.set_structure(pdb)
io.save("seqprotest.pdb", ProtSelect())
io.save("seqRNAtest.pdb", RNASelect())
python bioinformatics biopython protein-database
1个回答
0
投票

您是否尝试将standard=True参数设置为is_aa

快速浏览以下代码的结果对我来说很有希望:

from Bio.PDB import is_aa
from Bio.PDB import PDBParser, PDBIO, Select


class ProtSelect(Select):
    def accept_residue(self, residue):
        print(f"{residue} -> {is_aa(residue)}")
        return is_aa(residue, standard=True)


class RNASelect(Select):
    def accept_residue(self, residue):
        return (not is_aa(residue, standard=True)) and residue.id[0] != "W"


from Bio import PDB

repo = PDB.PDBList()
repo.retrieve_pdb_file("2bh2", file_format="pdb")

pdb = PDBParser().get_structure("2bh2", "bh/pdb2bh2.ent")
io = PDBIO()
io.set_structure(pdb)
io.save("seqprotest.pdb", ProtSelect())
io.save("seqRNAtest.pdb", RNASelect())

请注意,我为retrieve_pdb_file添加了一个电话,以便根据您的问题创建一个独立的示例。

到目前为止的结果:

  • 112 pdb2bh2.ent中不是HOH的HETATM
  • seqprotest.pdb中没有HETATM
  • seqRNAtest.pdb中的112个HETATM
© www.soinside.com 2019 - 2024. All rights reserved.