Actualización de abril de 2023: ¡Ya se ha publicado el código para las dos preimpresiones simultáneas sobre diseño de proteínas! El código para "Los modelos de lenguaje se generalizan más allá de las proteínas naturales" se encuentra en ejemplos/lm-design/. El código para "Un lenguaje de programación de alto nivel para el diseño generativo de proteínas" se encuentra en ejemplos/protein-programming-language/.
Este repositorio contiene código y pesos previamente entrenados para los modelos de lenguaje de proteínas Transformer del Meta Fundamental AI Research Protein Team (FAIR), incluidos nuestros ESM-2 y ESMFold de última generación, así como MSA Transformer , ESM-1v. para predecir efectos variantes y ESM-IF1 para plegamiento inverso. Los modelos de lenguaje de proteínas transformadoras se introdujeron en la preimpresión de 2019 del artículo "La estructura y función biológica emergen de la ampliación del aprendizaje no supervisado a 250 millones de secuencias de proteínas". ESM-2 supera a todos los modelos de lenguaje de proteínas de secuencia única probados en una variedad de tareas de predicción de estructuras. ESMFold aprovecha el modelo de lenguaje ESM-2 para generar predicciones estructurales precisas de un extremo a otro directamente a partir de la secuencia de una proteína.
En noviembre de 2022, lanzamos v0
del Atlas metagenómico de ESM, un atlas abierto de 617 millones de estructuras de proteínas metagenómicas previstas. El Atlas se actualizó en marzo de 2023 en colaboración con EBI. El nuevo v2023_02
agrega otros 150 millones de estructuras predichas al Atlas, así como incorporaciones ESM2 precalculadas. La descarga masiva, las publicaciones de blog y los recursos proporcionados en el sitio web de Atlas están documentados en este README.
En diciembre de 2022, publicamos dos preimpresiones simultáneas sobre diseño de proteínas.
Para modelos de lenguaje de proteínas transformadoras:
@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
. Consulte el sitio web y los detalles de descarga masiva.
) en secuencia.ESM-MSA-1b
).Taquigrafía | esm.pretrained. | Conjunto de datos | Descripción |
---|---|---|---|
ESM-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50 (muestra UR90) | Modelo de lenguaje de proteínas de propósito general SOTA. Puede usarse para predecir la estructura, función y otras propiedades de las proteínas directamente a partir de secuencias individuales. Publicado con Lin et al. 2022 (actualización de agosto de 2022). |
ESMFold | esmfold_v1() | PDB + UR50 | Predictor de estructura 3D de secuencia única de un extremo a otro (actualización de noviembre de 2022). |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | Modelo de lenguaje MSA Transformer. Se puede utilizar para extraer incrustaciones de un MSA. Permite la inferencia SOTA de estructura. Publicado con Rao et al. 2021 (versión ICML'21, junio de 2021). |
ESM-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | Modelo de lenguaje especializado para la predicción de efectos variantes. Permite la predicción SOTA de disparo cero de los efectos funcionales de las variaciones de secuencia. Misma arquitectura que ESM-1b, pero entrenada en UniRef90. Publicado con Meier et al. 2021. |
MEDE-IF1 | esm_if1_gvp4_t16_142M_UR50() | CAT + UR50 | Modelo de plegado inverso. Puede usarse para diseñar secuencias para estructuras determinadas o para predecir efectos funcionales de la variación de secuencia para estructuras determinadas. Permite el diseño de secuencias troncales fijas SOTA. Publicado con Hsu et al. 2022. |
Para obtener una lista completa de los modelos disponibles, con detalles y notas de la versión, consulte Modelos previamente entrenados.
Una manera fácil de comenzar es cargar ESM o ESMFold a través de la biblioteca de transformadores HuggingFace, que ha simplificado las dependencias de ESMFold y proporciona una API estandarizada y herramientas para trabajar con modelos previamente entrenados de última generación.
Alternativamente, ColabFold ha integrado ESMFold para que pueda ejecutarlo fácilmente directamente en el navegador en una instancia de Google Colab.
También proporcionamos una API a la que puede acceder a través de curl o en la página web de ESM Metagenomic Atlas.
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
Para ESM-MSA-1b, ESM-IF1 o cualquiera de los otros modelos, puede utilizar la implementación original de nuestro repositorio directamente siguiendo las instrucciones a continuación.
Como requisito previo, debe tener instalado PyTorch para utilizar este repositorio.
Puede utilizar este resumen para la instalación, utilizando la última versión de esm:
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
Para utilizar el modelo ESMFold, asegúrese de comenzar desde un entorno con python <= 3.9 y pytorch instalado. Luego agregue la opción [esmfold]
a su instalación de pip, que instalará las dependencias de OpenFold automáticamente. La instalación de Openfold requiere 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 '
NOTA : Si falla la instalación de Openfold, verifique que nvcc
esté disponible y que se haya instalado una versión de PyTorch compatible con cuda.
Alternativamente, proporcionamos el entorno conda esmfold
, que se puede crear mediante conda env create -f environment.yml
.
También admitimos PyTorch Hub, lo que elimina la necesidad de clonar y/o instalar este repositorio usted mismo:
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
Después de la instalación de pip, puedes cargar y usar un modelo previamente entrenado de la siguiente manera:
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" , "KALTARQQEVFDLIRDISQTGMPPTRAEIAQRLGFRSPNAAEEHLKALARKGVIEIVSGASRGIRLLQEE" ), ( "protein3" , "K AI 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 ()
Después de instalar con la opción [esmfold]
, puede utilizar el modelo de predicción de estructura ESMFold de la siguiente manera:
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
Además de esm.pretrained.esmfold_v1()
que es el modelo de mejor rendimiento que recomendamos utilizar, también proporcionamos esm.pretrained.esmfold_v0()
que se utilizó para los experimentos de Lin et al. 2022.
También proporcionamos una interfaz de línea de comandos ( esm-fold
) que predice eficientemente estructuras de forma masiva a partir de un archivo FASTA usando 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
El comando hará una predicción para cada secuencia en el archivo fasta. Los multímeros se pueden predecir y deben ingresarse en el archivo fasta como una secuencia única, con cadenas separadas por un carácter ":".
De forma predeterminada, las predicciones se agruparán por lotes para que se predigan secuencias más cortas simultáneamente. Esto se puede desactivar configurando --max-tokens-per-batch=0
. El procesamiento por lotes puede mejorar significativamente la velocidad de predicción en secuencias más cortas.
El indicador --cpu-offload
puede resultar útil para realizar predicciones en secuencias más largas. Intentará descargar algunos parámetros a la RAM de la CPU, en lugar de almacenarlos en la GPU.
Finalmente, los experimentos de ablación para LM de diferentes tamaños Lin et al. La tabla S1 de 2022 se publica como esm.pretrained.esmfold_structure_module_only_*()
. No recomendamos utilizar estos modelos para la predicción de estructuras.
Proporcionamos una interfaz de línea de comandos ( esm-extract
) que extrae eficientemente incrustaciones de forma masiva para un archivo FASTA desde 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
Los siguientes comandos permiten la extracción de la incrustación de la capa final para un archivo FASTA del modelo 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 dispositivo cuda es opcional y se detectará automáticamente.
El directorio some_proteins_emb_esm2/
ahora contiene un archivo .pt
por secuencia FASTA; use torch.load()
para cargarlos. scripts/extract.py
tiene indicadores que determinan qué se incluye en el archivo .pt
:
--repr-layers
(predeterminado: solo final) selecciona desde qué capas incluir incrustaciones.--include
especifica qué incrustaciones guardar. Puedes utilizar lo siguiente:per_tok
incluye la secuencia completa, con una incrustación por aminoácido (seq_len x hide_dim).mean
incluye las incrustaciones promediadas sobre la secuencia completa, por capa.bos
incluye las incrustaciones del token de inicio de secuencia. (NOTA: No lo use con los modelos previamente entrenados; entrenamos sin supervisión de bos-token) Si desea cargar modelos muy grandes como 15B y/o realizar inferencias en secuencias largas en su máquina, la inferencia normal de GPU puede provocar errores OOM. Mostramos cómo cargar el modelo con Fully Sharded Data Parallel (FSDP) de Fairscale y usar su función de descarga de CPU. Esto permite hacer inferencias de modelos grandes en una sola GPU. Consulte examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
para obtener más detalles.
Consulte "examples/variant-prediction/" para conocer el código y los pesos previamente entrenados para los modelos ESM-1v descritos en Los modelos de lenguaje permiten una predicción cero de los efectos de las mutaciones en la función de las proteínas. (Meier et al.2021).
Tenga en cuenta que ESM-2 también podría usarse para la predicción de variantes y se espera que tenga un rendimiento similar al de ESM-1v.
Consulte "examples/inverse_folding/" para obtener una guía de usuario detallada. El modelo ESM-IF1 se describe como GVPTransformer
en Aprendizaje del plegado inverso a partir de millones de estructuras predichas. (Hsu et al.2022).
También proporcionamos un cuaderno de colaboración para las funcionalidades de diseño de secuencia y puntuación de secuencia.
El modelo de plegamiento inverso ESM-IF1 está diseñado para predecir secuencias de proteínas a partir de las coordenadas de sus átomos principales. Aquí proporcionamos scripts 1) para muestrear diseños de secuencia para una estructura determinada y 2) para puntuar secuencias para una estructura determinada.
Entrenado con estructuras de proteínas 12M predichas por AlphaFold2, el modelo ESM-IF1 consta de capas de procesamiento de entrada geométricas invariantes seguidas de un transformador de secuencia a secuencia, y logra una recuperación de secuencia nativa del 51 % en columnas estructurales estructuralmente sostenidas con una recuperación del 72 % para enterradas. residuos. El modelo también está entrenado con enmascaramiento de tramos para tolerar la falta de coordenadas de la columna vertebral y, por lo tanto, puede predecir secuencias para estructuras parcialmente enmascaradas.
La configuración del entorno se describe en esta subsección de ejemplos/plegado_inverso.
Para muestrear secuencias para una estructura determinada en formato PDB o mmCIF, utilice el script sample_sequences.py
. El archivo de entrada puede tener .pdb
o .cif
como sufijo.
Por ejemplo, para muestrear 3 diseños de secuencia para la estructura de la caseína quinasa de Golgi (PDB 5YH2; Molécula PDB del mes de enero de 2022), podemos ejecutar el siguiente comando desde el directorio raíz de 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
Las secuencias muestreadas se guardarán en formato fasta en el archivo de salida especificado.
El parámetro de temperatura controla la nitidez de la distribución de probabilidad para el muestreo de secuencia. Las temperaturas de muestreo más altas producen secuencias más diversas, pero probablemente con una menor recuperación de secuencia nativa. La temperatura de muestreo predeterminada es 1. Para optimizar la recuperación de la secuencia nativa, recomendamos muestrear con una temperatura baja, como 1e-6.
Para puntuar las probabilidades logarítmicas condicionales de secuencias condicionadas a una estructura determinada, utilice el script score_log_likelihoods.py
.
Por ejemplo, para calificar las secuencias en examples/inverse_folding/data/5YH2_mutated_seqs.fasta
de acuerdo con la estructura en examples/inverse_folding/data/5YH2.pdb
, podemos ejecutar el siguiente comando desde el directorio raíz de 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
Las probabilidades de registro condicionales se guardan en formato csv en la ruta de salida especificada. Los valores de salida son las probabilidades logarítmicas promedio promediadas sobre todos los aminoácidos en una secuencia.
Para obtener más información, consulte "./examples/inverse_folding/" para obtener una guía de usuario detallada.
Visite el sitio web del Atlas Metagenómico de ESM y consulte nuestra publicación de blog para obtener más información.
Instrucciones de descarga masiva disponibles en un archivo README separado aquí.
Los recursos del Atlas incluyen una página para plegar una secuencia usando ESMFold, buscando un subconjunto del Atlas ESM por estructura o secuencia, así como una API para acceder a esos recursos mediante programación.
Foldseek ofrece búsqueda en el Atlas sin limitación de longitud aquí.
El modelo de plegamiento inverso ESM-IF1 predice secuencias de proteínas a partir de las coordenadas de sus átomos principales, entrenado con estructuras de proteínas 12M predichas por AlphaFold2. Esta nota lo guiará a través de ejemplos de secuencias de muestreo, cálculo de probabilidades logarítmicas condicionales y extracción de la salida del codificador como representación de estructura.
Para ayudarlo a comenzar a usar las incorporaciones, este tutorial de jupyter notebook muestra cómo entrenar un predictor de variantes supervisado utilizando incorporaciones de ESM-1. Puede adoptar un protocolo similar para entrenar un modelo para cualquier tarea posterior, incluso con datos limitados. Primero, puede obtener las incrustaciones para examples/data/P62593.fasta
descargando las incrustaciones precalculadas como se indica en el cuaderno o ejecutando lo siguiente:
# 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
Luego, siga las instrucciones restantes del tutorial. También puedes ejecutar el tutorial en un cuaderno de colab.
Tenga en cuenta que, alternativamente, utilice las instrucciones más recientes para la predicción de variantes de disparo cero, que predice efectos mutacionales sin ningún entrenamiento supervisado.
Este tutorial del cuaderno Jupyter demuestra la predicción de contactos con los modelos ESM-2 y MSA Transformer (ESM-MSA-1). La predicción de contactos se basa en una regresión logística sobre los mapas de atención del modelo. Esta metodología se basa en nuestro artículo ICLR 2021, Los modelos de lenguaje de proteínas transformadoras aprenden estructuras sin supervisión. (Rao et al. 2020) El transformador MSA (ESM-MSA-1) toma una alineación de secuencia múltiple (MSA) como entrada y utiliza los mapas de autoatención de filas vinculadas de la misma manera. Ver Transformador MSA. (Rao et al.2021).
Para obtener contactos basados en atención sin supervisión, llame model.predict_contacts(tokens)
o model(tokens, return_contacts=True)
.
Y este tutorial de jupyter notebook muestra cómo cargar e indexar ESMStructuralSplitDataset
y calcula las predicciones de contactos no supervisados del mapa de autoatención utilizando ESM-2.
Taquigrafía | esm.pretrained. | #capas | #parametros | Conjunto de datos | Incrustar tenue | URL del modelo (descargada automáticamente en ~/.cache/torch/hub/checkpoints ) |
---|---|---|---|---|---|---|
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) | 690 millones (+3 mil millones) | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v1.pt |
esmfold_v0 | 48 (+36) | 690 millones (+3 mil millones) | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v0.pt | |
esmfold_structure_module_only_* | 0 (+varios) | varios | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_structure_module_only_* | |
MEDE-IF1 | esm_if1_gvp4_t16_142M_UR50 | 20 | 124M | CATH 4.3 + estructuras previstas para 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 + MSA2018_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 + MSA2018_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 | 670 millones | 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 |
Aquí hay una lista cronológica de los modelos lanzados y el artículo en el que se introdujeron:
Taquigrafía | Notas de la versión |
---|---|
ESM-1 | Publicado con Rives et al. 2019 (actualización de agosto de 2020). |
ESM-1b | Publicado con Rives et al. 2019 (actualización de diciembre de 2020). Consulte el Apéndice B. |
ESM-MSA-1 | Publicado con Rao et al. 2021 (preimpresión v1). |
ESM-MSA-1b | Publicado con Rao et al. 2021 (versión ICML'21, junio de 2021). |
ESM-1v | Publicado con Meier et al. 2021. |
MEDE-IF1 | Publicado con Hsu et al. 2022. |
ESM-2 | Publicado con Lin et al. 2022. |
Este es un conjunto de datos de validación cruzada quíntuple de estructuras de dominios de proteínas que se puede utilizar para medir la generalización de representaciones en diferentes niveles de disimilitud estructural. El conjunto de datos implementa restricciones estructurales a nivel de familia, superfamilia y pliegue. La base de datos SCOPe se utiliza para clasificar dominios. Independientemente para cada nivel de resistencia estructural, los dominios se dividen en cinco conjuntos iguales, es decir, cinco conjuntos de pliegues, superfamilias o familias. Esto garantiza que para cada una de las cinco particiones, las estructuras que tengan la misma clasificación no aparezcan tanto en el tren como en los conjuntos de prueba. Para un nivel de clasificación determinado, cada estructura aparece en un conjunto de pruebas una vez, de modo que en el experimento de validación cruzada cada una de las estructuras se evaluará exactamente una vez.
El conjunto de datos proporciona coordenadas 3D, mapas de distancia y etiquetas de estructuras secundarias. Para obtener más detalles sobre la construcción del conjunto de datos, consulte Rives et al. 2019 Apéndice A.10.
Este tutorial de Jupyter Notebook muestra cómo cargar e indexar ESMStructuralSplitDataset
.
ESMStructuralSplitDataset
, al inicializarse, descargará splits
y pkl
. También proporcionamos msas
para cada uno de los dominios. Los datos se pueden descargar directamente a continuación.
Nombre | Descripción | URL |
---|---|---|
se divide | tren/divisiones válidas | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
pkl | Objetos pkl que contienen secuencia, etiquetas SSP, mapa de distancia y coordenadas 3D. | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
msas | Archivos a3m que contienen MSA para cada dominio. | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
Los archivos divididos que establecen qué grupos UniRef50 se utilizaron como conjunto de evaluación retenido para el entrenamiento previo en Rives et al. 2019 y Rao et al. 2021 se puede encontrar aquí:
Estos archivos solo contienen los ID de UniRef50 y los ID de UniRef100 correspondientes a la base de datos UniRef, versión 2018-03, publicada por el Consorcio UniProt bajo una licencia Creative Commons Attribution (CC BY 4.0).
Tarea | Predicción de contactos no supervisados | Predicción de estructura | |||
---|---|---|---|---|---|
conjunto de prueba | Grande válido | CASP14 | CAMEO (abril-junio de 2022) | CASP14 | CAMEO (abril-junio de 2022) |
Duendecillo (Potts) | 39.3 | ||||
CINTA | 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 |
Comparación con modelos de lenguaje de proteínas relacionados en tareas de predicción de estructuras.
Si encuentra útiles los modelos en su investigación, le pedimos que cite el artículo correspondiente:
@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 }
}
Para la predicción del contacto de autoatención:
@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 }
}
Para el transformador 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 }
}
Para predicción de variantes utilizando 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 }
}
Para plegado inverso usando 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 }
}
Para el modelo de lenguaje ESM-2 y 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 }
}
Gran parte de este código se basa en el marco de modelado de secuencias de fairseq. Usamos fairseq internamente para nuestra investigación de modelado del lenguaje de proteínas. Recomendamos encarecidamente probarlo si desea entrenar previamente modelos de lenguaje de proteínas desde cero.
Además, si desea utilizar el punto de referencia de predicción de variantes de Meier et al. (2021), proporcionamos un archivo bibtex con citas de todos los datos en ./examples/variant-prediction/mutation_data.bib. Puede citar cada artículo individualmente o agregar todas las citas de forma masiva usando el comando LaTeX:
nocite { wrenbeck2017deep , klesmith2015comprehensive , haddox2018mapping , romero2015dissecting , firnberg2014comprehensive , deng2012deep , stiffler2015evolvability , jacquier2013capturing , findlay2018comprehensive , mclaughlin2012spatial , kitzman2015massively , doud2016accurate , pokusaeva2019experimental , mishra2016systematic , kelsic2016rna , melnikov2014comprehensive , brenan2016phenotypic , rockah2015systematic , wu2015functional , aakre2015evolving , qi2014quantitative , matreyek2018multiplex , bandaru2017deconstruction , roscoe2013analyses , roscoe2014systematic , mavor2016determination , chan2017correlation , melamed2013deep , starita2013activity , araya2012fundamental }
Este código fuente tiene la licencia MIT que se encuentra en el archivo LICENSE
en el directorio raíz de este árbol fuente.
Los datos del Atlas Metagenómico de ESM (también conocido como “Atlas de Estructura Metagenómica de ESM” o “Atlas de ESM”) están disponibles bajo una licencia CC BY 4.0 para uso académico y comercial. Copyright (c) Meta Platforms, Inc. Todos los derechos reservados. El uso de los datos del Atlas Metagenómico de ESM está sujeto a los Términos de uso y la Política de privacidad de Meta Open Source.