嗨
我目前参与制作一个旨在将所有乳头状瘤病毒信息合并到一个地方的网站。 作为努力的一部分,我们正在策划在公共服务器(例如GenBank) 一个我遇到的问题所有已知的文件是许多(〜50%)都解决了结构都没有根据蛋白质编号。 也就是说亚结晶结晶(氨基酸310-450),然而结晶学家将其作为残基1-140沉积。 我想知道是否有人知道重新编号整个pdb文件的方法。我已经找到了重新编号序列的方法(由seqres标识),但是这不会更新螺旋线和图表信息。 我将不胜感激,如果你有任何建议...
感谢在一个蛋白质结构文件中重新编号残基(pdb)
5
A
回答
1
我也经常遇到这个问题。在放弃了我以前的perl脚本之后,我一直在尝试使用一些python。此解决方案假定您已安装Biopython,ProDy(http://www.csb.pitt.edu/ProDy/#prody)和EMBOSS(http://emboss.sourceforge.net/)。
我这里使用的乳头状瘤病毒PDB条目之一。
from Bio import AlignIO,SeqIO,ExPASy,SwissProt
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Alphabet import IUPAC
from Bio.Emboss.Applications import NeedleCommandline
from prody.proteins.pdbfile import parsePDB, writePDB
import os
oneletter = {
'ASP':'D','GLU':'E','ASN':'N','GLN':'Q',
'ARG':'R','LYS':'K','PRO':'P','GLY':'G',
'CYS':'C','THR':'T','SER':'S','MET':'M',
'TRP':'W','PHE':'F','TYR':'Y','HIS':'H',
'ALA':'A','VAL':'V','LEU':'L','ILE':'I',
}
# Retrieve pdb to extract sequence
# Can probably be done with Bio.PDB but being able to use the vmd-like selection algebra is nice
pdbname="2kpl"
selection="chain A"
structure=parsePDB(pdbname)
pdbseq_str=''.join([oneletter[i] for i in structure.select("protein and name CA and %s"%selection).getResnames()])
alnPDBseq=SeqRecord(Seq(pdbseq_str,IUPAC.protein),id=pdbname)
SeqIO.write(alnPDBseq,"%s.fasta"%pdbname,"fasta")
# Retrieve reference sequence
accession="Q96QZ7"
handle = ExPASy.get_sprot_raw(accession)
swissseq = SwissProt.read(handle)
refseq=SeqRecord(Seq(swissseq.sequence,IUPAC.protein),id=accession)
SeqIO.write(refseq, "%s.fasta"%accession,"fasta")
# Do global alignment with needle from EMBOSS, stores entire sequences which makes numbering easier
needle_cli = NeedleCommandline(asequence="%s.fasta"%pdbname,bsequence="%s.fasta"%accession,gapopen=10,gapextend=0.5,outfile="needle.out")
needle_cli()
aln = AlignIO.read("needle.out", "emboss")
os.remove("needle.out")
os.remove("%s.fasta"%pdbname)
os.remove("%s.fasta"%accession)
alnPDBseq = aln[0]
alnREFseq = aln[1]
# Initialize per-letter annotation for pdb sequence record
alnPDBseq.letter_annotations["resnum"]=[None]*len(alnPDBseq)
# Initialize annotation for reference sequence, assume first residue is #1
alnREFseq.letter_annotations["resnum"]=range(1,len(alnREFseq)+1)
# Set new residue numbers in alnPDBseq based on alignment
reslist = [[i,alnREFseq.letter_annotations["resnum"][i]] for i in range(len(alnREFseq)) if alnPDBseq[i] != '-']
for [i,r] in reslist:
alnPDBseq.letter_annotations["resnum"][i]=r
# Set new residue numbers in the structure
newresnums=[i for i in alnPDBseq.letter_annotations["resnum"][:] if i != None]
resindices=structure.select("protein and name CA and %s"%selection).getResindices()
resmatrix = [[newresnums[i],resindices[i]] for i in range(len(newresnums)) ]
for [newresnum,resindex] in resmatrix:
structure.select("resindex %d"%resindex).setResnums(newresnum)
writePDB("%s.renumbered.pdb"%pdbname,structure)
0
6
我的pdb-tools维护者 - 这马你是一个可以帮助你的工具。
我最近修改了应用程序内的residue-renumber
脚本提供更多的灵活性。它现在可以renumber
hetatms和具体链,,要么迫使残留号码是连续的或者只是添加用户指定的偏移所有的残留物。
请让我知道,如果这有助于你。
+0
谢谢,我会检查出来,让你张贴! – Stylize 2012-12-07 16:54:23
相关问题
- 1. 从单个PDB文件中提取多个蛋白质链
- 2. 重新编号残基biopython
- 3. 从蛋白质数据库(PDB)文本文件中提取列
- 4. 用给定的残基编号列表替换pdb中的残基编号
- 5. 在Biopython PDB模块中获取残基编号和残基名称
- 6. 计算pdb文件中的残基数
- 7. 使用biopython从蛋白质数据库下载pdb的错误
- 8. 蛋白质编码基因正则表达式
- 9. DNA与蛋白质序列
- 10. mRNA/DNA与蛋白质
- 11. pdb蛋白库格式 - 配体去除
- 12. 立方残基模质数
- 13. 命令我可以用来从一组蛋白质中分离假设的蛋白质?
- 14. 在python中重新编号文件
- 15. Biopython:通过蛋白质登录获取XML文件
- 16. 基于Python的关键字获取蛋白质FASTA序列
- 17. 正则表达蛋白质消化
- 18. 在一个结构中重新排列结构
- 19. 阅读一个.pdb文件
- 20. 如何根据第一次蛋糕文件编译成功一个一个地运行两个蛋糕文件?
- 21. 从连接的fasta文件中,如何找到每个蛋白质序列中的个别位置范围
- 22. 和重新编号的文件
- 23. 在PDB文件
- 24. 复制一个结构部件成一个新的结构
- 25. 重新分配一个结构数组
- 26. 编译器PDB文件和链接器PDB文件
- 27. 重新编号一组行
- 28. 相同蛋白质的片段的系统发育树(来自宏基因组)
- 29. 如何从多个蛋白质比对中提取多态性位置?
- 30. 如何使用符号树文件夹结构将我的私人PDB复制到我的符号缓存中?
不建议使用pdb-tools'renumberer'。它甚至不考虑HETATM条目。 – 2011-07-20 14:25:38
谢谢...扬 - 菲利普。你有什么其他的建议? – Stylize 2012-01-18 13:59:56
我有类似的问题。看到我的帖子在这里:http://stackoverflow.com/questions/10786803/protein-sequence-alignment-from-protein-databank-to-cosmic-or-uniprot 你有没有解决它? – user1357015 2012-05-28 15:51:47