Atualização de abril de 2023: O código para as duas pré-impressões simultâneas sobre design de proteínas foi lançado! O código para "Modelos de linguagem generalizam além das proteínas naturais" está em exemplos/lm-design/. O código para "Uma linguagem de programação de alto nível para design generativo de proteínas" está em exemplos/linguagem de programação de proteínas/.
Este repositório contém código e pesos pré-treinados para modelos de linguagem de proteínas Transformer da Meta Fundamental AI Research Protein Team (FAIR), incluindo nosso ESM-2 e ESMFold de última geração, bem como MSA Transformer , ESM-1v para prever efeitos variantes e ESM-IF1 para dobramento inverso. Os modelos de linguagem de proteínas transformadoras foram introduzidos na pré-impressão de 2019 do artigo "Estrutura e função biológica emergem da expansão da aprendizagem não supervisionada para 250 milhões de sequências de proteínas". O ESM-2 supera todos os modelos de linguagem de proteínas de sequência única testados em uma variedade de tarefas de previsão de estrutura. ESMFold aproveita o modelo de linguagem ESM-2 para gerar previsões precisas de estrutura de ponta a ponta diretamente da sequência de uma proteína.
Em novembro de 2022, lançamos v0
do ESM Metagenomic Atlas, um atlas aberto de 617 milhões de estruturas proteicas metagenômicas previstas. O Atlas foi atualizado em março de 2023 em colaboração com a EBI. A nova v2023_02
adiciona outras 150 milhões de estruturas previstas ao Atlas, bem como embeddings ESM2 pré-computados. O download em massa, a postagem no blog e os recursos fornecidos no site do Atlas estão documentados neste README.
Em dezembro de 2022, lançamos dois preprints simultâneos sobre design de proteínas.
Para modelos de linguagem 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
. Veja o site e os detalhes do download em massa.<mask>
) em sequência.ESM-MSA-1b
).Taquigrafia | esm.pretrained. | Conjunto de dados | Descrição |
---|---|---|---|
ESM-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50 (amostra UR90) | Modelo de linguagem de proteínas de uso geral SOTA. Pode ser usado para prever estrutura, função e outras propriedades de proteínas diretamente de sequências individuais. Lançado com Lin et al. 2022 (atualização de agosto de 2022). |
ESMFold | esmfold_v1() | APO + UR50 | Preditor de estrutura 3D de sequência única ponta a ponta (atualização de novembro de 2022). |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | Modelo de linguagem do transformador MSA. Pode ser usado para extrair embeddings de um MSA. Ativa a inferência de estrutura SOTA. Lançado com Rao et al. 2021 (versão ICML'21, junho de 2021). |
ESM-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | Modelo de linguagem especializado para previsão de efeitos variantes. Permite a previsão SOTA zero-shot dos efeitos funcionais das variações de sequência. Mesma arquitetura do ESM-1b, mas treinada em UniRef90. Lançado com Meier et al. 2021. |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50() | CAT + UR50 | Modelo dobrável inverso. Pode ser usado para projetar sequências para determinadas estruturas ou para prever efeitos funcionais da variação de sequência para determinadas estruturas. Permite o design de sequência de backbone fixo SOTA. Lançado com Hsu et al. 2022. |
Para obter uma lista completa de modelos disponíveis, com detalhes e notas de versão, consulte Modelos pré-treinados.
Uma maneira fácil de começar é carregar o ESM ou ESMFold por meio da biblioteca de transformadores HuggingFace, que simplificou as dependências do ESMFold e fornece uma API padronizada e ferramentas para trabalhar com modelos pré-treinados de última geração.
Alternativamente, o ColabFold integrou o ESMFold para que você possa executá-lo facilmente diretamente no navegador em uma instância do Google Colab.
Também fornecemos uma API que você pode acessar através do curl ou na página do ESM Metagenomic Atlas.
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
Para ESM-MSA-1b, ESM-IF1 ou qualquer outro modelo, você pode usar a implementação original de nosso repositório diretamente por meio das instruções abaixo.
Como pré-requisito, você deve ter o PyTorch instalado para usar este repositório.
Você pode usar este one-liner para instalação, usando a versão mais recente do esm:
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
Para usar o modelo ESMFold, certifique-se de iniciar em um ambiente com python <= 3.9 e pytorch instalado. Em seguida, adicione a opção [esmfold]
à instalação do pip, que instalará as dependências do OpenFold automaticamente. A instalação do Openfold requer 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 : Se a instalação do openfold falhar, verifique se nvcc
está disponível e se uma versão do PyTorch compatível com cuda foi instalada.
Alternativamente, fornecemos o ambiente esmfold
conda, que pode ser construído via conda env create -f environment.yml
.
Também oferecemos suporte ao PyTorch Hub, que elimina a necessidade de clonar e/ou instalar este repositório você mesmo:
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
Após a instalação do pip, você pode carregar e usar um modelo pré-treinado da seguinte maneira:
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 ()
Após a instalação com a opção [esmfold]
, você pode usar o modelo de previsão de estrutura ESMFold da seguinte maneira:
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
Além de esm.pretrained.esmfold_v1()
que é o modelo de melhor desempenho que recomendamos usar, também fornecemos esm.pretrained.esmfold_v0()
que foi usado para os experimentos em Lin et al. 2022.
Também fornecemos uma interface de linha de comando ( esm-fold
) que prevê estruturas em massa com eficiência a partir de um arquivo 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
O comando fará uma previsão para cada sequência no arquivo fasta. Os multímeros podem ser previstos e devem ser inseridos no arquivo fasta como uma única sequência, com cadeias separadas por um caractere ":".
Por padrão, as previsões serão agrupadas em lote para que sequências mais curtas sejam previstas simultaneamente. Isso pode ser desativado configurando --max-tokens-per-batch=0
. O lote pode melhorar significativamente a velocidade de previsão em sequências mais curtas.
O sinalizador --cpu-offload
pode ser útil para fazer previsões em sequências mais longas. Ele tentará descarregar alguns parâmetros na RAM da CPU, em vez de armazená-los na GPU.
Finalmente, os experimentos de ablação para LMs de tamanhos variados Lin et al. A tabela S1 de 2022 é lançada como esm.pretrained.esmfold_structure_module_only_*()
. Não recomendamos o uso desses modelos para previsão de estrutura.
Fornecemos uma interface de linha de comando ( esm-extract
) que extrai com eficiência embeddings em massa para um arquivo FASTA do 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
Os comandos a seguir permitem a extração da incorporação da camada final para um arquivo FASTA do 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
Um dispositivo cuda é opcional e será detectado automaticamente.
O diretório some_proteins_emb_esm2/
agora contém um arquivo .pt
por sequência FASTA; use torch.load()
para carregá-los. scripts/extract.py
possui sinalizadores que determinam o que está incluído no arquivo .pt
:
--repr-layers
(padrão: apenas final) seleciona de quais camadas incluir embeddings.--include
especifica quais embeddings salvar. Você pode usar o seguinte:per_tok
inclui a sequência completa, com uma incorporação por aminoácido (seq_len x hidden_dim).mean
inclui a média dos embeddings de toda a sequência, por camada.bos
inclui os embeddings do token de início de sequência. (NOTA: Não use com modelos pré-treinados - treinamos sem supervisão do token bos) Se você deseja carregar modelos muito grandes como 15B e/ou fazer inferência em sequências longas em sua máquina, a inferência regular da GPU pode levar a erros de OOM. Mostramos como carregar o modelo com Fully Sharded Data Parallel (FSDP) da Fairscale e usar seu recurso de descarregamento de CPU. Isso permite fazer inferência de modelos grandes em uma única GPU. Verifique examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
para obter mais detalhes.
Consulte "exemplos/predição de variante/" para código e pesos pré-treinados para os modelos ESM-1v descritos em Modelos de linguagem permitem a previsão zero dos efeitos de mutações na função da proteína. (Meier et al. 2021).
Observe que o ESM-2 também pode ser usado para previsão de variantes e espera-se que tenha desempenho semelhante ao ESM-1v.
Consulte "examples/inverse_folding/" para obter um guia do usuário detalhado. O modelo ESM-IF1 é descrito como GVPTransformer
em Learning dobramento inverso de milhões de estruturas previstas. (Hsu et al. 2022).
Também fornecemos um notebook colab para as funcionalidades de design de sequência e pontuação de sequência.
O modelo de dobramento inverso ESM-IF1 é construído para prever sequências de proteínas a partir de suas coordenadas de átomos de backbone. Fornecemos scripts aqui 1) para amostrar projetos de sequência para uma determinada estrutura e 2) para pontuar sequências para uma determinada estrutura.
Treinado com estruturas de proteína de 12M previstas por AlphaFold2, o modelo ESM-IF1 consiste em camadas de processamento de entrada geométrica invariantes seguidas por um transformador sequência a sequência e atinge 51% de recuperação de sequência nativa em backbones estruturalmente retidos com 72% de recuperação para enterrados. resíduos. O modelo também é treinado com mascaramento de extensão para tolerar a falta de coordenadas do backbone e, portanto, pode prever sequências para estruturas parcialmente mascaradas.
A configuração do ambiente é descrita nesta subseção de exemplos/dobramento_inverso.
Para amostrar sequências para uma determinada estrutura no formato PDB ou mmCIF, use o script sample_sequences.py
. O arquivo de entrada pode ter .pdb
ou .cif
como sufixo.
Por exemplo, para obter amostras de 3 designs de sequência para a estrutura golgi caseína quinase (PDB 5YH2; PDB Molecule of the Month de janeiro de 2022), podemos executar o seguinte comando no diretório raiz 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
As sequências amostradas serão salvas em formato fasta no arquivo de saída especificado.
O parâmetro temperatura controla a nitidez da distribuição de probabilidade para amostragem de sequência. Temperaturas de amostragem mais altas produzem sequências mais diversas, mas provavelmente com menor recuperação de sequência nativa. A temperatura de amostragem padrão é 1. Para otimizar a recuperação da sequência nativa, recomendamos a amostragem com temperatura baixa, como 1e-6.
Para pontuar as probabilidades logarítmicas condicionais para sequências condicionadas em uma determinada estrutura, use o script score_log_likelihoods.py
.
Por exemplo, para pontuar as sequências em examples/inverse_folding/data/5YH2_mutated_seqs.fasta
de acordo com a estrutura em examples/inverse_folding/data/5YH2.pdb
, podemos executar o seguinte comando no diretório raiz 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
As probabilidades de log condicionais são salvas em formato csv no caminho de saída especificado. Os valores de saída são as probabilidades logarítmicas médias calculadas sobre todos os aminoácidos em uma sequência.
Para obter mais informações, consulte "./examples/inverse_folding/" para obter um guia do usuário detalhado.
Visite o site do ESM Metagenomic Atlas e consulte nossa postagem no blog para saber mais.
Instruções para download em massa disponíveis em um README separado aqui.
Os recursos do Atlas incluem uma página para dobrar uma sequência usando ESMFold, pesquisando um subconjunto do Atlas ESM por estrutura ou sequência, bem como uma API para acessar esses recursos programaticamente.
O Foldseek fornece pesquisa no Atlas sem limitação de comprimento aqui.
O modelo de dobramento inverso ESM-IF1 prevê sequências de proteínas a partir de suas coordenadas de átomos de backbone, treinadas com estruturas de proteínas 12M previstas por AlphaFold2. Esta nota guia você através de exemplos de sequências de amostragem, cálculo de probabilidades logarítmicas condicionais e extração da saída do codificador como representação de estrutura.
Para ajudá-lo a começar a usar os embeddings, este tutorial do Jupyter Notebook mostra como treinar um preditor de variante supervisionado usando embeddings do ESM-1. Você pode adotar um protocolo semelhante para treinar um modelo para qualquer tarefa posterior, mesmo com dados limitados. Primeiro, você pode obter os embeddings para examples/data/P62593.fasta
baixando os embeddings pré-computados conforme as instruções no notebook ou executando o seguinte:
# 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
Em seguida, siga as instruções restantes do tutorial. Você também pode executar o tutorial em um notebook colab.
Observe, como alternativa, use as instruções mais recentes para previsão de variante zero-shot, que prevê efeitos mutacionais sem qualquer treinamento supervisionado.
Este tutorial do notebook Jupyter demonstra a previsão de contato com os modelos ESM-2 e MSA Transformer (ESM-MSA-1). A previsão de contato é baseada em uma regressão logística nos mapas de atenção do modelo. Esta metodologia é baseada em nosso artigo ICLR 2021, Modelos de linguagem de proteínas transformadoras são aprendizes de estrutura não supervisionados. (Rao et al. 2020) O transformador MSA (ESM-MSA-1) usa um alinhamento de sequência múltipla (MSA) como entrada e usa os mapas de autoatenção de linhas vinculadas da mesma maneira. Consulte Transformador MSA. (Rao et al. 2021).
Para obter contatos não supervisionados baseados em atenção, ligue model.predict_contacts(tokens)
ou model(tokens, return_contacts=True)
.
E este tutorial do notebook jupyter mostra como carregar e indexar o ESMStructuralSplitDataset
e calcula as previsões de contato não supervisionadas do mapa de autoatenção usando ESM-2.
Taquigrafia | esm.pretrained. | #camadas | #params | Conjunto de dados | Incorporando Dim | URL do modelo (baixado automaticamente para ~/.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 | 650 milhões | UR50/D 2021_04 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t33_650M_UR50D.pt | |
esm2_t30_150M_UR50D | 30 | 150 milhões | UR50/D 2021_04 | 640 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t30_150M_UR50D.pt | |
esm2_t12_35M_UR50D | 12 | 35 milhões | UR50/D 2021_04 | 480 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t12_35M_UR50D.pt | |
esm2_t6_8M_UR50D | 6 | 8 milhões | 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 (+vários) | vários | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_structure_module_only_* | |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50 | 20 | 124 milhões | CATH 4.3 + estruturas 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 | 650 milhões | 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 | 100 milhões | 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 | 100 milhões | 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 | 650 milhões | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt |
ESM-1 | esm1_t34_670M_UR50S | 34 | 670 milhões | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt |
esm1_t34_670M_UR50D | 34 | 670 milhões | UR50/D 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt | |
esm1_t34_670M_UR100 | 34 | 670 milhões | UR100 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt | |
esm1_t12_85M_UR50S | 12 | 85 milhões | UR50/S 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt | |
esm1_t6_43M_UR50S | 6 | 43 milhões | UR50/S 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt |
Aqui está uma lista cronológica dos modelos lançados e o artigo em que foram apresentados:
Taquigrafia | Notas de versão |
---|---|
ESM-1 | Lançado com Rives et al. 2019 (atualização de agosto de 2020). |
ESM-1b | Lançado com Rives et al. 2019 (atualização de dezembro de 2020). Consulte o Apêndice B. |
ESM-MSA-1 | Lançado com Rao et al. 2021 (Pré-impressão v1). |
ESM-MSA-1b | Lançado com Rao et al. 2021 (versão ICML'21, junho de 2021). |
ESM-1v | Lançado com Meier et al. 2021. |
ESM-IF1 | Lançado com Hsu et al. 2022. |
ESM-2 | Lançado com Lin et al. 2022. |
Este é um conjunto de dados de validação cruzada quíntupla de estruturas de domínio de proteínas que pode ser usado para medir a generalização de representações em diferentes níveis de dissimilaridade estrutural. O conjunto de dados implementa resistências estruturais nos níveis de família, superfamília e dobra. O banco de dados SCOPe é usado para classificar domínios. Independentemente para cada nível de resistência estrutural, os domínios são divididos em 5 conjuntos iguais, ou seja, cinco conjuntos de dobras, superfamílias ou famílias. Isto garante que, para cada uma das cinco partições, estruturas com a mesma classificação não apareçam nos conjuntos de treinamento e de teste. Para um determinado nível de classificação, cada estrutura aparece uma vez em um conjunto de teste, de modo que no experimento de validação cruzada cada uma das estruturas será avaliada exatamente uma vez.
O conjunto de dados fornece coordenadas 3D, mapas de distância e rótulos de estrutura secundária. Para mais detalhes sobre a construção do conjunto de dados ver Rives et al. 2019 Apêndice A.10.
Este tutorial do notebook jupyter mostra como carregar e indexar o ESMStructuralSplitDataset
.
ESMStructuralSplitDataset
, ao inicializar, fará download splits
e pkl
. Também fornecemos msas
para cada um dos domínios. Os dados podem ser baixados diretamente abaixo.
Nome | Descrição | URL |
---|---|---|
divisões | trem/parcelas válidas | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
pkl | objetos pkl contendo sequência, rótulos SSP, mapa de distância e coordenadas 3D | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
msas | arquivos a3m contendo MSA para cada domínio | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
Os arquivos divididos que estabelecem quais clusters UniRef50 foram usados como conjunto de avaliação realizada para pré-treinamento em Rives et al. 2019 e Rao et al. 2021 pode ser encontrado aqui:
Esses arquivos contêm apenas os IDs UniRef50 e IDs UniRef100 correspondentes ao banco de dados UniRef, versão 2018-03, que é lançado pelo UniProt Consortium sob uma licença Creative Commons Attribution (CC BY 4.0).
Tarefa | Previsão de contato não supervisionado | Previsão de Estrutura | |||
---|---|---|---|---|---|
Conjunto de teste | Grande válido | CASP14 | CAMEO (abril a junho de 2022) | CASP14 | CAMEO (abril a junho de 2022) |
Gremlin (Potts) | 39,3 | ||||
FITA | 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 |
Comparação com modelos de linguagem de proteínas relacionados em tarefas de previsão de estrutura.
Se você achar os modelos úteis em sua pesquisa, pedimos que cite o artigo relevante:
@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 a previsão de contato de autoatenção:
@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 o 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 previsão de variantes usando 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 dobra inversa 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 o modelo de linguagem ESM-2 e 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 }
}
Grande parte desse código baseia-se na estrutura de modelagem de sequência fairseq. Usamos fairseq internamente para nossa pesquisa de modelagem de linguagem de proteínas. É altamente recomendável experimentá-lo se você quiser pré-treinar modelos de linguagem de proteínas do zero.
Além disso, se você quiser usar o benchmark de previsão de variantes de Meier et al. (2021), disponibilizamos um arquivo bibtex com citações de todos