Mise à jour d'avril 2023 : le code pour les deux prépublications simultanées sur la conception de protéines est maintenant publié ! Le code pour « Les modèles de langage se généralisent au-delà des protéines naturelles » se trouve sous examples/lm-design/. Le code pour « Un langage de programmation de haut niveau pour la conception générative de protéines » se trouve sous exemples/protéine-programmation-langage/.
Ce référentiel contient du code et des poids pré-entraînés pour les modèles de langage protéique Transformer de l'équipe Meta Fundamental AI Research Protein (FAIR), y compris nos ESM-2 et ESMFold de pointe, ainsi que MSA Transformer , ESM-1v. pour prédire les effets variables et ESM-IF1 pour le pliage inverse. Des modèles de langage de protéines transformatrices ont été introduits dans la préimpression 2019 de l'article « La structure et la fonction biologiques émergent de la mise à l'échelle de l'apprentissage non supervisé jusqu'à 250 millions de séquences protéiques ». ESM-2 surpasse tous les modèles de langage protéique à séquence unique testés dans une gamme de tâches de prédiction de structure. ESMFold exploite le modèle de langage ESM-2 pour générer des prédictions de structure précises de bout en bout directement à partir de la séquence d'une protéine.
En novembre 2022, nous avons publié v0
de l’ESM Metagenomic Atlas, un atlas ouvert de 617 millions de structures protéiques métagénomiques prédites. L'Atlas a été mis à jour en mars 2023 en collaboration avec EBI. La nouvelle version v2023_02
ajoute 150 millions de structures prédites supplémentaires à l'Atlas, ainsi que des intégrations ESM2 précalculées. Le téléchargement groupé, l'article de blog et les ressources fournies sur le site Web de l'Atlas sont documentés dans ce README.
En décembre 2022, nous avons publié deux prépublications simultanées sur la conception des protéines.
Pour les modèles de langage de protéine de transformateur :
@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
. Consultez le site Web et les détails du téléchargement groupé.<mask>
) en séquence.ESM-MSA-1b
).Sténographie | esm.pretrained. | Ensemble de données | Description |
---|---|---|---|
ESM-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50 (échantillon UR90) | Modèle de langage protéique à usage général SOTA. Peut être utilisé pour prédire la structure, la fonction et d’autres propriétés des protéines directement à partir de séquences individuelles. Publié avec Lin et al. 2022 (mise à jour d’août 2022). |
ESMFold | esmfold_v1() | PDB + UR50 | Prédicteur de structure 3D à séquence unique de bout en bout (mise à jour de novembre 2022). |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | Modèle de langage MSA Transformer. Peut être utilisé pour extraire des intégrations d’un MSA. Permet l'inférence SOTA de la structure. Publié avec Rao et al. 2021 (version ICML'21, juin 2021). |
ESM-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | Modèle de langage spécialisé pour la prédiction des effets variables. Permet la prédiction SOTA zéro-shot des effets fonctionnels des variations de séquence. Même architecture que ESM-1b, mais formé sur UniRef90. Publié avec Meier et al. 2021. |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50() | CATH + UR50 | Modèle pliable inversé. Peut être utilisé pour concevoir des séquences pour des structures données ou pour prédire les effets fonctionnels de la variation de séquence pour des structures données. Permet la conception de séquences de squelette fixe SOTA. Publié avec Hsu et al. 2022. |
Pour obtenir la liste complète des modèles disponibles, avec des détails et des notes de version, consultez Modèles pré-entraînés.
Un moyen simple de commencer consiste à charger ESM ou ESMFold via la bibliothèque de transformateurs HuggingFace, qui a simplifié les dépendances ESMFold et fournit une API standardisée et des outils pour travailler avec des modèles pré-entraînés de pointe.
Alternativement, ColabFold a intégré ESMFold afin que vous puissiez facilement l'exécuter directement dans le navigateur sur une instance Google Colab.
Nous fournissons également une API à laquelle vous pouvez accéder via curl ou sur la page Web de l'ESM Metagenomic Atlas.
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
Pour ESM-MSA-1b, ESM-IF1 ou l'un des autres modèles, vous pouvez utiliser l'implémentation originale de notre dépôt directement via les instructions ci-dessous.
Au préalable, vous devez avoir installé PyTorch pour utiliser ce référentiel.
Vous pouvez utiliser ce one-liner pour l'installation, en utilisant la dernière version d'esm :
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
Pour utiliser le modèle ESMFold, assurez-vous de démarrer à partir d'un environnement avec python <= 3.9 et pytorch installé. Ajoutez ensuite l'option [esmfold]
à votre installation pip, qui installera automatiquement les dépendances pour OpenFold. L'installation d'Openfold nécessite nvcc
.
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 '
REMARQUE : si l'installation d'openfold échoue, veuillez vérifier que nvcc
est disponible et qu'une version compatible cuda de PyTorch a été installée.
Alternativement, nous fournissons l'environnement conda esmfold
, qui peut être construit via conda env create -f environment.yml
.
Nous prenons également en charge PyTorch Hub, qui supprime le besoin de cloner et/ou d'installer ce référentiel vous-même :
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
Après l'installation de pip, vous pouvez charger et utiliser un modèle pré-entraîné comme suit :
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 ()
Après l'installation avec l'option [esmfold]
, vous pouvez utiliser le modèle de prédiction de structure ESMFold comme suit :
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
Outre esm.pretrained.esmfold_v1()
qui est le modèle le plus performant que nous recommandons d'utiliser, nous fournissons également esm.pretrained.esmfold_v0()
qui a été utilisé pour les expériences de Lin et al. 2022.
Nous fournissons également une interface de ligne de commande ( esm-fold
) qui prédit efficacement les structures en masse à partir d'un fichier FASTA à l'aide d'ESMFold :
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
La commande fera une prédiction pour chaque séquence du fichier fasta. Les multimères peuvent être prédits et doivent être entrés dans le fichier fasta sous la forme d'une seule séquence, avec des chaînes séparées par un caractère ":".
Par défaut, les prédictions seront regroupées afin que des séquences plus courtes soient prédites simultanément. Cela peut être désactivé en définissant --max-tokens-per-batch=0
. Le traitement par lots peut améliorer considérablement la vitesse de prédiction sur des séquences plus courtes.
L'indicateur --cpu-offload
peut être utile pour faire des prédictions sur des séquences plus longues. Il tentera de décharger certains paramètres sur la RAM du CPU, plutôt que de les stocker sur le GPU.
Enfin, les expériences d'ablation de LM de différentes tailles Lin et al. Le tableau S1 2022 est publié sous le nom esm.pretrained.esmfold_structure_module_only_*()
. Nous ne recommandons pas d'utiliser ces modèles pour la prédiction de structure.
Nous fournissons une interface de ligne de commande ( esm-extract
) qui extrait efficacement les intégrations en masse pour un fichier FASTA à partir de l'ESM :
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
Les commandes suivantes permettent l'extraction de l'intégration de couche finale pour un fichier FASTA à partir du modèle ESM-2 :
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
Un périphérique cuda est facultatif et sera détecté automatiquement.
Le répertoire some_proteins_emb_esm2/
contient désormais un fichier .pt
par séquence FASTA ; utilisez torch.load()
pour les charger. scripts/extract.py
a des indicateurs qui déterminent ce qui est inclus dans le fichier .pt
:
--repr-layers
(par défaut : final uniquement) sélectionne les calques à partir desquels inclure les intégrations.--include
spécifie les intégrations à enregistrer. Vous pouvez utiliser les éléments suivants :per_tok
inclut la séquence complète, avec une intégration par acide aminé (seq_len x Hidden_dim).mean
inclut les plongements moyennés sur la séquence complète, par couche.bos
inclut les incorporations du jeton de début de séquence. (REMARQUE : ne pas utiliser avec les modèles pré-entraînés - nous nous sommes entraînés sans supervision bos-token) Si vous souhaitez charger des modèles très volumineux comme 15B et/ou effectuer des inférences sur de longues séquences sur votre machine, l'inférence GPU régulière peut entraîner des erreurs de MOO. Nous montrons comment charger le modèle avec FSDP (Fully Sharded Data Parallel) de Fairscale et utiliser sa fonction de déchargement du processeur. Cela permet de faire l'inférence de grands modèles sur un seul GPU. Veuillez consulter examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
pour plus de détails.
Voir « exemples/variant-prediction/ » pour le code et les poids pré-entraînés pour les modèles ESM-1v décrits dans Les modèles de langage permettent une prédiction sans tir des effets des mutations sur la fonction des protéines. (Meier et al.2021).
Notez qu'ESM-2 pourrait également être utilisé pour la prédiction de variantes et devrait avoir des performances similaires à celles d'ESM-1v.
Voir "examples/inverse_folding/" pour un guide d'utilisation détaillé. Le modèle ESM-IF1 est décrit comme GVPTransformer
dans Apprentissage du pliage inverse à partir de millions de structures prédites. (Hsu et al.2022).
Nous fournissons également un cahier Colab pour les fonctionnalités de conception de séquences et de notation de séquences.
Le modèle de repliement inverse ESM-IF1 est conçu pour prédire les séquences de protéines à partir des coordonnées de leurs atomes de base. Nous fournissons ici des scripts 1) pour échantillonner des conceptions de séquences pour une structure donnée et 2) pour noter des séquences pour une structure donnée.
Entraîné avec des structures protéiques de 12 M prédites par AlphaFold2, le modèle ESM-IF1 se compose de couches de traitement d'entrée géométriques invariantes suivies d'un transformateur séquence à séquence, et atteint 51 % de récupération de séquence native sur des squelettes structurellement maintenus avec 72 % de récupération pour les structures enterrées. résidus. Le modèle est également entraîné avec le masquage de portée pour tolérer les coordonnées manquantes du squelette et peut donc prédire les séquences pour les structures partiellement masquées.
La configuration de l'environnement est décrite dans cette sous-section d'exemples/inverse_folding.
Pour échantillonner des séquences pour une structure donnée au format PDB ou mmCIF, utilisez le script sample_sequences.py
. Le fichier d'entrée peut avoir comme suffixe .pdb
ou .cif
.
Par exemple, pour échantillonner 3 plans de séquence pour la structure de la caséine kinase de Golgi (PDB 5YH2 ; molécule PDB du mois de janvier 2022), nous pouvons exécuter la commande suivante à partir du répertoire racine esm :
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
Les séquences échantillonnées seront enregistrées au format fasta dans le fichier de sortie spécifié.
Le paramètre de température contrôle la netteté de la distribution de probabilité pour l'échantillonnage séquentiel. Des températures d'échantillonnage plus élevées donnent des séquences plus diverses, mais probablement avec une récupération de séquence native plus faible. La température d'échantillonnage par défaut est 1. Pour optimiser la récupération de séquence native, nous recommandons d'échantillonner à basse température telle que 1e-6.
Pour évaluer les log-vraisemblances conditionnelles des séquences conditionnées sur une structure donnée, utilisez le script score_log_likelihoods.py
.
Par exemple, pour noter les séquences dans examples/inverse_folding/data/5YH2_mutated_seqs.fasta
selon la structure dans examples/inverse_folding/data/5YH2.pdb
, nous pouvons exécuter la commande suivante à partir du répertoire racine esm :
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
Les log-vraisemblances conditionnelles sont enregistrées au format CSV dans le chemin de sortie spécifié. Les valeurs de sortie sont les log-vraisemblances moyennes moyennées sur tous les acides aminés d’une séquence.
Pour plus d'informations, voir "./examples/inverse_folding/" pour un guide de l'utilisateur détaillé.
Veuillez visiter le site Web de l'ESM Metagenomic Atlas et consulter notre article de blog pour en savoir plus.
Instructions de téléchargement groupé disponibles dans un fichier README séparé ici.
Les ressources de l'Atlas comprennent une page permettant de plier une séquence à l'aide d'ESMFold, en recherchant un sous-ensemble de l'Atlas ESM par structure ou séquence, ainsi qu'une API pour accéder à ces ressources par programmation.
Foldseek propose une recherche dans l'Atlas sans limitation de longueur ici.
Le modèle de repliement inverse ESM-IF1 prédit les séquences protéiques à partir des coordonnées de leurs atomes de squelette, entraînées avec des structures protéiques 12M prédites par AlphaFold2. Cette note vous a guidé à travers des exemples de séquences d'échantillonnage, de calcul des log-vraisemblances conditionnelles et d'extraction de la sortie de l'encodeur sous forme de représentation de structure.
Pour vous aider à démarrer avec l'utilisation des intégrations, ce didacticiel du notebook Jupyter montre comment former un prédicteur de variantes supervisé à l'aide des intégrations d'ESM-1. Vous pouvez adopter un protocole similaire pour entraîner un modèle pour n'importe quelle tâche en aval, même avec des données limitées. Vous pouvez d'abord obtenir les intégrations pour examples/data/P62593.fasta
soit en téléchargeant les intégrations précalculées comme indiqué dans le bloc-notes, soit en exécutant la commande suivante :
# 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
Suivez ensuite les instructions restantes du didacticiel. Vous pouvez également exécuter le didacticiel dans un notebook Colab.
Notez que vous pouvez également utiliser les instructions les plus récentes pour la prédiction des variantes sans tir, qui prédisent les effets mutationnels sans aucune formation supervisée.
Ce didacticiel sur le notebook Jupyter démontre la prédiction de contact avec les modèles ESM-2 et MSA Transformer (ESM-MSA-1). La prédiction des contacts est basée sur une régression logistique sur les cartes d'attention du modèle. Cette méthodologie est basée sur notre article ICLR 2021, Les modèles de langage protéique Transformer sont des apprenants de structure non supervisés. (Rao et al. 2020) Le transformateur MSA (ESM-MSA-1) prend un alignement de séquences multiples (MSA) en entrée et utilise les cartes d'auto-attention des lignes liées de la même manière. Voir Transformateur MSA. (Rao et al.2021).
Pour obtenir des contacts basés sur l'attention non supervisés, appelez model.predict_contacts(tokens)
ou model(tokens, return_contacts=True)
.
Et ce didacticiel du notebook Jupyter montre comment charger et indexer le ESMStructuralSplitDataset
, et calcule les prédictions de contact non supervisées de la carte d'auto-attention à l'aide d'ESM-2.
Sténographie | esm.pretrained. | #couches | #params | Ensemble de données | Intégration de la dimension | URL du modèle (téléchargé automatiquement vers ~/.cache/torch/hub/checkpoints ) |
---|---|---|---|---|---|---|
ESM-2 | esm2_t48_15B_UR50D | 48 | 15B | UR50/J 2021_04 | 5120 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t48_15B_UR50D.pt |
esm2_t36_3B_UR50D | 36 | 3B | UR50/J 2021_04 | 2560 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t36_3B_UR50D.pt | |
esm2_t33_650M_UR50D | 33 | 650M | UR50/J 2021_04 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t33_650M_UR50D.pt | |
esm2_t30_150M_UR50D | 30 | 150M | UR50/J 2021_04 | 640 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t30_150M_UR50D.pt | |
esm2_t12_35M_UR50D | 12 | 35M | UR50/J 2021_04 | 480 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t12_35M_UR50D.pt | |
esm2_t6_8M_UR50D | 6 | 8M | UR50/J 2021_04 | 320 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t6_8M_UR50D.pt | |
ESMFold | esmfold_v1 | 48 (+36) | 690M (+3B) | UR50/J 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v1.pt |
esmfold_v0 | 48 (+36) | 690M (+3B) | UR50/J 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v0.pt | |
esmfold_structure_module_only_* | 0 (+divers) | divers | UR50/J 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 + structures prédites pour 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/S2020_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/S2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt |
ESM-1 | esm1_t34_670M_UR50S | 34 | 670M | UR50/S2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt |
esm1_t34_670M_UR50D | 34 | 670M | UR50/J 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/S2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt | |
esm1_t6_43M_UR50S | 6 | 43M | UR50/S2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt |
Voici une liste chronologique des modèles publiés et du document dans lequel ils ont été introduits :
Sténographie | Notes de version |
---|---|
ESM-1 | Publié avec Rives et al. 2019 (mise à jour d'août 2020). |
ESM-1b | Publié avec Rives et al. 2019 (mise à jour de décembre 2020). Voir l'Annexe B. |
ESM-MSA-1 | Publié avec Rao et al. 2021 (Préimpression v1). |
ESM-MSA-1b | Publié avec Rao et al. 2021 (version ICML'21, juin 2021). |
ESM-1v | Publié avec Meier et al. 2021. |
ESM-IF1 | Publié avec Hsu et al. 2022. |
ESM-2 | Publié avec Lin et al. 2022. |
Il s'agit d'un quintuple ensemble de données de validation croisée des structures de domaines protéiques qui peuvent être utilisées pour mesurer la généralisation des représentations à travers différents niveaux de dissimilarité structurelle. L'ensemble de données implémente des retenues structurelles au niveau de la famille, de la superfamille et du pli. La base de données SCOPe est utilisée pour classer les domaines. Indépendamment pour chaque niveau de résistance structurelle, les domaines sont divisés en 5 ensembles égaux, c'est-à-dire cinq ensembles de replis, superfamilles ou familles. Cela garantit que pour chacune des cinq partitions, des structures ayant la même classification n'apparaissent pas à la fois dans le train et dans les ensembles de test. Pour un niveau de classification donné, chaque structure apparaît une fois dans un ensemble de tests, de sorte que dans l'expérience de validation croisée, chacune des structures sera évaluée exactement une fois.
L'ensemble de données fournit des coordonnées 3D, des cartes de distance et des étiquettes de structure secondaire. Pour plus de détails sur la construction de l'ensemble de données, voir Rives et al. 2019 Annexe A.10.
Ce didacticiel du notebook Jupyter montre comment charger et indexer le ESMStructuralSplitDataset
.
ESMStructuralSplitDataset
, lors de l'initialisation, téléchargera splits
et pkl
. Nous fournissons également msas
pour chacun des domaines. Les données peuvent être directement téléchargées ci-dessous.
Nom | Description | URL |
---|---|---|
se divise | entraînement/séparements valides | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
pkl | objets pkl contenant une séquence, des étiquettes SSP, une carte de distance et des coordonnées 3D | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
MSAS | fichiers a3m contenant MSA pour chaque domaine | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
Les fichiers fractionnés établissant quels clusters UniRef50 ont été utilisés comme ensemble d'évaluation retenu pour la pré-formation dans Rives et al. 2019 et Rao et al. 2021 peut être trouvé ici :
Ces fichiers ne contiennent que les ID UniRef50 et UniRef100 correspondant à la base de données UniRef, version 2018-03, publiée par le Consortium UniProt sous une licence Creative Commons Attribution (CC BY 4.0).
Tâche | Prédiction de contact non supervisée | Prédiction des structures | |||
---|---|---|---|---|---|
Ensemble de tests | Grand valide | CASP14 | CAMEO (avril-juin 2022) | CASP14 | CAMEO (avril-juin 2022) |
Gremlin (Potts) | 39.3 | ||||
RUBAN ADHÉSIF | 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 |
Comparaison avec des modèles de langage protéique associés sur des tâches de prédiction de structure.
Si vous trouvez les modèles utiles dans votre recherche, nous vous demandons de citer l'article pertinent :
@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 }
}
Pour la prédiction du contact d’auto-attention :
@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 }
}
Pour le transformateur MSA :
@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 }
}
Pour la prédiction de variantes à l’aide d’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 }
}
Pour le pliage inverse avec 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 }
}
Pour le modèle de langage ESM-2 et 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 }
}
Une grande partie de ce code s'appuie sur le cadre de modélisation de séquence fairseq. Nous utilisons fairseq en interne pour nos recherches sur la modélisation du langage protéique. Nous vous recommandons fortement de l'essayer si vous souhaitez pré-entraîner des modèles de langage protéique à partir de zéro.
De plus, si vous souhaitez utiliser le test de prédiction de variantes de Meier et al. (2021), nous fournissons un fichier bibtex avec des citations pour tous