python - python - 如何使用python从pdb文件中仅选择具有杂原子的RNA?
问题描述
我正在尝试在复杂的蛋白质/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())
解决方案
您是否尝试将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 HETATM 在 pdb2bh2.ent 中不是 HOH
- seqprotest.pdb 中没有 HETATM
- seqRNAtest.pdb 中的 112 个 HETATM
推荐阅读
- r - ggplot 通过 NA 重新缩放图例(然后回填 NA 值)
- sql - 无效的 NEW 或 OLD 规范 Oracle SQL
- pandas - MongoDB 聚合管道与 Pandas 聚合
- python - Python输出文件的不同日志级别和终端
- excel - 阻止由另一个单元格的值更改触发的 Excel 宏被多次触发,
- json - 最佳实践设计类型化 JSON 对象
- reactjs - 在 Safari 中使用排序
- c++ - 重载运算符>> C++
- python - 为什么使用 pytest-asyncio 和 @parametrize 会导致测试运行时间比不使用时长
- python - Python 美丽的汤 TypeError:find() 没有关键字参数