Hola
Actualmente estoy involucrado en la creación de un sitio web destinado a combinar toda la información del virus del papiloma en un solo lugar. Como parte del esfuerzo estamos curando todos los archivos conocidos en servidores públicos (por ejemplo, genbank) Uno de los problemas con los que me encontré fue que muchas (~ 50%) de todas las estructuras resueltas no están numeradas según la proteína. Es decir un subdominio se cristalizó (aminoácido 310-450), sin embargo, el cristalógrafo lo depositó como residuo 1-140. Me preguntaba si alguien sabe de una forma de renumerar todo el archivo pdb. He encontrado formas de renumerar la secuencia (identificada por seqres), sin embargo, esto no actualiza la información de hélice y hoja. Le agradecería que si tuviera alguna sugerencia ...
Graciasresiduos de renumeración en un archivo de estructura de proteínas (pdb)
Respuesta
Con frecuencia encuentro este problema también. Después de abandonar un antiguo script de Perl que tenía para esto, he estado experimentando con Python. Esta solución supone que tienes instalado Biopython, ProDy (http://www.csb.pitt.edu/ProDy/#prody) y EMBOSS (http://emboss.sourceforge.net/).
Utilicé una de las entradas PDB de papiloma virus aquí.
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)
Soy el mantenedor de pdb-tools - que ma ser una herramienta que puede ayudarlo.
He modificado recientemente el script residue-renumber
dentro de mi aplicación para proporcionar más flexibilidad. Ahora puede renumber
hetatms y cadenas específicas, y puede forzar que los números de residuo sean continuos o simplemente agregar un desplazamiento especificado por el usuario a todos los residuos.
Háganme saber si esto le ayuda.
gracias, lo verificaré y ¡lo mantendré informado! – Stylize
- 1. Leyendo un archivo .pdb
- 2. Visualización de la estructura proteica
- 3. ¿Renumeración de figura en LaTeX?
- 4. ¿Qué es un archivo PDB?
- 5. Estructura de un archivo PDF?
- 6. Eliminar referencias de PDB del archivo publicado
- 7. media y mediana de residuos de un modelo lineal
- 8. ¿Cuál es el archivo PDB?
- 9. Eliminar archivo .pdb en visual studio 2010
- 10. array_diff y teclas numéricas renumeración
- 11. Cómo crear un archivo .MAP a partir de un archivo .PDB
- 12. Usando OpenCV para analizar datos de geles de proteínas
- 13. ¿Cómo determino el archivo y el número de línea de un método C# de un archivo de símbolos (.pdb)?
- 14. Pruebas unitarias. Estructura de archivo
- 15. ¿Genera PDB del archivo .NET DLL?
- 16. ILMerge excepción cuando se trata de fusionar archivo PDB
- 17. ¿Cómo incluir estructura de directorios en un archivo jar ant?
- 18. archivo PDB compilador y el enlazador AP archivo
- 19. Estructura de archivo de Mongoose & NodeJS Project
- 20. python pdb - salto de bucle
- 21. Comprensión GLM $ residuos y resid (GLM)
- 22. windbg: símbolos de pdb privados
- 23. Guardar el historial de comandos en pdb
- 24. Incrustar pdb en el ensamblado
- 25. Crear archivo tar sin estructura de carpeta
- 26. Archivo de Excel y estructura del programa
- 27. LNK1318: Error imprevisto de PDB; OK (0)
- 28. Un rompecabezas en la estructura de datos
- 29. PDB.run - reinicio de una sesión de pdb
- 30. ¿Es posible (re) crear un archivo PDB después de realizar una DLL?
El pdb-tools 'renumberer' no es para recomendar. Por ejemplo, ni siquiera considera las entradas de HETATM. –
gracias ... Jan-Philip. ¿Tiene alguna otra sugerencia? – Stylize
Tengo un problema similar. Ver mi publicación aquí: http://stackoverflow.com/questions/10786803/protein-sequence-alignment-from-protein-databank-to-cosmic-or-uniprot ¿Alguna vez lo resolvió? – user1357015