Identifizieren eines konservierten Rests in mehreren PDB-Strukturen

Ich habe ein paar hundert PDB-Strukturen desselben Proteins und muss in allen einen bestimmten konservierten Rest identifizieren.

Ursprünglich wollte ich die Sequenzen aus den PDB-Dateien mit BioPython extrahieren, sie ausrichten und diese Ausrichtung dann verwenden, um die Restnummer in jeder PDB für meinen konservierten Rest zu identifizieren.

Aber es stellt sich heraus, dass das ein bisschen schwieriger ist, als ich erwartet hatte. Teile der Sequenz fehlen oft in der PDB. Ich sehe keinen offensichtlichen Weg, um eine richtige Sequenz aus den PDB-Dateien zu erhalten. Dann gibt es das Problem, die Nummer des konservierten Rests wieder in die PDB-Datei abzubilden.

Gibt es einen einfacheren Weg, dies zu tun? Es muss nicht BioPython sein, obwohl das schön wäre.

Hier gibt es viele potenzielle Probleme. 1. Ihr Biopython-Skript hat Probleme, fehlende Sequenzen zu verarbeiten (Sie benötigen einen Fehlerbehandler). 2. Sie verwenden einen ungewöhnlichen Satz schlecht formatierter PDB-Dateien. Ich habe versucht zu antworten, vorausgesetzt, dass Ihre PDB-Codes gut zu Uniprot passen. Lass mich wissen, wie es geht!

Antworten (3)

Mein Ansatz für dieses Problem wäre die Verwendung von VMD (Visual Molecular Dynamics) , bei dem Sie mehrere PDBs laden, ein strukturelles und/oder Sequenz-Alignment durchführen und die Resterhaltung innerhalb eines Programms analysieren können.

VMD ist ein leistungsstarkes molekulares Visualisierungsprogramm zum Anzeigen, Animieren und Analysieren großer biomolekularer Systeme mithilfe von 3D-Grafiken und integrierten Skripten. Es ist wahrscheinlich ein Overkill für das, was Sie tun möchten, aber ich finde es ziemlich intuitiv zu bedienen und leistungsstark. Ich habe auch eine erstaunliche Dokumentation und viele Schritt-für-Schritt-Tutorials, beginnend mit dieser grundlegenden Einführung.

Was Sie speziell für Ihr Problem benötigen, ist ein MultiSeq 2.0- Plugin, das Sie in neuen Versionen von VMD unter Extensions->Analysis->MultiSeq finden. Es handelt sich um eine Bioinformatikumgebung, mit der Sie mit wenigen Mausklicks sowohl Sequenz- als auch Strukturdaten für Ihre Proteine ​​laden, anzeigen und analysieren können. Es hat auch eine großartige Reihe von Tutorials , die Ihnen den Einstieg erleichtern! Was Sie für den Vergleich vieler ähnlicher Proteinstrukturen interessant finden könnte, ist eine Option zum Erstellen, Anzeigen und Bearbeiten von Stammbäumen .

Hier ist eine Schritt-für-Schritt-Anleitung zum Vergleichen von Strukturen und Sequenzen mit MultiSeq.

Screenshot der MultiSeq-Sequenzausrichtung Screenshot der MultiSeq-Strukturausrichtung Mit MultiSeq erstellter Stammbaum

Hier finden Sie Originalveröffentlichungen sowohl für VMD als auch für MultiSeq:

VMD:

Humphrey, W., Dalke, A. und Schulten, K., VMD – Visuelle Molekulardynamik. , J. Molec. Graphics, 1996 , 14:33–38.

MultiSeq:

Roberts, E., Eargle, J., Wright, D. und Luthey-Schulten, Z., M ultiSeq: Unifying sequence and structure data for evolutionary analysis. BMC Bioinformatics, 2006 , 7:382.

Ich glaube nicht, dass das Problem für OP die MSA- oder Erhaltungsanalyse ist, es ist, dass die PDBs unvollständige Sequenzen haben und dies Probleme mit der Analyse von Python verursachen wird.

Unvollständige Sequenzen sind ein häufiges Problem. Eine Möglichkeit, dies zu umgehen, besteht darin, Ihre PDB-ID-Liste an einen ID-Mapper zu senden. Der bei Uniprot funktioniert gut. Kopieren Sie einfach Ihre PDB-ID-Codes und fügen Sie sie ein. Stellen Sie sicher, dass Sie von PDB zu UniprotKB wechseln (siehe Bild unten). Hoffentlich können Sie die meisten, wenn nicht alle Ihrer IDs zuordnen.

Bild, das PDB in der Dropdown-Liste zeigt

Danach laden Sie die Textdatei herunter. Dann können Sie die Sequenzen aus dieser Textdatei mit dem folgenden Skript extrahieren:

from Bio import SeqIO
filenames = ["YOURINPUTFILE.txt"]
input_format = "swiss" 
output_filename = "YOUROUTPUTFILE.fasta" 

output = open(output_filename, "w")
for filename in filenames:
    for record in SeqIO.parse(filename, input_format):
        sequence = record.seq
        output.write(">%s\n%s\n" % (record.id, sequence))

Senden Sie diese Sequenzen dann an Ihr bevorzugtes MSA-Tool. Ich habe hier eine Frage beantwortet, wie man eine MSA erstellt, wenn Sie noch keine erstellt haben.

Ein kleiner und vielleicht offensichtlicher Punkt beim Nachdenken ist, dass die Restzahl aufgrund von indels nicht in allen Ihren Sequenzen gleich sein wird . Sie müssen diese Situation neu bewerten, wenn Sie dort ankommen, wenn Sie immer noch vorhaben, die konservierten Reste auf 3D-Strukturen statt auf eine Sequenz abzubilden.

Sie können Ensembl ( http://www.ensembl.org/index.html ) verwenden, um Orthologe des Proteins abzurufen und sie mit einem von vielen kostenlosen, webbasierten Programmen (wie ClusterOmega) auszurichten.