Pembaruan April 2023: Kode untuk dua pracetak simultan pada desain protein kini dirilis! Kode untuk "Model bahasa menggeneralisasi di luar protein alami" ada di bawah contoh/lm-design/. Kode untuk "Bahasa pemrograman tingkat tinggi untuk desain protein generatif" ada di bawah contoh/bahasa-pemrograman-protein/.
Repositori ini berisi kode dan bobot terlatih untuk model bahasa protein Transformer dari Meta Fundamental AI Research Protein Team (FAIR), termasuk ESM-2 dan ESMFold kami yang canggih, serta MSA Transformer , ESM-1v untuk memprediksi efek varian dan ESM-IF1 untuk pelipatan terbalik. Model bahasa protein transformator diperkenalkan pada pracetak makalah tahun 2019 "Struktur dan fungsi biologis muncul dari penskalaan pembelajaran tanpa pengawasan hingga 250 juta rangkaian protein". ESM-2 mengungguli semua model bahasa protein urutan tunggal yang diuji di berbagai tugas prediksi struktur. ESMFold memanfaatkan model bahasa ESM-2 untuk menghasilkan prediksi struktur yang akurat dari ujung ke ujung langsung dari urutan protein.
Pada bulan November 2022, kami merilis ESM Metagenomic Atlas v0
, sebuah atlas terbuka yang berisi 617 juta prediksi struktur protein metagenomik. Atlas ini diperbarui pada Maret 2023 bekerja sama dengan EBI. v2023_02
baru menambahkan 150 juta struktur prediksi lainnya ke Atlas, serta penyematan ESM2 yang telah dihitung sebelumnya. Unduhan massal, postingan blog, dan sumber daya yang disediakan di situs web Atlas didokumentasikan dalam README ini.
Pada bulan Desember 2022, kami merilis dua pracetak simultan pada desain protein.
Untuk model bahasa protein transformator:
@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
. Lihat detail situs web dan unduhan massal.<mask>
) secara berurutan.ESM-MSA-1b
).Steno | esm.pretrained. | Kumpulan data | Keterangan |
---|---|---|---|
ESM-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50 (contoh UR90) | Model bahasa protein tujuan umum SOTA. Dapat digunakan untuk memprediksi struktur, fungsi, dan sifat protein lainnya langsung dari sekuens individu. Dirilis bersama Lin dkk. 2022 (pembaruan Agustus 2022). |
Lipatan ES | esmfold_v1() | PDB+UR50 | Prediktor struktur 3D urutan tunggal ujung ke ujung (pembaruan November 2022). |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | Model bahasa MSA Transformer. Dapat digunakan untuk mengekstrak embeddings dari MSA. Mengaktifkan inferensi struktur SOTA. Dirilis bersama Rao dkk. 2021 (versi ICML'21, Juni 2021). |
ESM-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | Model bahasa dikhususkan untuk prediksi efek varian. Memungkinkan prediksi zero-shot SOTA dari efek fungsional variasi urutan. Arsitektur yang sama seperti ESM-1b, tetapi dilatih di UniRef90. Dirilis bersama Meier dkk. 2021. |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50() | CATH + UR50 | Model lipat terbalik. Dapat digunakan untuk merancang rangkaian untuk struktur tertentu, atau untuk memprediksi efek fungsional variasi rangkaian untuk struktur tertentu. Mengaktifkan desain urutan tulang punggung tetap SOTA. Dirilis bersama Hsu dkk. 2022. |
Untuk daftar lengkap model yang tersedia, beserta detail dan catatan rilis, lihat Model Terlatih.
Cara mudah untuk memulai adalah dengan memuat ESM atau ESMFold melalui pustaka transformator HuggingFace, yang telah menyederhanakan dependensi ESMFold dan menyediakan API dan alat standar untuk bekerja dengan model terlatih yang canggih.
Alternatifnya, ColabFold telah mengintegrasikan ESMFold sehingga Anda dapat dengan mudah menjalankannya langsung di browser pada instance Google Colab.
Kami juga menyediakan API yang dapat Anda akses melalui curl atau di halaman web ESM Metagenomic Atlas.
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
Untuk ESM-MSA-1b, ESM-IF1, atau model lainnya, Anda dapat menggunakan implementasi asli dari repo kami langsung melalui petunjuk di bawah.
Sebagai prasyarat, Anda harus menginstal PyTorch untuk menggunakan repositori ini.
Anda dapat menggunakan one-liner ini untuk instalasi, menggunakan rilis terbaru esm:
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
Untuk menggunakan model ESMFold, pastikan Anda memulai dari lingkungan dengan python <= 3.9 dan pytorch diinstal. Kemudian tambahkan opsi [esmfold]
ke instalasi pip Anda, yang akan menginstal dependensi untuk OpenFold secara otomatis. Instalasi Openfold memerlukan 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 '
CATATAN : Jika instalasi openfold gagal, periksa kembali apakah nvcc
tersedia dan versi PyTorch yang kompatibel dengan cuda telah diinstal.
Alternatifnya, kami menyediakan lingkungan conda esmfold
, yang dapat dibangun melalui conda env create -f environment.yml
.
Kami juga mendukung PyTorch Hub, yang menghilangkan kebutuhan untuk mengkloning dan/atau menginstal repositori ini sendiri:
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
Setelah instalasi pip, Anda dapat memuat dan menggunakan model terlatih sebagai berikut:
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 ()
Setelah menginstal dengan opsi [esmfold]
, Anda dapat menggunakan model prediksi struktur ESMFold sebagai berikut:
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
Selain esm.pretrained.esmfold_v1()
yang merupakan model berperforma terbaik yang kami rekomendasikan untuk digunakan, kami juga menyediakan esm.pretrained.esmfold_v0()
yang digunakan untuk eksperimen di Lin dkk. 2022.
Kami juga menyediakan antarmuka baris perintah ( esm-fold
) yang secara efisien memprediksi struktur secara massal dari file FASTA menggunakan 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
Perintah tersebut akan membuat satu prediksi untuk setiap urutan dalam file fasta. Multimer dapat diprediksi dan harus dimasukkan ke dalam file fasta sebagai satu urutan, dengan rantai yang dipisahkan oleh karakter ":".
Secara default, prediksi akan dikelompokkan bersama sehingga urutan yang lebih pendek diprediksi secara bersamaan. Ini dapat dinonaktifkan dengan mengatur --max-tokens-per-batch=0
. Pengelompokan dapat meningkatkan kecepatan prediksi secara signifikan pada urutan yang lebih pendek.
Flag --cpu-offload
dapat berguna untuk membuat prediksi pada rangkaian yang lebih panjang. Ini akan mencoba memindahkan beberapa parameter ke RAM CPU, daripada menyimpannya di GPU.
Akhirnya, percobaan ablasi untuk LM dengan berbagai ukuran Lin et al. Tabel S1 2022 dirilis sebagai esm.pretrained.esmfold_structure_module_only_*()
. Kami tidak menyarankan penggunaan model ini untuk prediksi struktur.
Kami menyediakan antarmuka baris perintah ( esm-extract
) yang secara efisien mengekstraksi embeddings secara massal untuk file FASTA dari 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
Perintah berikut memungkinkan ekstraksi penyematan lapisan akhir untuk file FASTA dari model 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
Perangkat cuda bersifat opsional dan akan terdeteksi secara otomatis.
Direktori some_proteins_emb_esm2/
sekarang berisi satu file .pt
per urutan FASTA; gunakan torch.load()
untuk memuatnya. scripts/extract.py
memiliki tanda yang menentukan apa yang termasuk dalam file .pt
:
--repr-layers
(default: final saja) memilih lapisan mana yang akan disertakan penyematannya.--include
menentukan penyematan apa yang akan disimpan. Anda dapat menggunakan yang berikut ini:per_tok
menyertakan urutan lengkap, dengan penyematan per asam amino (seq_len x Hidden_dim).mean
mencakup rata-rata penyematan pada seluruh urutan, per lapisan.bos
menyertakan penyematan dari token awal urutan. (CATATAN: Jangan gunakan dengan model yang telah dilatih sebelumnya - kami berlatih tanpa pengawasan bos-token) Jika Anda ingin memuat model yang sangat besar seperti 15B dan/atau melakukan inferensi pada rangkaian panjang di mesin Anda, inferensi GPU biasa dapat menyebabkan kesalahan OOM. Kami menunjukkan cara memuat model dengan Fully Sharded Data Parallel (FSDP) Fairscale dan menggunakan fitur pembongkaran CPU-nya. Hal ini memungkinkan untuk melakukan inferensi model besar pada satu GPU. Silakan periksa examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
untuk detail selengkapnya.
Lihat "contoh/prediksi varian/" untuk kode dan bobot terlatih untuk model ESM-1v yang dijelaskan dalam Model bahasa memungkinkan prediksi zero-shot tentang efek mutasi pada fungsi protein. (Meier dkk. 2021).
Perlu diperhatikan bahwa ESM-2 juga dapat digunakan untuk prediksi varian, dan diharapkan memiliki performa serupa dengan ESM-1v.
Lihat "examples/inverse_folding/" untuk panduan pengguna terperinci. Model ESM-IF1 digambarkan sebagai GVPTransformer
dalam Pembelajaran pelipatan terbalik dari jutaan struktur yang diprediksi. (Hsu dkk. 2022).
Kami juga menyediakan notebook colab untuk fungsi desain urutan dan penilaian urutan.
Model pelipatan terbalik ESM-IF1 dibuat untuk memprediksi urutan protein dari koordinat atom tulang punggungnya. Kami menyediakan skrip di sini 1) untuk mengambil sampel desain urutan untuk struktur tertentu dan 2) untuk menilai urutan untuk struktur tertentu.
Dilatih dengan struktur protein 12M yang diprediksi oleh AlphaFold2, model ESM-IF1 terdiri dari lapisan pemrosesan masukan geometris invarian diikuti oleh transformator urutan-ke-urutan, dan mencapai pemulihan urutan asli 51% pada tulang punggung yang tertahan secara struktural dengan pemulihan 72% untuk terkubur residu. Model ini juga dilatih dengan span masking untuk mentolerir hilangnya koordinat tulang punggung dan oleh karena itu dapat memprediksi urutan untuk struktur yang ditutupi sebagian.
Pengaturan lingkungan dijelaskan dalam subbagian contoh/inverse_folding ini.
Untuk mengambil sampel urutan struktur tertentu dalam format PDB atau mmCIF, gunakan skrip sample_sequences.py
. File input dapat memiliki akhiran .pdb
atau .cif
.
Misalnya, untuk mengambil sampel 3 desain sekuens untuk struktur golgi casein kinase (PDB 5YH2; PDB Molecule of the Month mulai Januari 2022), kita dapat menjalankan perintah berikut dari direktori root 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
Urutan sampel akan disimpan dalam format fasta ke file keluaran yang ditentukan.
Parameter suhu mengontrol ketajaman distribusi probabilitas untuk pengambilan sampel sekuens. Suhu pengambilan sampel yang lebih tinggi menghasilkan sekuens yang lebih beragam tetapi kemungkinan besar memiliki pemulihan sekuens asli yang lebih rendah. Suhu pengambilan sampel default adalah 1. Untuk mengoptimalkan pemulihan urutan asli, kami menyarankan pengambilan sampel dengan suhu rendah seperti 1e-6.
Untuk menilai kemungkinan log kondisional untuk rangkaian yang dikondisikan pada struktur tertentu, gunakan skrip score_log_likelihoods.py
.
Misalnya, untuk menilai urutan di examples/inverse_folding/data/5YH2_mutated_seqs.fasta
sesuai dengan struktur di examples/inverse_folding/data/5YH2.pdb
, kita dapat menjalankan perintah berikut dari direktori root 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
Kemungkinan log bersyarat disimpan dalam format csv di jalur keluaran yang ditentukan. Nilai keluarannya adalah rata-rata log-likelihood yang dirata-ratakan untuk semua asam amino dalam suatu rangkaian.
Untuk informasi lebih lanjut, lihat "./examples/inverse_folding/" untuk panduan pengguna terperinci.
Silakan kunjungi situs web ESM Metagenomic Atlas, dan lihat postingan blog kami untuk mempelajari lebih lanjut.
Petunjuk pengunduhan massal tersedia di README terpisah di sini.
Sumber daya Atlas mencakup halaman untuk melipat urutan menggunakan ESMFold, mencari subset ESM Atlas berdasarkan struktur atau urutan, serta API untuk mengakses sumber daya tersebut secara terprogram.
Foldseek menyediakan pencarian berdasarkan Atlas tanpa batasan panjang di sini.
Model pelipatan terbalik ESM-IF1 memprediksi urutan protein dari koordinat atom tulang punggungnya, dilatih dengan struktur protein 12M yang diprediksi oleh AlphaFold2. Catatan ini memandu Anda melalui contoh urutan pengambilan sampel, menghitung kemungkinan log bersyarat, dan mengekstrak keluaran encoder sebagai representasi struktur.
Untuk membantu Anda mulai menggunakan penyematan, tutorial notebook jupyter ini menunjukkan cara melatih prediktor varian yang diawasi menggunakan penyematan dari ESM-1. Anda dapat mengadopsi protokol serupa untuk melatih model untuk tugas hilir apa pun, bahkan dengan data terbatas. Pertama, Anda bisa mendapatkan penyematan untuk examples/data/P62593.fasta
dengan mengunduh penyematan yang telah dihitung sebelumnya seperti yang diinstruksikan di buku catatan atau dengan menjalankan perintah berikut:
# 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
Kemudian, ikuti petunjuk selanjutnya dalam tutorial. Anda juga dapat menjalankan tutorial di notebook colab.
Catatan, sebagai alternatif, gunakan instruksi yang lebih baru untuk prediksi varian zero-shot, yang memprediksi efek mutasi tanpa pelatihan yang diawasi.
Tutorial notebook jupyter ini menunjukkan prediksi kontak dengan model ESM-2 dan MSA Transformer (ESM-MSA-1). Prediksi kontak didasarkan pada regresi logistik pada peta perhatian model. Metodologi ini didasarkan pada makalah ICLR 2021 kami, Model bahasa protein transformator adalah pembelajar struktur tanpa pengawasan. (Rao dkk. 2020) MSA Transformer (ESM-MSA-1) menggunakan penyelarasan beberapa urutan (MSA) sebagai masukan, dan menggunakan peta perhatian diri baris terikat dengan cara yang sama. Lihat Transformator MSA. (Rao dkk. 2021).
Untuk mendapatkan kontak berbasis perhatian tanpa pengawasan, hubungi model.predict_contacts(tokens)
atau model(tokens, return_contacts=True)
.
Dan tutorial notebook jupyter ini menunjukkan cara memuat dan mengindeks ESMStructuralSplitDataset
, dan menghitung prediksi kontak tanpa pengawasan peta perhatian mandiri menggunakan ESM-2.
Steno | esm.pretrained. | #lapisan | #params | Kumpulan data | Menanamkan Redup | URL model (secara otomatis diunduh ke ~/.cache/torch/hub/checkpoints ) |
---|---|---|---|---|---|---|
ESM-2 | esm2_t48_15B_UR50D | 48 | 15B | UR50/H 2021_04 | 5120 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t48_15B_UR50D.pt |
esm2_t36_3B_UR50D | 36 | 3B | UR50/H 2021_04 | 2560 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t36_3B_UR50D.pt | |
esm2_t33_650M_UR50D | 33 | 650M | UR50/H 2021_04 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t33_650M_UR50D.pt | |
esm2_t30_150M_UR50D | 30 | 150M | UR50/H 2021_04 | 640 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t30_150M_UR50D.pt | |
esm2_t12_35M_UR50D | 12 | 35M | UR50/H 2021_04 | 480 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t12_35M_UR50D.pt | |
esm2_t6_8M_UR50D | 6 | 8M | UR50/H 2021_04 | 320 | https://dl.fbaipublicfiles.com/fair-esm/models/esm2_t6_8M_UR50D.pt | |
Lipatan ES | esmfold_v1 | 48 (+36) | 690M (+3B) | UR50/H 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v1.pt |
esmfold_v0 | 48 (+36) | 690M (+3M) | UR50/H 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_3B_v0.pt | |
esmfold_structure_module_only_* | 0 (+berbagai) | bermacam-macam | UR50/H 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 + struktur prediksi untuk UR50 | 512 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_if1_gvp4_t16_142M_UR50.pt |
ESM-1v | esm1v_t33_650M_UR90S_[1-5] | 33 | 650M | UR90/S 2020_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1v_t33_650M_UR90S_1.pt |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S | 12 | 100M | UR50/S + MSA 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1b_t12_100M_UR50S.pt |
ESM-MSA-1 | esm_msa1_t12_100M_UR50S | 12 | 100M | UR50/S + MSA 2018_03 | 768 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1_t12_100M_UR50S.pt |
ESM-1b | esm1b_t33_650M_UR50S | 33 | 650M | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt |
ESM-1 | esm1_t34_670M_UR50S | 34 | 670M | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt |
esm1_t34_670M_UR50D | 34 | 670M | UR50/H 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 |
Berikut adalah daftar kronologis model yang dirilis dan makalah yang memperkenalkannya:
Steno | Catatan Rilis |
---|---|
ESM-1 | Dirilis bersama Rives dkk. 2019 (pembaruan Agustus 2020). |
ESM-1b | Dirilis bersama Rives dkk. 2019 (pembaruan Desember 2020). Lihat Lampiran B. |
ESM-MSA-1 | Dirilis bersama Rao dkk. 2021 (Pracetak v1). |
ESM-MSA-1b | Dirilis bersama Rao dkk. 2021 (versi ICML'21, Juni 2021). |
ESM-1v | Dirilis bersama Meier dkk. 2021. |
ESM-IF1 | Dirilis bersama Hsu dkk. 2022. |
ESM-2 | Dirilis bersama Lin dkk. 2022. |
Ini adalah kumpulan data validasi silang lima kali lipat dari struktur domain protein yang dapat digunakan untuk mengukur generalisasi representasi di berbagai tingkat ketidaksamaan struktural. Kumpulan data ini mengimplementasikan ketidaksepakatan struktural pada tingkat keluarga, keluarga super, dan lipatan. Basis data SCOPe digunakan untuk mengklasifikasikan domain. Secara independen untuk setiap tingkat ketahanan struktural, domain dibagi menjadi 5 set yang sama, yaitu lima set lipatan, keluarga super, atau keluarga. Hal ini memastikan bahwa untuk masing-masing dari lima partisi, struktur yang memiliki klasifikasi yang sama tidak muncul di rangkaian pelatihan dan pengujian. Untuk tingkat klasifikasi tertentu, setiap struktur muncul dalam set pengujian satu kali, sehingga dalam eksperimen validasi silang setiap struktur akan dievaluasi tepat satu kali.
Kumpulan data menyediakan koordinat 3d, peta jarak, dan label struktur sekunder. Untuk rincian lebih lanjut tentang konstruksi kumpulan data, lihat Rives dkk. 2019 Lampiran A.10.
Tutorial notebook jupyter ini menunjukkan cara memuat dan mengindeks ESMStructuralSplitDataset
.
ESMStructuralSplitDataset
, setelah diinisialisasi, akan mengunduh splits
dan pkl
. Kami juga menyediakan msas
untuk setiap domain. Datanya bisa langsung diunduh di bawah ini.
Nama | Keterangan | URL |
---|---|---|
terbelah | kereta/perpecahan yang valid | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
pkl | objek pkl yang berisi urutan, label SSP, peta jarak, dan koordinat 3d | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
msas | file a3m yang berisi MSA untuk setiap domain | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
File terpisah yang menetapkan cluster UniRef50 mana yang digunakan sebagai set evaluasi yang diadakan untuk pra-pelatihan di Rives dkk. 2019 dan Rao dkk. 2021 dapat ditemukan di sini:
File-file ini hanya berisi ID UniRef50 dan ID UniRef100 yang sesuai dengan database UniRef, rilis 2018-03 yang dirilis oleh Konsorsium UniProt di bawah Lisensi Creative Commons Attribution (CC BY 4.0).
Tugas | Prediksi kontak tanpa pengawasan | Prediksi Struktur | |||
---|---|---|---|---|---|
Set tes | Besar sah | CASP14 | CAMEO (Apr-Jun 2022) | CASP14 | CAMEO (Apr-Jun 2022) |
Gremlin (Pott) | 39.3 | ||||
TAPE | 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 |
Perbandingan dengan model bahasa protein terkait pada tugas prediksi struktur.
Jika Anda merasa model ini berguna dalam penelitian Anda, kami meminta Anda mengutip makalah yang relevan:
@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 }
}
Untuk prediksi kontak perhatian diri:
@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 }
}
Untuk Transformator 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 }
}
Untuk prediksi varian menggunakan 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 }
}
Untuk pelipatan terbalik menggunakan 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 }
}
Untuk model bahasa ESM-2 dan 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 }
}
Sebagian besar kode ini dibangun berdasarkan kerangka pemodelan urutan fairseq. Kami menggunakan fairseq secara internal untuk penelitian pemodelan bahasa protein kami. Kami sangat menyarankan untuk mencobanya jika Anda ingin melatih model bahasa protein terlebih dahulu dari awal.
Selain itu, jika Anda ingin menggunakan tolok ukur prediksi varian dari Meier dkk. (2021), kami menyediakan file bibtex dengan kutipan untuk semua