首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用python从pdb文件中只选择具有杂原子的RNA?

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

Stack Overflow用户
提问于 2019-07-12 22:09:44
回答 1查看 58关注 0票数 0

我试图在一个复杂的蛋白质/ RNA文件中分离核糖核酸和蛋白质,我希望所有的核糖核酸信息与杂原子之间的碱基,但没有H20等。简而言之,我希望核糖核酸部分PDB文件没有不连续的行。

我设法用Bio PDB Select从蛋白质中分离出核糖核酸,但当我使用is_aa(残基)时,它认为杂原子是氨基酸。所以杂原子不会出现在我的“唯一的RNA”文件中。

代码语言:javascript
复制
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())
EN

回答 1

Stack Overflow用户

发布于 2020-04-05 21:55:08

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

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

代码语言:javascript
复制
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的调用,以便根据您的问题创建一个自包含的示例。

到目前为止,结果是:

seqRNAtest.pdb中的seqprotest.pdb

  • 112 HETATM中没有HOH的
  • 112 HETATM。2.输入
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57008703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档