嗨
我目前參與制作一個旨在將所有乳頭狀瘤病毒信息合併到一個地方的網站。 作爲努力的一部分,我們正在策劃在公共服務器(例如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