Update April 2023: Der Code für die beiden gleichzeitigen Preprints zum Thema Proteindesign ist jetzt veröffentlicht! Code für „Sprachmodelle verallgemeinern über natürliche Proteine hinaus“ finden Sie unter „Beispiele/lm-design/“. Code für „Eine High-Level-Programmiersprache für generatives Proteindesign“ finden Sie unter Beispiele/Protein-Programmiersprache/.
Dieses Repository enthält Code und vorab trainierte Gewichte für Transformer-Protein-Sprachmodelle vom Meta Fundamental AI Research Protein Team (FAIR), einschließlich unserer hochmodernen ESM-2 und ESMFold sowie MSA Transformer , ESM-1v zur Vorhersage von Varianteneffekten und ESM-IF1 zur inversen Faltung. Transformer-Protein-Sprachmodelle wurden im Preprint 2019 des Artikels „Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences“ vorgestellt. ESM-2 übertrifft alle getesteten Einzelsequenz-Proteinsprachmodelle bei einer Reihe von Strukturvorhersageaufgaben. ESMFold nutzt das ESM-2-Sprachmodell, um genaue Strukturvorhersagen durchgängig direkt aus der Sequenz eines Proteins zu generieren.
Im November 2022 haben wir v0
des ESM Metagenomic Atlas veröffentlicht, einen offenen Atlas mit 617 Millionen vorhergesagten metagenomischen Proteinstrukturen. Der Atlas wurde im März 2023 in Zusammenarbeit mit EBI aktualisiert. Die neue v2023_02
fügt dem Atlas weitere 150 Millionen vorhergesagte Strukturen sowie vorberechnete ESM2-Einbettungen hinzu. Massendownload, Blogbeitrag und die auf der Atlas-Website bereitgestellten Ressourcen sind in dieser README-Datei dokumentiert.
Im Dezember 2022 haben wir gleichzeitig zwei Preprints zum Thema Proteindesign veröffentlicht.
Für Transformer-Protein-Sprachmodelle:
@article { rives2021biological ,
title = { Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences } ,
author = { Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo, Demi and Ott, Myle and Zitnick, C Lawrence and Ma, Jerry and others } ,
journal = { Proceedings of the National Academy of Sciences } ,
volume = { 118 } ,
number = { 15 } ,
pages = { e2016239118 } ,
year = { 2021 } ,
publisher = { National Acad Sciences } ,
note = { bioRxiv 10.1101/622803 } ,
doi = { 10.1073/pnas.2016239118 } ,
url = { https://www.pnas.org/doi/full/10.1073/pnas.2016239118 } ,
}
v2023_02
. Weitere Informationen finden Sie auf der Website und zum Massen-Download.<mask>
) nacheinander zu ermöglichen.ESM-MSA-1b
).Kurzschrift | esm.pretrained. | Datensatz | Beschreibung |
---|---|---|---|
ESM-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50 (Probe UR90) | SOTA-Allzweck-Proteinsprachenmodell. Kann verwendet werden, um Struktur, Funktion und andere Proteineigenschaften direkt aus einzelnen Sequenzen vorherzusagen. Veröffentlicht mit Lin et al. 2022 (Aktualisierung vom August 2022). |
ESMFold | esmfold_v1() | PDB + UR50 | End-to-End-Einzelsequenz-3D-Strukturprädiktor (Aktualisierung November 2022). |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | MSA Transformer-Sprachmodell. Kann zum Extrahieren von Einbettungen aus einem MSA verwendet werden. Ermöglicht SOTA-Inferenz der Struktur. Veröffentlicht mit Rao et al. 2021 (ICML'21-Version, Juni 2021). |
ESM-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | Sprachmodell, spezialisiert auf die Vorhersage von Varianteneffekten. Ermöglicht SOTA-Zero-Shot-Vorhersage der funktionalen Auswirkungen von Sequenzvariationen. Gleiche Architektur wie ESM-1b, jedoch auf UniRef90 trainiert. Veröffentlicht mit Meier et al. 2021. |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50() | KATH + UR50 | Inverses Faltmodell. Kann verwendet werden, um Sequenzen für gegebene Strukturen zu entwerfen oder funktionale Auswirkungen von Sequenzvariationen für gegebene Strukturen vorherzusagen. Ermöglicht das SOTA-Design mit fester Backbone-Sequenz. Veröffentlicht mit Hsu et al. 2022. |
Eine vollständige Liste der verfügbaren Modelle mit Details und Versionshinweisen finden Sie unter Vorab trainierte Modelle.
Ein einfacher Einstieg ist das Laden von ESM oder ESMFold über die HuggingFace-Transformer-Bibliothek, die die ESMFold-Abhängigkeiten vereinfacht und eine standardisierte API und Tools für die Arbeit mit hochmodernen vorab trainierten Modellen bereitstellt.
Alternativ hat ColabFold ESMFold integriert, sodass Sie es problemlos direkt im Browser auf einer Google Colab-Instanz ausführen können.
Wir bieten auch eine API an, auf die Sie über Curl oder auf der ESM Metagenomic Atlas-Webseite zugreifen können.
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
Für ESM-MSA-1b, ESM-IF1 oder eines der anderen Modelle können Sie die Originalimplementierung aus unserem Repo direkt über die folgenden Anweisungen verwenden.
Als Voraussetzung muss PyTorch installiert sein, um dieses Repository nutzen zu können.
Sie können diesen Einzeiler für die Installation verwenden, indem Sie die neueste Version von esm verwenden:
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
Um das ESMFold-Modell zu verwenden, stellen Sie sicher, dass Sie in einer Umgebung mit Python <= 3.9 und installiertem Pytorch starten. Fügen Sie dann die Option [esmfold]
zu Ihrer Pip-Installation hinzu, wodurch die Abhängigkeiten für OpenFold automatisch installiert werden. Für die Openfold-Installation ist nvcc
erforderlich.
pip install " fair-esm[esmfold] "
# OpenFold and its remaining dependency
pip install ' dllogger @ git+https://github.com/NVIDIA/dllogger.git '
pip install ' openfold @ git+https://github.com/aqlaboratory/openfold.git@4b41059694619831a7db195b7e0988fc4ff3a307 '
HINWEIS : Wenn die Openfold-Installation fehlschlägt, überprüfen Sie bitte noch einmal, ob nvcc
verfügbar ist und eine cuda-kompatible Version von PyTorch installiert wurde.
Alternativ stellen wir die esmfold
Conda-Umgebung bereit, die über conda env create -f environment.yml
erstellt werden kann.
Wir unterstützen auch PyTorch Hub, wodurch die Notwendigkeit entfällt, dieses Repository selbst zu klonen und/oder zu installieren:
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
Nach der Pip-Installation können Sie ein vorab trainiertes Modell wie folgt laden und verwenden:
import torch
import esm
# Load ESM-2 model
model , alphabet = esm . pretrained . esm2_t33_650M_UR50D ()
batch_converter = alphabet . get_batch_converter ()
model . eval () # disables dropout for deterministic results
# Prepare data (first 2 sequences from ESMStructuralSplitDataset superfamily / 4)
data = [
( "protein1" , "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG" ),
( "protein2" , "KALTARQQEVFDLIRDHISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE" ),
( "protein2 with mask" , "KALTARQQEVFDLIRD<mask>ISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE" ),
( "protein3" , "K A <mask> I S Q" ),
]
batch_labels , batch_strs , batch_tokens = batch_converter ( data )
batch_lens = ( batch_tokens != alphabet . padding_idx ). sum ( 1 )
# Extract per-residue representations (on CPU)
with torch . no_grad ():
results = model ( batch_tokens , repr_layers = [ 33 ], return_contacts = True )
token_representations = results [ "representations" ][ 33 ]
# Generate per-sequence representations via averaging
# NOTE: token 0 is always a beginning-of-sequence token, so the first residue is token 1.
sequence_representations = []
for i , tokens_len in enumerate ( batch_lens ):
sequence_representations . append ( token_representations [ i , 1 : tokens_len - 1 ]. mean ( 0 ))
# Look at the unsupervised self-attention map contact predictions
import matplotlib . pyplot as plt
for ( _ , seq ), tokens_len , attention_contacts in zip ( data , batch_lens , results [ "contacts" ]):
plt . matshow ( attention_contacts [: tokens_len , : tokens_len ])
plt . title ( seq )
plt . show ()
Nach der Installation mit der Option [esmfold]
können Sie das ESMFold-Strukturvorhersagemodell wie folgt verwenden:
import torch
import esm
model = esm . pretrained . esmfold_v1 ()
model = model . eval (). cuda ()
# Optionally, uncomment to set a chunk size for axial attention. This can help reduce memory.
# Lower sizes will have lower memory requirements at the cost of increased speed.
# model.set_chunk_size(128)
sequence = "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
# Multimer prediction can be done with chains separated by ':'
with torch . no_grad ():
output = model . infer_pdb ( sequence )
with open ( "result.pdb" , "w" ) as f :
f . write ( output )
import biotite . structure . io as bsio
struct = bsio . load_structure ( "result.pdb" , extra_fields = [ "b_factor" ])
print ( struct . b_factor . mean ()) # this will be the pLDDT
# 88.3
Neben esm.pretrained.esmfold_v1()
, dem von uns empfohlenen Modell mit der besten Leistung, bieten wir auch esm.pretrained.esmfold_v0()
an, das für die Experimente in Lin et al. verwendet wurde. 2022.
Wir bieten auch eine Befehlszeilenschnittstelle ( esm-fold
), die mit ESMFold effizient Massenstrukturen aus einer FASTA-Datei vorhersagt:
usage: esm-fold [-h] -i FASTA -o PDB [--num-recycles NUM_RECYCLES]
[--max-tokens-per-batch MAX_TOKENS_PER_BATCH]
[--chunk-size CHUNK_SIZE] [--cpu-only] [--cpu-offload]
optional arguments:
-h, --help show this help message and exit
-i FASTA, --fasta FASTA
Path to input FASTA file
-o PDB, --pdb PDB Path to output PDB directory
--num-recycles NUM_RECYCLES
Number of recycles to run. Defaults to number used in
training (4).
--max-tokens-per-batch MAX_TOKENS_PER_BATCH
Maximum number of tokens per gpu forward-pass. This
will group shorter sequences together for batched
prediction. Lowering this can help with out of memory
issues, if these occur on short sequences.
--chunk-size CHUNK_SIZE
Chunks axial attention computation to reduce memory
usage from O(L^2) to O(L). Equivalent to running a for
loop over chunks of of each dimension. Lower values
will result in lower memory usage at the cost of
speed. Recommended values: 128, 64, 32. Default: None.
--cpu-only CPU only
--cpu-offload Enable CPU offloading
Der Befehl erstellt eine Vorhersage für jede Sequenz in der Fasta-Datei. Multimere können vorhergesagt werden und sollten als einzelne Sequenz in die Fasta-Datei eingegeben werden, wobei die Ketten durch ein „:“ getrennt sind.
Standardmäßig werden Vorhersagen gestapelt, sodass kürzere Sequenzen gleichzeitig vorhergesagt werden. Dies kann durch die Einstellung --max-tokens-per-batch=0
deaktiviert werden. Die Stapelverarbeitung kann die Vorhersagegeschwindigkeit bei kürzeren Sequenzen erheblich verbessern.
Das Flag --cpu-offload
kann nützlich sein, um Vorhersagen über längere Sequenzen zu treffen. Es wird versucht, einige Parameter in den CPU-RAM auszulagern, anstatt sie auf der GPU zu speichern.
Schließlich wurden die Ablationsexperimente für LMs unterschiedlicher Größe von Lin et al. 2022 Tabelle S1 wird als esm.pretrained.esmfold_structure_module_only_*()
veröffentlicht. Wir empfehlen, diese Modelle nicht für die Strukturvorhersage zu verwenden.
Wir stellen eine Befehlszeilenschnittstelle ( esm-extract
) bereit, die Einbettungen in großen Mengen für eine FASTA-Datei effizient aus dem ESM extrahiert:
usage: esm-extract [-h] [--toks_per_batch TOKS_PER_BATCH]
[--repr_layers REPR_LAYERS [REPR_LAYERS ...]] --include
{mean,per_tok,bos,contacts}
[{mean,per_tok,bos,contacts} ...]
[--truncation_seq_length TRUNCATION_SEQ_LENGTH]
model_location fasta_file output_dir
Extract per-token representations and model outputs for sequences in a FASTA
file
positional arguments:
model_location PyTorch model file OR name of pretrained model to
download (see README for models)
fasta_file FASTA file on which to extract representations
output_dir output directory for extracted representations
optional arguments:
-h, --help show this help message and exit
--toks_per_batch TOKS_PER_BATCH
maximum batch size
--repr_layers REPR_LAYERS [REPR_LAYERS ...]
layers indices from which to extract representations
(0 to num_layers, inclusive)
--include {mean,per_tok,bos,contacts} [{mean,per_tok,bos,contacts} ...]
specify which representations to return
--truncation_seq_length TRUNCATION_SEQ_LENGTH
truncate sequences longer than the given value
Die folgenden Befehle ermöglichen die Extraktion der Einbettung der letzten Ebene für eine FASTA-Datei aus dem ESM-2-Modell:
esm-extract esm2_t33_650M_UR50D examples/data/some_proteins.fasta
examples/data/some_proteins_emb_esm2 --repr_layers 0 32 33 --include
python scripts/extract.py esm2_t33_650M_UR50D examples/data/some_proteins.fasta
examples/data/some_proteins_emb_esm2 --repr_layers 0 32 33 --include mean per_tok
Ein Cuda-Gerät ist optional und wird automatisch erkannt.
Das Verzeichnis some_proteins_emb_esm2/
enthält jetzt eine .pt
Datei pro FASTA-Sequenz; Verwenden Sie torch.load()
um sie zu laden. scripts/extract.py
verfügt über Flags, die bestimmen, was in der .pt
Datei enthalten ist:
--repr-layers
(Standard: nur final) wählt aus, aus welchen Ebenen Einbettungen einbezogen werden sollen.--include
gibt an, welche Einbettungen gespeichert werden sollen. Sie können Folgendes verwenden:per_tok
enthält die vollständige Sequenz mit einer Einbettung pro Aminosäure (seq_len x versteckt_dim).mean
umfasst die über die gesamte Sequenz gemittelten Einbettungen pro Ebene.bos
enthält die Einbettungen aus dem Sequenzanfangstoken. (HINWEIS: Nicht mit den vorab trainierten Modellen verwenden – wir haben ohne Bos-Token-Aufsicht trainiert) Wenn Sie sehr große Modelle wie 15B laden und/oder Rückschlüsse auf lange Sequenzen auf Ihrem Computer ziehen möchten, kann ein normaler GPU-Rückschluss zu OOM-Fehlern führen. Wir zeigen, wie Sie das Modell mit Fairscales Fully Sharded Data Parallel (FSDP) laden und dessen CPU-Offloading-Funktion nutzen. Dies ermöglicht die Inferenz großer Modelle auf einer einzelnen GPU. Weitere Informationen finden Sie unter examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
.
Unter „examples/variant-prediction/“ finden Sie Code und vorab trainierte Gewichte für die in Sprachmodelle beschriebenen ESM-1v-Modelle ermöglichen eine Zero-Shot-Vorhersage der Auswirkungen von Mutationen auf die Proteinfunktion. (Meier et al. 2021).
Beachten Sie, dass ESM-2 auch für die Variantenvorhersage verwendet werden könnte und voraussichtlich eine ähnliche Leistung wie ESM-1v haben wird.
Eine ausführliche Bedienungsanleitung finden Sie unter „examples/inverse_folding/“. Das ESM-IF1-Modell wird als GVPTransformer
in Lernen der inversen Faltung aus Millionen vorhergesagter Strukturen beschrieben. (Hsu et al. 2022).
Wir stellen außerdem ein Colab-Notizbuch für die Sequenzdesign- und Sequenzbewertungsfunktionen bereit.
Das inverse Faltungsmodell ESM-IF1 dient zur Vorhersage von Proteinsequenzen anhand der Koordinaten ihrer Rückgratatome. Wir stellen hier Skripte zur Verfügung, um 1) Sequenzentwürfe für eine bestimmte Struktur zu testen und 2) Sequenzen für eine bestimmte Struktur zu bewerten.
Das ESM-IF1-Modell wurde mit von AlphaFold2 vorhergesagten 12M-Proteinstrukturen trainiert und besteht aus invarianten geometrischen Eingabeverarbeitungsschichten, gefolgt von einem Sequenz-zu-Sequenz-Transformator. Es erreicht eine native Sequenzwiederherstellung von 51 % auf strukturell ausgehaltenen Grundgerüsten und eine Wiederherstellung von 72 % bei vergrabenen Rückstände. Das Modell wird außerdem mit Spannenmaskierung trainiert, um fehlende Backbone-Koordinaten zu tolerieren und kann daher Sequenzen für teilweise maskierte Strukturen vorhersagen.
Die Umgebungseinrichtung wird in diesem Unterabschnitt von examples/inverse_folding beschrieben.
Um Sequenzen für eine bestimmte Struktur im PDB- oder mmCIF-Format abzutasten, verwenden Sie das Skript sample_sequences.py
“. Die Eingabedatei kann entweder .pdb
oder .cif
als Suffix haben.
Um beispielsweise drei Sequenzdesigns für die Golgi-Kaseinkinase-Struktur (PDB 5YH2; PDB-Molekül des Monats Januar 2022) zu testen, können wir den folgenden Befehl aus dem ESM-Stammverzeichnis ausführen:
python examples/inverse_folding/sample_sequences.py examples/inverse_folding/data/5YH2.pdb
--chain C --temperature 1 --num-samples 3 --outpath examples/inverse_folding/output/sampled_sequences.fasta
Die gesampelten Sequenzen werden im Fasta-Format in der angegebenen Ausgabedatei gespeichert.
Der Temperaturparameter steuert die Schärfe der Wahrscheinlichkeitsverteilung für die Sequenzabtastung. Höhere Probentemperaturen ergeben vielfältigere Sequenzen, jedoch wahrscheinlich mit einer geringeren Wiederherstellung nativer Sequenzen. Die Standard-Probenahmetemperatur ist 1. Zur Optimierung der nativen Sequenzwiederherstellung empfehlen wir die Probenahme mit niedriger Temperatur wie 1e-6.
Um die bedingten Log-Likelihoods für Sequenzen zu bewerten, die von einer bestimmten Struktur abhängig sind, verwenden Sie das Skript score_log_likelihoods.py
.
Um beispielsweise die Sequenzen in examples/inverse_folding/data/5YH2_mutated_seqs.fasta
entsprechend der Struktur in examples/inverse_folding/data/5YH2.pdb
zu bewerten, können wir den folgenden Befehl aus dem ESM-Stammverzeichnis ausführen:
python examples/inverse_folding/score_log_likelihoods.py examples/inverse_folding/data/5YH2.pdb
examples/inverse_folding/data/5YH2_mutated_seqs.fasta --chain C
--outpath examples/inverse_folding/output/5YH2_mutated_seqs_scores.csv
Die bedingten Protokollwahrscheinlichkeiten werden im CSV-Format im angegebenen Ausgabepfad gespeichert. Die Ausgabewerte sind die durchschnittlichen Log-Likelihoods, gemittelt über alle Aminosäuren in einer Sequenz.
Weitere Informationen finden Sie unter „./examples/inverse_folding/“ für eine ausführliche Bedienungsanleitung.
Bitte besuchen Sie die Website des ESM Metagenomic Atlas und lesen Sie unseren Blogbeitrag, um mehr zu erfahren.
Anweisungen zum Massen-Download finden Sie hier in einer separaten README-Datei.
Zu den Atlas-Ressourcen gehören eine Seite zum Falten einer Sequenz mit ESMFold, das Durchsuchen einer Teilmenge des ESM-Atlas nach Struktur oder Sequenz sowie eine API für den programmgesteuerten Zugriff auf diese Ressourcen.
Foldseek bietet hier eine Suche anhand des Atlas ohne Längenbeschränkung.
Das inverse Faltungsmodell ESM-IF1 sagt Proteinsequenzen anhand ihrer Grundatomkoordinaten voraus, trainiert mit 12M-Proteinstrukturen, die von AlphaFold2 vorhergesagt wurden. Diese Notiz führte Sie durch Beispiele für Abtastsequenzen, die Berechnung bedingter Log-Likelihoods und das Extrahieren der Encoder-Ausgabe als Strukturdarstellung.
Um Ihnen den Einstieg in die Verwendung der Einbettungen zu erleichtern, zeigt dieses Jupyter-Notebook-Tutorial, wie Sie einen überwachten Variantenprädiktor mithilfe von Einbettungen von ESM-1 trainieren. Sie können ein ähnliches Protokoll übernehmen, um ein Modell für jede nachgelagerte Aufgabe zu trainieren, selbst mit begrenzten Daten. Zuerst können Sie die Einbettungen für examples/data/P62593.fasta
erhalten, indem Sie entweder die vorberechneten Einbettungen gemäß den Anweisungen im Notebook herunterladen oder Folgendes ausführen:
# Obtain the embeddings
python scripts/extract.py esm1v_t33_650M_UR90S_1 examples/data/P62593.fasta
examples/data/P62593_emb_esm1v --repr_layers 33 --include mean
Befolgen Sie dann die restlichen Anweisungen im Tutorial. Sie können das Tutorial auch in einem Colab-Notizbuch ausführen.
Beachten Sie, dass Sie alternativ die neueren Anweisungen für die Zero-Shot-Variantenvorhersage verwenden können, die Mutationseffekte ohne überwachtes Training vorhersagt.
Dieses Jupyter-Notebook-Tutorial demonstriert die Kontaktvorhersage mit den Modellen ESM-2 und MSA Transformer (ESM-MSA-1). Die Kontaktvorhersage basiert auf einer logistischen Regression über die Aufmerksamkeitskarten des Modells. Diese Methodik basiert auf unserem ICLR 2021-Artikel „Transformer-Protein-Sprachmodelle sind unüberwachte Strukturlerner“. (Rao et al. 2020) Der MSA-Transformer (ESM-MSA-1) verwendet ein Multiple Sequence Alignment (MSA) als Eingabe und verwendet die gebundenen Zeilen-Selbstaufmerksamkeitskarten auf die gleiche Weise. Siehe MSA-Transformator. (Rao et al. 2021).
Um unbeaufsichtigte, aufmerksamkeitsbasierte Kontakte zu erhalten, rufen Sie model.predict_contacts(tokens)
oder model(tokens, return_contacts=True)
auf.
Und dieses Jupyter-Notebook-Tutorial zeigt, wie Sie ESMStructuralSplitDataset
laden und indizieren und die unbeaufsichtigten Kontaktvorhersagen der Self-Attention-Map mithilfe von ESM-2 berechnen.
Kurzschrift | esm.pretrained. | #Schichten | #params | Datensatz | Dim einbetten | Modell-URL (wird automatisch nach ~/.cache/torch/hub/checkpoints heruntergeladen) |
---|---|---|---|---|---|---|
ESM-2 | esm2_t48_15B_UR50D | 48 | 15B | UR50/D 2021_04 | 5120 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t48_15B_UR50D.pt |
esm2_t36_3B_UR50D | 36 | 3B | UR50/D 2021_04 | 2560 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t36_3B_UR50D.pt | |
esm2_t33_650M_UR50D | 33 | 650M | UR50/D 2021_04 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t33_650M_UR50D.pt | |
esm2_t30_150M_UR50D | 30 | 150M | UR50/D 2021_04 | 640 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t30_150M_UR50D.pt | |
esm2_t12_35M_UR50D | 12 | 35M | UR50/D 2021_04 | 480 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t12_35M_UR50D.pt | |
esm2_t6_8M_UR50D | 6 | 8M | UR50/D 2021_04 | 320 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t6_8M_UR50D.pt | |
ESMFold | esmfold_v1 | 48 (+36) | 690M (+3B) | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v1.pt |
esmfold_v0 | 48 (+36) | 690M (+3B) | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v0.pt | |
esmfold_structure_module_only_* | 0 (+verschiedene) | verschieden | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_structure_module_only_* | |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50 | 20 | 124M | CATH 4.3 + vorhergesagte Strukturen für UR50 | 512 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_if1_gvp4_t16_142M_UR50.pt |
ESM-1v | esm1v_t33_650M_UR90S_[1-5] | 33 | 650M | UR90/S 2020_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1v_t33_650M_UR90S_1.pt |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S | 12 | 100M | UR50/S + MSA 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1b_t12_100M_UR50S.pt |
ESM-MSA-1 | esm_msa1_t12_100M_UR50S | 12 | 100M | UR50/S + MSA 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1_t12_100M_UR50S.pt |
ESM-1b | esm1b_t33_650M_UR50S | 33 | 650M | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt |
ESM-1 | esm1_t34_670M_UR50S | 34 | 670M | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt |
esm1_t34_670M_UR50D | 34 | 670M | UR50/D 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt | |
esm1_t34_670M_UR100 | 34 | 670M | UR100 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt | |
esm1_t12_85M_UR50S | 12 | 85M | UR50/S 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt | |
esm1_t6_43M_UR50S | 6 | 43M | UR50/S 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt |
Hier ist eine chronologische Liste der veröffentlichten Modelle und der Veröffentlichung, in der sie vorgestellt wurden:
Kurzschrift | Versionshinweise |
---|---|
ESM-1 | Veröffentlicht mit Rives et al. 2019 (Update vom August 2020). |
ESM-1b | Veröffentlicht mit Rives et al. 2019 (Aktualisierung Dezember 2020). Siehe Anhang B. |
ESM-MSA-1 | Veröffentlicht mit Rao et al. 2021 (Preprint v1). |
ESM-MSA-1b | Veröffentlicht mit Rao et al. 2021 (ICML'21-Version, Juni 2021). |
ESM-1v | Veröffentlicht mit Meier et al. 2021. |
ESM-IF1 | Veröffentlicht mit Hsu et al. 2022. |
ESM-2 | Veröffentlicht mit Lin et al. 2022. |
Hierbei handelt es sich um einen fünffachen Kreuzvalidierungsdatensatz von Proteindomänenstrukturen, der zur Messung der Verallgemeinerung von Darstellungen über verschiedene Ebenen struktureller Unähnlichkeit hinweg verwendet werden kann. Der Datensatz implementiert strukturelle Holdouts auf Familien-, Überfamilien- und Faltenebene. Die SCOPe-Datenbank wird zur Klassifizierung von Domänen verwendet. Unabhängig für jede Ebene der strukturellen Zurückhaltung werden die Domänen in fünf gleiche Mengen aufgeteilt, dh fünf Sätze von Falten, Überfamilien oder Familien. Dadurch wird sichergestellt, dass für jede der fünf Partitionen Strukturen mit derselben Klassifizierung nicht sowohl im Zug- als auch im Testsatz erscheinen. Für eine bestimmte Klassifizierungsstufe erscheint jede Struktur einmal in einem Testsatz, sodass im Kreuzvalidierungsexperiment jede der Strukturen genau einmal bewertet wird.
Der Datensatz stellt 3D-Koordinaten, Entfernungskarten und Sekundärstrukturbeschriftungen bereit. Weitere Einzelheiten zur Konstruktion des Datensatzes finden Sie bei Rives et al. 2019 Anhang A.10.
Dieses Jupyter-Notebook-Tutorial zeigt, wie das ESMStructuralSplitDataset
geladen und indiziert wird.
ESMStructuralSplitDataset
lädt bei der Initialisierung splits
und pkl
herunter. Wir stellen auch msas
für jede der Domänen bereit. Die Daten können unten direkt heruntergeladen werden.
Name | Beschreibung | URL |
---|---|---|
spaltet sich | Zug-/gültige Teilungen | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
pkl | pkl-Objekte mit Sequenz, SSP-Beschriftungen, Entfernungskarte und 3D-Koordinaten | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
msas | a3m-Dateien mit MSA für jede Domain | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
Die geteilten Dateien, aus denen hervorgeht, welche UniRef50-Cluster als zurückgehaltener Bewertungssatz für das Vortraining in Rives et al. verwendet wurden. 2019 und Rao et al. 2021 finden Sie hier:
Diese Dateien enthalten nur die UniRef50-IDs und UniRef100-IDs, die der UniRef-Datenbank, Version 2018-03, entsprechen, die vom UniProt-Konsortium unter einer Creative Commons Attribution (CC BY 4.0)-Lizenz veröffentlicht wird.
Aufgabe | Unbeaufsichtigte Kontaktvorhersage | Strukturvorhersage | |||
---|---|---|---|---|---|
Testset | Große Gültigkeit | CASP14 | CAMEO (April-Juni 2022) | CASP14 | CAMEO (April-Juni 2022) |
Gremlin (Potts) | 39.3 | ||||
BAND | 11.2 | ||||
ProtBert-BFD | 34.1 | ||||
Prot-T5-XL-BFD | 35.6 | 46.1 | 62,6 | ||
Prot-T5-XL-Ur50 (3B) | 47.9 | 49,8 | 69,4 | ||
ESM-1 | 33.7 | ||||
ESM-1b | 41.1 | 24.4 | 39 | 41.6 | 64,5 |
ESM-1v | 35.3 | ||||
ESM-MSA-1b | 57.4 | ||||
ESM-2 (8M) | 15.9 | 9.8 | 15.7 | 36.7 | 48.1 |
ESM-2 (35M) | 28.8 | 16.4 | 28.4 | 41.4 | 56.4 |
ESM-2 (150M) | 42.2 | 26.8 | 40.1 | 49,0 | 64,9 |
ESM-2 (700M) | 50.1 | 32.5 | 47,6 | 51.3 | 70.1 |
ESM-2 (3B) | 52,7 | 34,0 | 49.9 | 52,5 | 71,8 |
ESM-2 (15B) | 54,5 | 37,0 | 51.7 | 55.4 | 72.1 |
Vergleich mit verwandten Proteinsprachenmodellen bei Strukturvorhersageaufgaben.
Wenn Sie die Modelle für Ihre Forschung nützlich finden, bitten wir Sie, den entsprechenden Artikel zu zitieren:
@article { rives2019biological ,
author = { Rives, Alexander and Meier, Joshua and Sercu, Tom and Goyal, Siddharth and Lin, Zeming and Liu, Jason and Guo, Demi and Ott, Myle and Zitnick, C. Lawrence and Ma, Jerry and Fergus, Rob } ,
title = { Biological Structure and Function Emerge from Scaling Unsupervised Learning to 250 Million Protein Sequences } ,
year = { 2019 } ,
doi = { 10.1101/622803 } ,
url = { https://www.biorxiv.org/content/10.1101/622803v4 } ,
journal = { PNAS }
}
Für die Selbstaufmerksamkeitskontaktvorhersage:
@article { rao2020transformer ,
author = { Rao, Roshan M and Meier, Joshua and Sercu, Tom and Ovchinnikov, Sergey and Rives, Alexander } ,
title = { Transformer protein language models are unsupervised structure learners } ,
year = { 2020 } ,
doi = { 10.1101/2020.12.15.422761 } ,
url = { https://www.biorxiv.org/content/10.1101/2020.12.15.422761v1 } ,
journal = { bioRxiv }
}
Für den MSA-Transformator:
@article { rao2021msa ,
author = { Rao, Roshan and Liu, Jason and Verkuil, Robert and Meier, Joshua and Canny, John F. and Abbeel, Pieter and Sercu, Tom and Rives, Alexander } ,
title = { MSA Transformer } ,
year = { 2021 } ,
doi = { 10.1101/2021.02.12.430858 } ,
url = { https://www.biorxiv.org/content/10.1101/2021.02.12.430858v1 } ,
journal = { bioRxiv }
}
Für Variantenvorhersage mit ESM-1v:
@article { meier2021language ,
author = { Meier, Joshua and Rao, Roshan and Verkuil, Robert and Liu, Jason and Sercu, Tom and Rives, Alexander } ,
title = { Language models enable zero-shot prediction of the effects of mutations on protein function } ,
year = { 2021 } ,
doi = { 10.1101/2021.07.09.450648 } ,
url = { https://www.biorxiv.org/content/10.1101/2021.07.09.450648v1 } ,
journal = { bioRxiv }
}
Für umgekehrtes Falten mit ESM-IF1:
@article { hsu2022learning ,
author = { Hsu, Chloe and Verkuil, Robert and Liu, Jason and Lin, Zeming and Hie, Brian and Sercu, Tom and Lerer, Adam and Rives, Alexander } ,
title = { Learning inverse folding from millions of predicted structures } ,
year = { 2022 } ,
doi = { 10.1101/2022.04.10.487779 } ,
url = { https://www.biorxiv.org/content/early/2022/04/10/2022.04.10.487779 } ,
journal = { ICML }
}
Für das ESM-2-Sprachmodell und ESMFold:
@article { lin2022language ,
title = { Language models of protein sequences at the scale of evolution enable accurate structure prediction } ,
author = { Lin, Zeming and Akin, Halil and Rao, Roshan and Hie, Brian and Zhu, Zhongkai and Lu, Wenting and Smetanin, Nikita and dos Santos Costa, Allan and Fazel-Zarandi, Maryam and Sercu, Tom and Candido, Sal and others } ,
journal = { bioRxiv } ,
year = { 2022 } ,
publisher = { Cold Spring Harbor Laboratory }
}
Ein Großteil dieses Codes basiert auf dem Fairseq-Sequenzmodellierungs-Framework. Wir verwenden fairseq intern für unsere Protein-Sprachmodellierungsforschung. Wir empfehlen dringend, es auszuprobieren, wenn Sie Protein-Sprachmodelle von Grund auf vorab trainieren möchten.
Wenn Sie außerdem den Variantenvorhersage-Benchmark von Meier et al. verwenden möchten. (2021) stellen wir eine Bibtex-Datei mit Zitaten für alle zur Verfügung