2023 年 4 月更新:关于蛋白质设计的两个同时预印本的代码现已发布! “语言模型泛化到天然蛋白质之外”的代码位于 Examples/lm-design/ 下。 “用于生成蛋白质设计的高级编程语言”的代码位于示例/蛋白质编程语言/下。
该存储库包含来自 Meta Fundamental AI 研究蛋白质团队 (FAIR) 的Transformer 蛋白质语言模型的代码和预训练权重,包括我们最先进的ESM-2和ESMFold以及MSA Transformer 、 ESM-1v用于预测变异效应, ESM-IF1用于反向折叠。 Transformer 蛋白质语言模型在论文《将无监督学习扩展到 2.5 亿个蛋白质序列中产生的生物结构和功能》的 2019 年预印本中引入。 ESM-2 在一系列结构预测任务中优于所有经过测试的单序列蛋白质语言模型。 ESMFold 利用 ESM-2 语言模型直接从蛋白质序列生成准确的端到端结构预测。
2022 年 11 月,我们发布了 ESM 宏基因组图谱v0
,这是一个包含 6.17 亿个预测宏基因组蛋白质结构的开放图集。该地图集于 2023 年 3 月与 EBI 合作更新。新的v2023_02
向 Atlas 添加了另外 1.5 亿个预测结构,以及预先计算的 ESM2 嵌入。批量下载、博客文章以及 Atlas 网站上提供的资源均记录在本自述文件中。
2022 年 12 月,我们同时发布了两本有关蛋白质设计的预印本。
对于变压器蛋白语言模型:
@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
的更新。请参阅网站和批量下载详细信息。
)。ESM-MSA-1b
) 进行了小幅修复。速记 | esm.pretrained. | 数据集 | 描述 |
---|---|---|---|
ESM-2 | esm2_t36_3B_UR50D() esm2_t48_15B_UR50D() | UR50(样品 UR90) | SOTA 通用蛋白质语言模型。可用于直接从单个序列预测结构、功能和其他蛋白质特性。与 Lin 等人一起发布。 2022 年(2022 年 8 月更新)。 |
ESM折叠 | esmfold_v1() | PDB+UR50 | 端到端单序列 3D 结构预测器(2022 年 11 月更新)。 |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S() | UR50 + MSA | MSA Transformer 语言模型。可用于从 MSA 中提取嵌入。启用结构的 SOTA 推断。与 Rao 等人一起发布。 2021 年(ICML'21 版本,2021 年 6 月)。 |
ESM-1v | esm1v_t33_650M_UR90S_1() ... esm1v_t33_650M_UR90S_5() | UR90 | 专门用于预测变量效应的语言模型。实现序列变异功能影响的 SOTA 零样本预测。与 ESM-1b 相同的架构,但在 UniRef90 上进行训练。与 Meier 等人一起发布。 2021 年。 |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50() | 导管+UR50 | 反向折叠模型。可用于设计给定结构的序列,或预测给定结构的序列变异的功能效应。支持 SOTA 固定主干序列设计。与 Hsu 等人一起发布。 2022 年。 |
有关可用模型的完整列表以及详细信息和发行说明,请参阅预训练模型。
一种简单的入门方法是通过 HuggingFace 转换器库加载 ESM 或 ESMFold,该库简化了 ESMFold 依赖项,并提供标准化 API 和工具来使用最先进的预训练模型。
或者,ColabFold 集成了 ESMFold,以便您可以轻松地直接在 Google Colab 实例上的浏览器中运行它。
我们还提供了一个API,您可以通过curl 或在ESM 宏基因组图谱网页上访问该API。
curl -X POST --data "KVFGRCELAAAMKRHGLDNYRGYSLGNWVCAAKFESNFNTQATNRNTDGSTDYGILQINSRWWCNDGRTPGSRNLCNIPCSALLSSDITASVNCAKKIVSDGNGMNAWVAWRNRCKGTDVQAWIRGCRL" https://api.esmatlas.com/foldSequence/v1/pdb/
对于 ESM-MSA-1b、ESM-IF1 或任何其他型号,您可以按照以下说明直接使用我们存储库中的原始实现。
作为先决条件,您必须安装 PyTorch 才能使用此存储库。
您可以使用此单行程序进行安装,使用最新版本的 esm:
pip install fair-esm # latest release, OR:
pip install git+https://github.com/facebookresearch/esm.git # bleeding edge, current repo main branch
要使用 ESMFold 模型,请确保从安装了 python <= 3.9 和 pytorch 的环境开始。然后将[esmfold]
选项添加到 pip 安装中,这将自动安装 OpenFold 的依赖项。 Openfold 安装需要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 '
注意:如果 openfold 安装失败,请仔细检查nvcc
是否可用以及是否已安装与 cuda 兼容的 PyTorch 版本。
或者,我们提供esmfold
conda 环境,可以通过conda env create -f environment.yml
构建。
我们还支持 PyTorch Hub,这样就无需自己克隆和/或安装此存储库:
import torch
model , alphabet = torch . hub . load ( "facebookresearch/esm:main" , "esm2_t33_650M_UR50D" )
pip install 后,您可以加载并使用预训练模型,如下所示:
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 ()
使用[esmfold]
选项安装后,可以使用ESMFold结构预测模型,如下所示:
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
除了我们推荐使用的性能最佳模型esm.pretrained.esmfold_v1()
之外,我们还提供了用于 Lin 等人的实验的esm.pretrained.esmfold_v0()
。 2022 年。
我们还提供了一个命令行界面 ( esm-fold
),可以使用 ESMFold 从 FASTA 文件中有效地批量预测结构:
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
该命令将为 fasta 文件中的每个序列进行一次预测。多聚体是可以预测的,并且应该作为单个序列输入到 fasta 文件中,链之间用“:”字符分隔。
默认情况下,预测将被批量处理在一起,以便同时预测较短的序列。可以通过设置--max-tokens-per-batch=0
来禁用此功能。批处理可以显着提高较短序列的预测速度。
--cpu-offload
标志对于对较长序列进行预测非常有用。它会尝试将一些参数卸载到 CPU RAM,而不是存储在 GPU 上。
最后,Lin 等人对不同尺寸的 LM 进行了烧蚀实验。第 2022 个表 S1 作为esm.pretrained.esmfold_structure_module_only_*()
发布。我们不建议使用这些模型进行结构预测。
我们提供了一个命令行界面 ( esm-extract
),可以有效地从 ESM 中批量提取 FASTA 文件的嵌入:
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
以下命令允许从 ESM-2 模型中提取 FASTA 文件的最后层嵌入:
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
cuda 设备是可选的,将被自动检测。
目录some_proteins_emb_esm2/
现在每个 FASTA 序列包含一个.pt
文件;使用torch.load()
来加载它们。 scripts/extract.py
具有确定.pt
文件中包含的内容的标志:
--repr-layers
(默认值:仅最终)选择要包含嵌入的层。--include
指定要保存的嵌入。您可以使用以下内容:per_tok
包括完整序列,每个氨基酸嵌入 (seq_len xhidden_dim)。mean
包括每层整个序列上平均的嵌入。bos
包括来自序列开头标记的嵌入。 (注意:不要与预先训练的模型一起使用 - 我们在没有 bos-token 监督的情况下进行训练)如果您想要加载非常大的模型(例如 15B)和/或在计算机上对长序列进行推理,则常规 GPU 推理可能会导致 OOM 错误。我们展示了如何使用 Fairscale 的完全分片数据并行 (FSDP) 加载模型并使用其 CPU 卸载功能。这允许在单个 GPU 上进行大型模型的推理。请查看examples/esm2_infer_fairscale_fsdp_cpu_offloading.py
了解更多详细信息。
请参阅“examples/variant-prediction/”,了解语言模型中描述的 ESM-1v 模型的代码和预训练权重,可以零样本预测突变对蛋白质功能的影响。 (Meier 等人,2021)。
请注意,ESM-2 也可用于变异预测,并且预计具有与 ESM-1v 类似的性能。
有关详细的用户指南,请参阅“examples/inverse_folding/”。 ESM-IF1 模型在《从数百万个预测结构中学习逆折叠》中被描述为GVPTransformer
。 (Hsu 等人,2022)。
我们还提供用于序列设计和序列评分功能的 Colab 笔记本。
ESM-IF1 反向折叠模型旨在根据骨架原子坐标预测蛋白质序列。我们在这里提供脚本 1) 对给定结构的序列设计进行采样,2) 对给定结构的序列进行评分。
ESM-IF1 模型使用 AlphaFold2 预测的 12M 蛋白质结构进行训练,由不变的几何输入处理层和序列到序列转换器组成,在结构保留的主干上实现了 51% 的天然序列恢复,对埋藏的主干实现了 72% 的恢复。残留物。该模型还使用跨度掩蔽进行训练,以容忍缺失的主干坐标,因此可以预测部分掩蔽结构的序列。
环境设置在示例/inverse_folding 的本小节中进行了描述。
要以 PDB 或 mmCIF 格式对给定结构进行序列采样,请使用sample_sequences.py
脚本。输入文件可以使用.pdb
或.cif
作为后缀。
例如,要对高尔基体酪蛋白激酶结构的 3 个序列设计进行采样(PDB 5YH2;2022 年 1 月起的本月 PDB 分子),我们可以从 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
采样序列将以 fasta 格式保存到指定的输出文件中。
温度参数控制序列采样概率分布的锐度。较高的采样温度会产生更多样的序列,但天然序列的回收率可能较低。默认采样温度为 1。为了优化本机序列恢复,我们建议使用低温采样,例如 1e-6。
要对给定结构条件下的序列的条件对数似然进行评分,请使用score_log_likelihoods.py
脚本。
例如,要根据examples/inverse_folding/data/5YH2_mutated_seqs.fasta
中的结构对examples/inverse_folding/data/5YH2.pdb
中的序列进行评分,我们可以从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
条件对数似然以 csv 格式保存在指定的输出路径中。输出值是序列中所有氨基酸的平均对数似然。
有关更多信息,请参阅“./examples/inverse_folding/”以获取详细的用户指南。
请访问 ESM 宏基因组图谱网站,并参阅我们的博客文章以了解更多信息。
批量下载说明可在此处的单独自述文件中找到。
Atlas 资源包括一个使用 ESMFold 折叠序列的页面,按结构或序列搜索 ESM Atlas 的子集,以及用于以编程方式访问这些资源的 API。
Foldseek 提供针对 Atlas 的搜索,此处没有长度限制。
ESM-IF1 反向折叠模型根据骨架原子坐标预测蛋白质序列,并使用 AlphaFold2 预测的 12M 蛋白质结构进行训练。本笔记指导您完成采样序列、计算条件对数似然以及提取编码器输出作为结构表示的示例。
为了帮助您开始使用嵌入,此 jupyter Notebook 教程展示了如何使用 ESM-1 中的嵌入来训练监督变量预测器。您可以采用类似的协议来为任何下游任务训练模型,即使数据有限。首先,您可以通过按照笔记本中的说明下载预先计算的嵌入或运行以下命令来获取examples/data/P62593.fasta
的嵌入:
# 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
然后,按照教程中的其余说明进行操作。您还可以在 Colab 笔记本中运行本教程。
请注意,或者使用较新的指令进行零样本变异预测,该指令无需任何监督训练即可预测突变效应。
此 jupyter Notebook 教程演示了使用 ESM-2 和 MSA Transformer (ESM-MSA-1) 模型进行接触预测。接触预测基于模型注意力图的逻辑回归。该方法基于我们的 ICLR 2021 论文 Transformer 蛋白质语言模型是无监督结构学习器。 (Rao et al. 2020) MSA Transformer (ESM-MSA-1) 采用多序列比对 (MSA) 作为输入,并以相同的方式使用捆绑行自注意力图。请参阅 MSA 变压器。 (Rao 等人,2021)。
要获得无监督的基于注意力的联系人,请调用model.predict_contacts(tokens)
或model(tokens, return_contacts=True)
。
此 jupyter Notebook 教程展示了如何加载和索引ESMStructuralSplitDataset
,并使用 ESM-2 计算自注意力图无监督接触预测。
速记 | esm.pretrained. | #层数 | #参数 | 数据集 | 嵌入暗淡 | 模型 URL(自动下载到~/.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 | |
ESM折叠 | 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(+各种) | 各种各样的 | UR50/D 2021_04 | - | https://dl.fbaipublicfiles.com/fair-esm/models/esmfold_struct_module_only_* | |
ESM-IF1 | esm_if1_gvp4_t16_142M_UR50 | 20 | 124M | CATH 4.3 + UR50 的预测结构 | 第512章 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_if1_gvp4_t16_142M_UR50.pt |
ESM-1v | esm1v_t33_650M_UR90S_[1-5] | 33 | 650M | UR90/S 2020_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1v_t33_650M_UR90S_1.pt |
ESM-MSA-1b | esm_msa1b_t12_100M_UR50S | 12 | 100M | UR50/S + MSA 2018_03 | 第768章 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1b_t12_100M_UR50S.pt |
ESM-MSA-1 | esm_msa1_t12_100M_UR50S | 12 | 100M | UR50/S + MSA 2018_03 | 第768章 | https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1_t12_100M_UR50S.pt |
ESM-1b | esm1b_t33_650M_UR50S | 33 | 650M | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1b_t33_650M_UR50S.pt |
ESM-1 | esm1_t34_670M_UR50S | 34 | 670M | UR50/S 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50S.pt |
esm1_t34_670M_UR50D | 34 | 670M | UR50/D 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR50D.pt | |
esm1_t34_670M_UR100 | 34 | 670M | UR100 2018_03 | 1280 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t34_670M_UR100.pt | |
esm1_t12_85M_UR50S | 12 | 85M | UR50/S 2018_03 | 第768章 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t12_85M_UR50S.pt | |
esm1_t6_43M_UR50S | 6 | 43M | UR50/S 2018_03 | 第768章 | https://dl.fbaipublicfiles.com/fair-esm/models/esm1_t6_43M_UR50S.pt |
以下是已发布模型的时间顺序列表以及介绍它们的论文:
速记 | 发行说明 |
---|---|
ESM-1 | 与 Rives 等人一起发布。 2019 年(2020 年 8 月更新)。 |
ESM-1b | 与 Rives 等人一起发布。 2019 年(2020 年 12 月更新)。参见附录 B。 |
ESM-MSA-1 | 与 Rao 等人一起发布。 2021(预印本 v1)。 |
ESM-MSA-1b | 与 Rao 等人一起发布。 2021 年(ICML'21 版本,2021 年 6 月)。 |
ESM-1v | 与 Meier 等人一起发布。 2021 年。 |
ESM-IF1 | 与 Hsu 等人一起发布。 2022 年。 |
ESM-2 | 与 Lin 等人一起发布。 2022 年。 |
这是蛋白质结构域结构的五重交叉验证数据集,可用于测量不同结构差异水平上表示的泛化。该数据集在族、超族和折叠级别实现了结构保留。 SCOPe 数据库用于对域进行分类。对于结构保留的每个级别,域被独立地分成5个相等的组,即5组折叠、超族或族。这确保对于五个分区中的每一个,具有相同分类的结构不会同时出现在训练集和测试集中。对于给定的分类级别,每个结构在测试集中出现一次,因此在交叉验证实验中,每个结构将被精确评估一次。
该数据集提供 3D 坐标、距离图和二级结构标签。有关数据集构建的更多详细信息,请参阅 Rives 等人。 2019 年附录 A.10。
此 jupyter Notebook 教程展示了如何加载和索引ESMStructuralSplitDataset
。
ESMStructuralSplitDataset
在初始化时将下载splits
和pkl
。我们还为每个域提供msas
。数据可以直接在下面下载。
姓名 | 描述 | 网址 |
---|---|---|
分裂 | 训练/有效分割 | https://dl.fbaipublicfiles.com/fair-esm/structural-data/splits.tar.gz |
PKL | 包含序列、SSP 标签、距离图和 3d 坐标的 pkl 对象 | https://dl.fbaipublicfiles.com/fair-esm/structural-data/pkl.tar.gz |
管理服务 | 包含每个域的 MSA 的 a3m 文件 | https://dl.fbaipublicfiles.com/fair-esm/structural-data/msas.tar.gz |
建立 UniRef50 集群的分割文件被用作 Rives 等人的预训练的保留评估集。 2019 年和 Rao 等人。 2021 年可以在这里找到:
这些文件仅包含与 UniRef 数据库 2018-03 版本相对应的 UniRef50 ID 和 UniRef100 ID,该数据库由 UniProt 联盟根据知识共享署名 (CC BY 4.0) 许可发布。
任务 | 无监督接触预测 | 结构预测 | |||
---|---|---|---|---|---|
测试集 | 大有效 | CASP14 | 客串(2022 年 4 月至 6 月) | CASP14 | 客串(2022 年 4 月至 6 月) |
小魔怪(波茨) | 39.3 | ||||
磁带 | 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 |
与相关蛋白质语言模型在结构预测任务上的比较。
如果您发现这些模型对您的研究有用,我们要求您引用相关论文:
@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 }
}
对于自注意力接触预测:
@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 }
}
对于 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 }
}
对于使用 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 }
}
对于使用 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 }
}
对于 ESM-2 语言模型和 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 }
}
大部分代码都构建在 fairseq 序列建模框架上。我们在内部使用 fairseq 进行蛋白质语言建模研究。如果您想从头开始预训练蛋白质语言模型,我们强烈建议您尝试一下。
此外,如果您想使用 Meier 等人的变异预测基准。 (2021),我们提供了一个 bibtex 文件,其中包含 ./examples/variant-prediction/mutation_data.bib 中所有数据的引用。您可以单独引用每篇论文,或使用 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 }
此源代码根据 MIT 许可证获得许可,该许可证位于此源树根目录的LICENSE
文件中。
ESM 宏基因组图谱(也称为“ESM 宏基因组结构图谱”或“ESM 图谱”)数据可在 CC BY 4.0 许可下用于学术和商业用途。版权所有 (c) Meta Platforms, Inc. 保留所有权利。 ESM 宏基因组图谱数据的使用须遵守元开源使用条款和隐私政策。