Biopython:是否有一种方法可以从PDB文件中提取特定链的氨基酸序列?

2024-09-24 00:33:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一堆PDB文件中提取特定链的单字母氨基酸序列

我可以使用SeqIO.parse()来实现这一点,但在我看来,这感觉很不和谐:

PDB_file_path = '/full/path/to/some/pdb' 

# Is there a 1-liner for this ?
query_seqres = SeqIO.parse(PDB_file_path, 'pdb-seqres')

for chain in query_seqres:
    if chain.id == query_chain_id:
        query_chain = chain.seq
#

有没有更简洁、更清晰的方法


Tags: 文件pathidchainforparse字母序列
2条回答

在@BioGeek answer上展开,下面是使用PDBParser.get_structure()而不是SeqIO.parse()时提取序列的等效代码

from Bio.PDB import PDBParser
from Bio.SeqUtils import seq1

pdbparser = PDBParser()

structure = pdbparser.get_structure(PDB_ID, PDB_file_path)
chains = {chain.id:seq1(''.join(residue.resname for residue in chain)) for chain in structure.get_chains()}

query_chain = chains[query_chain_id]

在我看来,它并没有太多的python功能,但您可以使用字典压缩将生成器转换为explictdict

from Bio import SeqIO
PDB_file_path = '6q62.pdb' 
query_chain_id = '6Q62:A'

chain = {record.id: record.seq for record in SeqIO.parse(PDB_file_path, 'pdb-seqres')}
query_chain = chain[query_chain_id]

相关问题 更多 >